在OpenShift上动态更新Spring Boot应用的配置
前言
在从零开始在OpenShift上开发和部署Spring Boot应用 中描述了通过设置DeploymentConfig的环境变量来在运行应用时注入profile
和数据库配置。
本文描述了在OpenShfit上通过ConfigMap和Spring Cloud Kubernetes Config来动态更新Spring Boot应用的配置,从而可以不用重新构建和部署应用(分离程序和配置,或外部化配置),就可以在应用不停机的情况更新应用的配置。
这种场景可以用来实时更新数据库连接池配置、关闭启动特性开关和调节应用参数等。
在不是基于PaaS平台部署的Spring Boot应用一般都使用专门的分布式配置中心,比如Spring Cloud Config Server, Consul, 携程Apollo或阿里Nacos等。
代码示例:https://github.com/cookcodeblog/spring-db-demo
Spring Boot应用改造
版本:
- Spring Boot 2.2.6.RELEASE
- Spring Cloud Hxton.SR4
引入Spring Cloud Kubernetes Config依赖
参见:
在Maven的pom文件中引入spring-cloud-dependencies
的dependency management:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
再引入spring-cloud-starter-kubernetes-config
依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>