Merge branch 'include-not-ready-addresses-opt-in' of https://github.com/srgibbs99/spring-cloud-kubernetes into srgibbs99-include-not-ready-addresses-opt-in
This commit is contained in:
@@ -64,6 +64,16 @@ spring.cloud.kubernetes.discovery.all-namespaces=true
|
||||
----
|
||||
====
|
||||
|
||||
To discover service endpoint addresses that are not marked as "ready" by the kubernetes api server, you can set the following property in `application.properties` (default: false):
|
||||
|
||||
====
|
||||
[source]
|
||||
----
|
||||
spring.cloud.kubernetes.discovery.include-not-ready-addresses=true
|
||||
----
|
||||
NOTE: This might be useful when discovering services for monitoring purposes, and would enable inspecting the `/health` endpoint of not-ready service instances.
|
||||
====
|
||||
|
||||
If, for any reason, you need to disable the `DiscoveryClient`, you can set the following property in `application.properties`:
|
||||
|
||||
====
|
||||
|
||||
@@ -51,6 +51,12 @@ public class KubernetesDiscoveryProperties {
|
||||
**/
|
||||
private long cacheLoadingTimeoutSeconds = 60;
|
||||
|
||||
/**
|
||||
* If endpoint addresses not marked 'ready' by the k8s api server should be
|
||||
* discovered.
|
||||
*/
|
||||
private boolean includeNotReadyAddresses = false;
|
||||
|
||||
/**
|
||||
* SpEL expression to filter services AFTER they have been retrieved from the
|
||||
* Kubernetes API server.
|
||||
@@ -145,6 +151,14 @@ public class KubernetesDiscoveryProperties {
|
||||
this.allNamespaces = allNamespaces;
|
||||
}
|
||||
|
||||
public boolean isIncludeNotReadyAddresses() {
|
||||
return includeNotReadyAddresses;
|
||||
}
|
||||
|
||||
public void setIncludeNotReadyAddresses(boolean includeNotReadyAddresses) {
|
||||
this.includeNotReadyAddresses = includeNotReadyAddresses;
|
||||
}
|
||||
|
||||
public int getOrder() {
|
||||
return this.order;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||
import org.springframework.expression.spel.support.SimpleEvaluationContext;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import static java.util.stream.Collectors.toMap;
|
||||
@@ -152,6 +153,15 @@ public class KubernetesDiscoveryClient implements DiscoveryClient {
|
||||
}
|
||||
|
||||
List<EndpointAddress> addresses = s.getAddresses();
|
||||
|
||||
if (this.properties.isIncludeNotReadyAddresses()
|
||||
&& !CollectionUtils.isEmpty(s.getNotReadyAddresses())) {
|
||||
if (addresses == null) {
|
||||
addresses = new ArrayList<EndpointAddress>();
|
||||
}
|
||||
addresses.addAll(s.getNotReadyAddresses());
|
||||
}
|
||||
|
||||
for (EndpointAddress endpointAddress : addresses) {
|
||||
String instanceId = null;
|
||||
if (endpointAddress.getTargetRef() != null) {
|
||||
|
||||
Reference in New Issue
Block a user