Spring Cloud Ribbon在Kubernetes中发现
Spring Cloud调用微服务的客户端应用程序应该对依靠客户端负载平衡功能感兴趣,以便自动发现它可以在哪个端点到达给定服务。该机制已在
spring-cloud-kubernetes-ribbon
项目中实现,其中Kubernetes客户端填充Ribbon ServerList
,其中包含有关此类端点的信息。
该实现是以下启动器的一部分,可以通过将其依赖项添加到pom文件中来使用该实现:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId> <version>${latest.version}</version> </dependency>
填充端点列表后,Kubernetes客户端通过匹配Ribbon Client批注中定义的服务名称来搜索位于当前名称空间或项目中的已注册端点,如下所示:
@RibbonClient(name = "name-service")
您可以使用以下格式,在application.properties
中(通过应用程序专用的ConfigMap
)提供属性,以配置Ribbon的行为:<name of your service>.ribbon.<Ribbon configuration key>
,其中:
<name of your service>
对应于您在Ribbon上访问的服务名称,该名称是使用@RibbonClient
批注配置的(例如上例中的name-service
)。<Ribbon configuration key>
是 Ribbon的CommonClientConfigKey
类 定义的Ribbon配置键之一 。
此外,spring-cloud-kubernetes-ribbon
项目定义了两个附加的配置键,以进一步控制Ribbon与Kubernetes的交互方式。特别是,如果端点定义了多个端口,则默认行为是使用找到的第一个端口。要更具体地选择在多端口服务中使用哪个端口,可以使用【7 /】键。
如果您想指定应在哪个Kubernetes命名空间中查找目标服务,则可以使用KubernetesNamespace
键,在这两个实例中都记住要为这些键加上您的服务名和ribbon
前缀(如前所述)。
以下示例使用此模块进行功能区发现:
您可以通过在应用程序属性文件中设置spring.cloud.kubernetes.ribbon.enabled=false
键来禁用Ribbon发现客户端。
更多建议: