diff --git a/spring-cloud-kubernetes-config/pom.xml b/spring-cloud-kubernetes-config/pom.xml
index 90c71eb5..dd86304a 100644
--- a/spring-cloud-kubernetes-config/pom.xml
+++ b/spring-cloud-kubernetes-config/pom.xml
@@ -164,6 +164,11 @@
rest-assured
test
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+ test
+
org.springframework.boot
diff --git a/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/HealthIndicatorTest.java b/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/HealthIndicatorTest.java
new file mode 100644
index 00000000..f7ef025f
--- /dev/null
+++ b/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/HealthIndicatorTest.java
@@ -0,0 +1,59 @@
+package org.springframework.cloud.kubernetes.config;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.core.StringContains.containsString;
+
+import io.fabric8.kubernetes.client.Config;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.server.mock.KubernetesServer;
+import io.restassured.RestAssured;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.kubernetes.config.example.App;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class,
+ properties = {
+ "management.endpoint.health.show-details=always"
+ })
+public class HealthIndicatorTest {
+
+ @ClassRule
+ public static KubernetesServer server = new KubernetesServer();
+
+ private static KubernetesClient mockClient;
+
+ @Value("${local.server.port}")
+ private int port;
+
+
+ @BeforeClass
+ public static void setUpBeforeClass() {
+ mockClient = server.getClient();
+
+ //Configure the kubernetes master url to point to the mock server
+ System.setProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, mockClient.getConfiguration().getMasterUrl());
+ System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true");
+ System.setProperty(Config.KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY, "false");
+ System.setProperty(Config.KUBERNETES_AUTH_TRYSERVICEACCOUNT_SYSTEM_PROPERTY, "false");
+ System.setProperty(Config.KUBERNETES_NAMESPACE_SYSTEM_PROPERTY, "test");
+ }
+
+ @Test
+ public void healthEndpointShouldContainKubernetes() {
+ RestAssured.baseURI = String.format("http://localhost:%d/actuator/health", port);
+ given()
+ .contentType("application/json")
+ .get()
+ .then()
+ .statusCode(200)
+ .body(containsString("kubernetes"));
+ }
+
+
+}
diff --git a/spring-cloud-kubernetes-core/pom.xml b/spring-cloud-kubernetes-core/pom.xml
index 10e956f3..94a70683 100644
--- a/spring-cloud-kubernetes-core/pom.xml
+++ b/spring-cloud-kubernetes-core/pom.xml
@@ -108,12 +108,24 @@
spock-spring
test
+
+ io.rest-assured
+ rest-assured
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+ test
+
org.springframework.boot
spring-boot-configuration-processor
true
+
+
diff --git a/spring-cloud-kubernetes-core/src/main/java/org/springframework/cloud/kubernetes/KubernetesAutoConfiguration.java b/spring-cloud-kubernetes-core/src/main/java/org/springframework/cloud/kubernetes/KubernetesAutoConfiguration.java
index 1d53be57..0d904ee4 100644
--- a/spring-cloud-kubernetes-core/src/main/java/org/springframework/cloud/kubernetes/KubernetesAutoConfiguration.java
+++ b/spring-cloud-kubernetes-core/src/main/java/org/springframework/cloud/kubernetes/KubernetesAutoConfiguration.java
@@ -112,7 +112,6 @@ public class KubernetesAutoConfiguration {
@ConditionalOnClass(HealthIndicator.class)
protected static class KubernetesActuatorConfiguration {
@Bean
- @ConditionalOnMissingBean
public KubernetesHealthIndicator kubernetesHealthIndicator(PodUtils podUtils) {
return new KubernetesHealthIndicator(podUtils);
}
diff --git a/spring-cloud-kubernetes-core/src/test/java/org/springframework/cloud/kubernetes/HealthIndicatorTest.java b/spring-cloud-kubernetes-core/src/test/java/org/springframework/cloud/kubernetes/HealthIndicatorTest.java
new file mode 100644
index 00000000..f320f420
--- /dev/null
+++ b/spring-cloud-kubernetes-core/src/test/java/org/springframework/cloud/kubernetes/HealthIndicatorTest.java
@@ -0,0 +1,59 @@
+package org.springframework.cloud.kubernetes;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.core.StringContains.containsString;
+
+import io.fabric8.kubernetes.client.Config;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.server.mock.KubernetesServer;
+import io.restassured.RestAssured;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.kubernetes.example.App;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class,
+ properties = {
+ "management.endpoint.health.show-details=always"
+ })
+public class HealthIndicatorTest {
+
+ @ClassRule
+ public static KubernetesServer server = new KubernetesServer();
+
+ private static KubernetesClient mockClient;
+
+ @Value("${local.server.port}")
+ private int port;
+
+
+ @BeforeClass
+ public static void setUpBeforeClass() {
+ mockClient = server.getClient();
+
+ //Configure the kubernetes master url to point to the mock server
+ System.setProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, mockClient.getConfiguration().getMasterUrl());
+ System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true");
+ System.setProperty(Config.KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY, "false");
+ System.setProperty(Config.KUBERNETES_AUTH_TRYSERVICEACCOUNT_SYSTEM_PROPERTY, "false");
+ System.setProperty(Config.KUBERNETES_NAMESPACE_SYSTEM_PROPERTY, "test");
+ }
+
+ @Test
+ public void healthEndpointShouldContainKubernetes() {
+ RestAssured.baseURI = String.format("http://localhost:%d/actuator/health", port);
+ given()
+ .contentType("application/json")
+ .get()
+ .then()
+ .statusCode(200)
+ .body(containsString("kubernetes"));
+ }
+
+
+}
diff --git a/spring-cloud-kubernetes-core/src/test/java/org/springframework/cloud/kubernetes/example/App.java b/spring-cloud-kubernetes-core/src/test/java/org/springframework/cloud/kubernetes/example/App.java
new file mode 100644
index 00000000..f741704e
--- /dev/null
+++ b/spring-cloud-kubernetes-core/src/test/java/org/springframework/cloud/kubernetes/example/App.java
@@ -0,0 +1,8 @@
+package org.springframework.cloud.kubernetes.example;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class App {
+
+}