diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/FixedPortsK3sContainer.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/FixedPortsK3sContainer.java index 05c275dbaa..aa877a7fc3 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/FixedPortsK3sContainer.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/FixedPortsK3sContainer.java @@ -48,7 +48,7 @@ final class FixedPortsK3sContainer extends K3sContainer { * Command to use when starting rancher. Without "server" option, traefik is not * installed */ - private static final String RANCHER_COMMAND = "server"; + private static final String RANCHER_COMMAND = "server --disable=metric-server"; static final K3sContainer CONTAINER = new FixedPortsK3sContainer(DockerImageName.parse(RANCHER_VERSION)) .configureFixedPorts() diff --git a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/fabric8_client/Util.java b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/fabric8_client/Util.java index 8d98a078e0..11f0fedc8b 100644 --- a/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/fabric8_client/Util.java +++ b/spring-cloud-kubernetes-test-support/src/main/java/org/springframework/cloud/kubernetes/integration/tests/commons/fabric8_client/Util.java @@ -24,6 +24,7 @@ import java.util.Set; import java.util.concurrent.TimeUnit; +import io.fabric8.kubernetes.api.model.APIService; import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.NamespaceBuilder; import io.fabric8.kubernetes.api.model.Pod; @@ -210,6 +211,21 @@ public void createNamespace(String name) { public void deleteNamespace(String name) { try { + + // sometimes we get errors like : + + // "message": "Discovery failed for some groups, + // 1 failing: unable to retrieve the complete list of server APIs: + // metrics.k8s.io/v1beta1: stale GroupVersion discovery: metrics.k8s.io/v1beta1" + + // but even when it works OK, the finalizers are slowing down the deletion + List apiServices = client.apiServices().list().getItems(); + apiServices.stream() + .map(apiService -> apiService.getMetadata().getName()) + .filter(apiServiceName -> apiServiceName.contains("metrics.k8s.io")) + .findFirst() + .ifPresent(apiServiceName -> client.apiServices().withName(apiServiceName).delete()); + client.namespaces() .resource(new NamespaceBuilder().withNewMetadata().withName(name).and().build()) .delete();