POD_LABELS = Map.of("app", "spring-cloud-kubernetes-client-config-it");
-
- private static final String BODY = """
- {
- "spec": {
- "template": {
- "spec": {
- "containers": [{
- "name": "spring-cloud-kubernetes-client-config-it-deployment",
- "image": "image_name_here",
- "env": [
- {
- "name": "SPRING_CLOUD_KUBERNETES_RELOAD_MODE",
- "value": "POLLING"
- }
- ]
- }]
- }
- }
- }
- }
- """;
-
- private static final String PROPERTY_URL = "http://localhost:80/myProperty";
-
- private static final String SECRET_URL = "http://localhost:80/mySecret";
-
- private static final String K8S_CONFIG_CLIENT_IT_SERVICE_NAME = "spring-cloud-kubernetes-client-config-it";
-
- private static final String NAMESPACE = "default";
-
- private static final String APP_NAME = "spring-cloud-kubernetes-client-config-it";
-
- private static final String DOCKER_IMAGE = "docker.io/springcloud/" + APP_NAME + ":" + Commons.pomVersion();
-
- private static final K3sContainer K3S = Commons.container();
-
- private static Util util;
-
- private static CoreV1Api coreV1Api;
-
- @BeforeAll
- static void setup() throws Exception {
- K3S.start();
- Commons.validateImage(K8S_CONFIG_CLIENT_IT_SERVICE_NAME, K3S);
- Commons.loadSpringCloudKubernetesImage(K8S_CONFIG_CLIENT_IT_SERVICE_NAME, K3S);
- util = new Util(K3S);
- coreV1Api = new CoreV1Api();
- util.setUp(NAMESPACE);
- }
-
- @AfterAll
- static void afterAll() throws Exception {
- configK8sClientIt(Phase.DELETE);
- Commons.cleanUp(K8S_CONFIG_CLIENT_IT_SERVICE_NAME, K3S);
- Commons.systemPrune();
- }
-
- @Test
- void testConfigMapAndSecretWatchRefresh() throws Exception {
- configK8sClientIt(Phase.CREATE);
- testConfigMapAndSecretRefresh();
-
- testConfigMapAndSecretPollingRefresh();
- }
-
- void testConfigMapAndSecretPollingRefresh() throws Exception {
- recreateConfigMapAndSecret();
- patchForPollingReload();
- testConfigMapAndSecretRefresh();
- }
-
- /**
- *
- * - read configmap/secrets the way we initially build them and assert their values
- * - replace the above and assert we get the new values.
- *
- */
- void testConfigMapAndSecretRefresh() throws Exception {
-
- WebClient.Builder builder = builder();
- WebClient propertyClient = builder.baseUrl(PROPERTY_URL).build();
-
- await().timeout(Duration.ofSeconds(120)).pollInterval(Duration.ofSeconds(2))
- .ignoreException(WebClientResponseException.BadGateway.class).until(() -> propertyClient
- .method(HttpMethod.GET).retrieve().bodyToMono(String.class).block().equals("from-config-map"));
-
- WebClient secretClient = builder.baseUrl(SECRET_URL).build();
- String secret = secretClient.method(HttpMethod.GET).retrieve().bodyToMono(String.class).retryWhen(retrySpec())
- .block();
- Assertions.assertEquals(secret, "p455w0rd");
-
- V1ConfigMap configMap = (V1ConfigMap) util.yaml("spring-cloud-kubernetes-client-config-it-configmap.yaml");
- Map data = configMap.getData();
- data.replace("application.yaml", data.get("application.yaml").replace("from-config-map", "from-unit-test"));
- configMap.data(data);
- coreV1Api.replaceNamespacedConfigMap(APP_NAME, NAMESPACE, configMap, null, null, null, null);
- await().timeout(Duration.ofSeconds(60)).pollInterval(Duration.ofSeconds(2))
- .ignoreException(WebClientResponseException.BadGateway.class).until(() -> propertyClient
- .method(HttpMethod.GET).retrieve().bodyToMono(String.class).block().equals("from-unit-test"));
- V1Secret v1Secret = (V1Secret) util.yaml("spring-cloud-kubernetes-client-config-it-secret.yaml");
- Map secretData = v1Secret.getData();
- secretData.replace("my.config.mySecret", "p455w1rd".getBytes());
- v1Secret.setData(secretData);
- coreV1Api.replaceNamespacedSecret(APP_NAME, NAMESPACE, v1Secret, null, null, null, null);
- await().timeout(Duration.ofSeconds(60)).pollInterval(Duration.ofSeconds(2))
- .ignoreException(WebClientResponseException.BadGateway.class).until(() -> secretClient
- .method(HttpMethod.GET).retrieve().bodyToMono(String.class).block().equals("p455w1rd"));
- }
-
- private void recreateConfigMapAndSecret() {
- try {
- coreV1Api.deleteNamespacedConfigMap("spring-cloud-kubernetes-client-config-it", NAMESPACE, null, null, null,
- null, null, null);
- coreV1Api.deleteNamespacedSecret("spring-cloud-kubernetes-client-config-it", NAMESPACE, null, null, null,
- null, null, null);
-
- V1ConfigMap configMap = (V1ConfigMap) util.yaml("spring-cloud-kubernetes-client-config-it-configmap.yaml");
- V1Secret secret = (V1Secret) util.yaml("spring-cloud-kubernetes-client-config-it-secret.yaml");
- util.createAndWait(NAMESPACE, configMap, secret);
- }
- catch (ApiException e) {
- throw new RuntimeException(e);
- }
- }
-
- private static void configK8sClientIt(Phase phase) {
-
- V1Deployment deployment = (V1Deployment) util.yaml("spring-cloud-kubernetes-client-config-it-deployment.yaml");
- V1Service service = (V1Service) util.yaml("spring-cloud-kubernetes-client-config-it-service.yaml");
- V1Ingress ingress = (V1Ingress) util.yaml("spring-cloud-kubernetes-client-config-it-ingress.yaml");
-
- V1ConfigMap configMap = (V1ConfigMap) util.yaml("spring-cloud-kubernetes-client-config-it-configmap.yaml");
- V1Secret secret = (V1Secret) util.yaml("spring-cloud-kubernetes-client-config-it-secret.yaml");
-
- if (phase.equals(Phase.CREATE)) {
- util.createAndWait(NAMESPACE, null, deployment, service, ingress, true);
- util.createAndWait(NAMESPACE, configMap, secret);
- }
- else if (phase.equals(Phase.DELETE)) {
- util.deleteAndWait(NAMESPACE, deployment, service, ingress);
- util.deleteAndWait(NAMESPACE, configMap, secret);
- }
- }
-
- private WebClient.Builder builder() {
- return WebClient.builder().clientConnector(new ReactorClientHttpConnector(HttpClient.create()));
- }
-
- private RetryBackoffSpec retrySpec() {
- return Retry.fixedDelay(15, Duration.ofSeconds(1)).filter(Objects::nonNull);
- }
-
- private static void patchForPollingReload() {
- patchWithReplace(ConfigMapAndSecretIT.DOCKER_IMAGE, ConfigMapAndSecretIT.APP_NAME + "-deployment",
- ConfigMapAndSecretIT.NAMESPACE, BODY, POD_LABELS);
- }
-
-}
diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/logback-test.xml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/logback-test.xml
deleted file mode 100644
index 9e284876..00000000
--- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
-
-
-
-
-
-
-
-
-
-
diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-configmap.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-configmap.yaml
deleted file mode 100644
index 6a4e128c..00000000
--- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-configmap.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-apiVersion: v1
-data:
- application.yaml: |-
- my:
- config:
- myProperty: from-config-map
-kind: ConfigMap
-metadata:
- name: spring-cloud-kubernetes-client-config-it
diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-deployment.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-deployment.yaml
deleted file mode 100644
index ebe12000..00000000
--- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-deployment.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: spring-cloud-kubernetes-client-config-it-deployment
-spec:
- selector:
- matchLabels:
- app: spring-cloud-kubernetes-client-config-it
- template:
- metadata:
- labels:
- app: spring-cloud-kubernetes-client-config-it
- spec:
- serviceAccountName: spring-cloud-kubernetes-serviceaccount
- containers:
- - name: spring-cloud-kubernetes-client-config-it
- image: docker.io/springcloud/spring-cloud-kubernetes-client-config-it
- imagePullPolicy: IfNotPresent
- readinessProbe:
- httpGet:
- port: 8080
- path: /actuator/health/readiness
- livenessProbe:
- httpGet:
- port: 8080
- path: /actuator/health/liveness
- env:
- - name: SPRING_PROFILES_ACTIVE
- value: kubernetes
- ports:
- - containerPort: 8080
diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-ingress.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-ingress.yaml
deleted file mode 100644
index 083811f4..00000000
--- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-ingress.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: networking.k8s.io/v1
-kind: Ingress
-metadata:
- name: it-ingress
- namespace: default
-spec:
- rules:
- - http:
- paths:
- - path: /
- pathType: Prefix
- backend:
- service:
- name: spring-cloud-kubernetes-client-config-it
- port:
- number: 8080
diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-secret.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-secret.yaml
deleted file mode 100644
index 9b68d973..00000000
--- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-secret.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-apiVersion: v1
-data:
- my.config.mySecret: cDQ1NXcwcmQ=
-kind: Secret
-metadata:
- name: spring-cloud-kubernetes-client-config-it
-type: Opaque
diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-service.yaml b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-service.yaml
deleted file mode 100644
index 10aaed50..00000000
--- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-client-config-it/src/test/resources/spring-cloud-kubernetes-client-config-it-service.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- labels:
- app: spring-cloud-kubernetes-client-config-it
- name: spring-cloud-kubernetes-client-config-it
-spec:
- ports:
- - name: http
- port: 8080
- targetPort: 8080
- selector:
- app: spring-cloud-kubernetes-client-config-it
- type: ClusterIP