This project provides an implementation of Discovery Client
for Kubernetes.
This allows you to query Kubernetes endpoints (see services) by name.
A service is typically exposed by the Kubernetes API server as a collection of endpoints which represent http
, https
addresses that a client can
access from a Spring Boot application running as a pod. This discovery feature is also used by the Spring Cloud Kubernetes Ribbon project
to fetch the list of the endpoints defined for an application to be load balanced.
This is something that you get for free just by adding the following dependency inside your project:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-kubernetes</artifactId> <version>${latest.version}</version> </dependency>
To enable loading of the DiscoveryClient
, add @EnableDiscoveryClient
to the according configuration or application class like this:
@SpringBootApplication @EnableDiscoveryClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Then you can inject the client in your code simply by:
@Autowired private DiscoveryClient discoveryClient;
If for any reason you need to disable the DiscoveryClient
you can simply set the following property in application.properties
:
spring.cloud.kubernetes.discovery.enabled=false
Some Spring Cloud components use the DiscoveryClient
in order to obtain info about the local service instance. For
this to work you need to align the Kubernetes service name with the spring.application.name
property.