1. ConfigMap/Secret 以卷或环境变量挂载时,Spring Boot 如何感知变更实现配置热更新,两种挂载方式的热更新能力有何差异
ConfigMap/Secret 以卷或环境变量挂载时,Spring Boot 如何感知变更实现配置热更新,两种挂载方式的热更新能力有何差异?
- 卷挂载与环境变量挂载的机制
- 卷挂载的 kubelet 轮询更新与文件变化
- Spring Boot 的 @ConfigurationProperties 与 RefreshScope 热更新
以卷挂载时,kubelet 会定期同步 ConfigMap/Secret 到容器内的文件,文件内容变化后,Spring Boot 可通过 @ConfigurationProperties 配合 RefreshScope,或监听文件变化(如 Spring Cloud Config Monitor)实现配置热更新,无需重启容器。以环境变量挂载时,环境变量在容器启动时固定,进程运行期间无法感知外部变更,只能通过重启容器或整 Pod 重建生效。因此卷挂载支持热更新,环境变量挂载不具备热更新能力。
热更新能力差异源于"文件可被外部更新"与"环境变量启动即固定"的本质区别。卷挂载适合需要热更新的配置,环境变量适合启动时固定的配置。