Springboot整合Spring Cloud Kubernetes读取ConfigMap支持自动刷新配置的教程

时间:2021-05-20

1 前言

欢迎访问南瓜慢说 posite-configmap', propertySources=[ConfigMapPropertySource {name='configmap.spring-cloud-kubernetes-configmap.default'}]}

访问spring-cloud-kubernetes-configmap.localhost/pkslow,可以正确读取配置,ConfigMap和Secret的内容都获取到了:

3 自动刷新配置

3.1 原理介绍与代码变更

我们需要在Web运行过程中修改配置并使配置生效,有多种模式。修改配置文件如下:

server: port: 8080spring: application: name: spring-cloud-kubernetes-configmap cloud: kubernetes: config: name: spring-cloud-kubernetes-configmap namespace: default secrets: name: spring-cloud-kubernetes-secret namespace: default enabled: true reload: enabled: true monitoring-config-maps: true monitoring-secrets: true strategy: restart_context mode: eventmanagement: endpoint: restart: enabled: true endpoints: web: exposure: include: restart

(1) spring.cloud.kubernetes.reload.enabled=true需要打开刷新功能;

(2) 加载策略strategy:

  • refresh:只对特定的配置生效,有注解@ConfigurationProperties 或 @RefreshScope。
  • restart_context:整个Spring Context会优雅重启,里面的所有配置都会重新加载。

需要打开actuator endpoint,所以要配置management.endpoint。还要增加依赖:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator-autoconfigure</artifactId></dependency>

shutdown:重启容器。

(3)模式mode

  • 事件Event:会通过k8s API监控ConfigMap的变更,读取配置并生效。
  • Polling:定期查看是否有变化,有变化则触发,默认为15秒。

3.2 测试

我们修改一下ConfigMap的配置,并更新到K8s。

$ kubectl apply -f src/main/k8s/config.yaml configmap/spring-cloud-kubernetes-configmap configured

查看发现age和email都修改了:

我们查看一下Pod的日志如下:

Springboot先是检测到了ConfigMap有了变更,然后触发Context重启。

4 总结

Spring Cloud Kubernetes为我们提供了不少Spring Cloud整合Kubernetes的特性,可以引入使用。

到此这篇关于Springboot整合Spring Cloud Kubernetes读取ConfigMap支持自动刷新配置的文章就介绍到这了,更多相关Springboot整合Spring Cloud Kubernetes内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章