|
对于最新稳定版本,请使用Spring Cloud Kubernetes 5.0.0! |
地产来源重新加载
| 该功能在2020.0版本中已被弃用。请参见 Spring Cloud 的 Kubernetes Configuration Watcher 控制器,作为实现相同功能的替代方式。 |
某些应用程序可能需要检测外部属性源的变化,并更新其内部状态以反映新的配置。
Spring Cloud Kubernetes 的重载功能能够在相关情况下触发应用重新加载配置地图或秘密变化。
默认情况下,此功能是被禁用的。你可以通过使用spring.cloud.kubernetes.reload.enabled=true配置性质(例如,在application.properties文件)。
请注意,这只会启用对配置文件地图的监控(例如:Spring.cloud.kubernetes.reload.monitoring-config-maps将设置为true).
如果你想启用秘密监控,必须通过以下方式明确实现:Spring.cloud.kubernetes.reload.monitoring-secrets=true.
支持以下装填等级(通过设置spring.cloud.kubernetes.reload.strategy财产):
-
刷新(默认):仅注释为@ConfigurationProperties或@RefreshScope重新装填。 这个重载等级利用了 Spring Cloud Context 的刷新功能。 -
restart_context:整个Spring应用上下文优雅地重启。豆子则用新的配置重新制作。 为了让重启上下文功能正常工作,你必须启用并暴露重启执行器端点
management:
endpoint:
restart:
enabled: true
endpoints:
web:
exposure:
include: restart
-
关闭:Spring应用上下文被关闭以激活容器的重启。 使用该级别时,确保所有非守护进程线程的生命周期都绑定在应用上下文并且需要配置复制控制器或副本集来重启Pod。
假设默认设置下重新装填功能已启用(刷新模式),当配置映射变更时,以下豆子会被刷新:
@Configuration
@ConfigurationProperties(prefix = "bean")
public class MyConfig {
private String message = "a message that can be changed live";
// getter and setters
}
为了确保更改有效发生,你可以创建另一个豆子,定期打印消息,具体如下
@Component
public class MyBean {
@Autowired
private MyConfig config;
@Scheduled(fixedDelay = 5000)
public void hello() {
System.out.println("The message is: " + config.getMessage());
}
}
您可以通过以下方式更改应用程序打印的消息配置地图如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: reload-example
data:
application.properties: |-
bean.message=Hello World!
对所命名财产的任何变更豆子消息在配置地图与舱体相关的关系体现在
输出。更一般地说,关于以定义值前缀的属性相关的变更前缀场@ConfigurationProperties注释会被检测并在应用中反映出来。关联配置地图带着一个舱在本章前面有详细说明。
装填功能支持两种作模式:
-
事件(默认):通过使用 Kubernetes API(网页套接字)监控配置映射或秘密的变化。 任何事件都会对配置进行重新检查,若发生变化则重新加载。 这
视图服务账户中需要角色来监听配置映射的更改。更高级别的角色(例如编辑) 是秘密所需的 (默认情况下,秘密不被监控。) -
轮询:定期从配置映射和秘密中重新创建配置,看看是否发生了变化。 您可以通过以下方式配置轮询周期
spring.cloud.kubernetes.reload.period属性,默认为15秒。 它需要与被监控的属性源相同的角色。 这意味着,例如,对文件挂载的秘密源使用轮询不需要特定的权限。