Skip to content

Commit f5135f4

Browse files
committed
Fix #32496: use proxyId in k8s service name
1 parent f8cb1f1 commit f5135f4

2 files changed

Lines changed: 13 additions & 8 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/backend/kubernetes/KubernetesBackend.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@
3434
import eu.openanalytics.containerproxy.model.runtime.ProxyStartupLog;
3535
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.BackendContainerNameKey;
3636
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.ContainerImageKey;
37+
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.ContainerIndexKey;
3738
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.InstanceIdKey;
3839
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.ProxiedAppKey;
40+
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.ProxyIdKey;
3941
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.RuntimeValue;
4042
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.RuntimeValueKey;
4143
import eu.openanalytics.containerproxy.model.runtime.runtimevalues.RuntimeValueKeyRegistry;
@@ -368,7 +370,7 @@ public Proxy startContainer(Authentication user, Container initialContainer, Con
368370
.withApiVersion(apiVersion)
369371
.withKind("Service")
370372
.withNewMetadata()
371-
.withName("sp-service-" + containerId)
373+
.withName(getServiceName(proxy, initialContainer))
372374
.withLabels(serviceLabels)
373375
.endMetadata()
374376
.withNewSpec()
@@ -637,7 +639,7 @@ protected void doStopProxy(Proxy proxy) {
637639

638640
if (!isUseInternalNetwork()) {
639641
// delete service when not using internal network
640-
Service service = kubeClient.services().inNamespace(podInfo.get().getFirst()).withName(getServiceName(container)).get();
642+
Service service = kubeClient.services().inNamespace(podInfo.get().getFirst()).withName(getServiceName(proxy, container)).get();
641643
if (service != null) {
642644
kubeClient.resource(service).withGracePeriod(0).delete();
643645
}
@@ -729,9 +731,12 @@ public List<ExistingContainerInfo> scanExistingContainers() {
729731
continue;
730732
}
731733

734+
String proxyId = runtimeValues.get(ProxyIdKey.inst).getObject();
735+
Integer containerIndex = runtimeValues.get(ContainerIndexKey.inst).getObject();
736+
732737
Map<Integer, Integer> portBindings = new HashMap<>();
733738
if (!isUseInternalNetwork()) {
734-
Service service = kubeClient.services().inNamespace(namespace).withName("sp-service-" + containerId).get();
739+
Service service = kubeClient.services().inNamespace(namespace).withName("sp-service-" + proxyId + "-" + containerIndex).get();
735740
if (service == null) {
736741
log.warn("Ignoring container {} because it has no associated service", containerId);
737742
continue;
@@ -783,8 +788,8 @@ private Optional<Pair<String, String>> getPodInfo(Container container) {
783788
return Optional.of(Pair.of(tmp[0], tmp[1]));
784789
}
785790

786-
private String getServiceName(Container container) {
787-
return "sp-service-" + container.getId();
791+
private String getServiceName(Proxy proxy, Container container) {
792+
return "sp-service-" + proxy.getId() + "-" + container.getIndex();
788793
}
789794

790795
private Optional<Pod> getPod(Container container) {

src/test/java/eu/openanalytics/containerproxy/test/proxy/TestIntegrationOnKube.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public void launchProxy() {
9898
Assertions.assertEquals(1, serviceList.getItems().size());
9999
Service service = serviceList.getItems().get(0);
100100
Assertions.assertEquals(k8s.namespace, service.getMetadata().getNamespace());
101-
Assertions.assertEquals("sp-service-" + containerId, service.getMetadata().getName());
101+
Assertions.assertEquals("sp-service-" + proxy.getId() + "-0", service.getMetadata().getName());
102102
Assertions.assertEquals(containerId, service.getSpec().getSelector().get("app"));
103103
Assertions.assertEquals(1, service.getSpec().getPorts().size());
104104
Assertions.assertEquals(Integer.valueOf(3838), service.getSpec().getPorts().get(0).getTargetPort().getIntVal());
@@ -332,7 +332,7 @@ public void launchProxyWithPodPatches() {
332332
Assertions.assertEquals(1, serviceList.getItems().size());
333333
Service service = serviceList.getItems().get(0);
334334
Assertions.assertEquals(k8s.overriddenNamespace, service.getMetadata().getNamespace());
335-
Assertions.assertEquals("sp-service-" + containerId, service.getMetadata().getName());
335+
Assertions.assertEquals("sp-service-" + proxy.getId() + "-0", service.getMetadata().getName());
336336
Assertions.assertEquals(containerId, service.getSpec().getSelector().get("app"));
337337
Assertions.assertEquals(1, service.getSpec().getPorts().size());
338338
Assertions.assertEquals(Integer.valueOf(3838), service.getSpec().getPorts().get(0).getTargetPort().getIntVal());
@@ -1107,7 +1107,7 @@ public void advancedRuntimeLabels() {
11071107
Assertions.assertEquals(1, serviceList.getItems().size());
11081108
Service service = serviceList.getItems().get(0);
11091109
Assertions.assertEquals(k8s.namespace, service.getMetadata().getNamespace());
1110-
Assertions.assertEquals("sp-service-" + containerId, service.getMetadata().getName());
1110+
Assertions.assertEquals("sp-service-" + proxy.getId() + "-0", service.getMetadata().getName());
11111111
Assertions.assertEquals(containerId, service.getSpec().getSelector().get("app"));
11121112
Assertions.assertEquals(1, service.getSpec().getPorts().size());
11131113
Assertions.assertEquals(Integer.valueOf(3838), service.getSpec().getPorts().get(0).getTargetPort().getIntVal());

0 commit comments

Comments
 (0)