一味宠爱|Springboot整合K8s读取ConfigMap刷新配置( 二 )

访问spring-cloud-kubernetes-configmap.localhost/pkslow , 可以正确读取配置 , ConfigMap和Secret的内容都获取到了:
一味宠爱|Springboot整合K8s读取ConfigMap刷新配置3 自动刷新配置3.1 原理介绍与代码变更我们需要在Web运行过程中修改配置并使配置生效 , 有多种模式 。 修改配置文件如下:
server:port: 8080spring:application:name: spring-cloud-kubernetes-configmapcloud:kubernetes:config:name: spring-cloud-kubernetes-configmapnamespace: defaultsecrets:name: spring-cloud-kubernetes-secretnamespace: defaultenabled: truereload:enabled: truemonitoring-config-maps: truemonitoring-secrets: truestrategy: restart_contextmode: eventmanagement:endpoint:restart:enabled: trueendpoints:web:exposure:include: restart(1) spring.cloud.kubernetes.reload.enabled=true需要打开刷新功能;
(2) 加载策略strategy:

  • refresh:只对特定的配置生效 , 有注解@ConfigurationProperties 或 @RefreshScope 。
  • restart_context:整个Spring Context会优雅重启 , 里面的所有配置都会重新加载 。
【一味宠爱|Springboot整合K8s读取ConfigMap刷新配置】需要打开actuator endpoint , 所以要配置management.endpoint 。 还要增加依赖:
org.springframework.bootspring-boot-actuatororg.springframework.bootspring-boot-actuator-autoconfigure
  • 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都修改了:
一味宠爱|Springboot整合K8s读取ConfigMap刷新配置我们查看一下Pod的日志如下:
一味宠爱|Springboot整合K8s读取ConfigMap刷新配置Springboot先是检测到了ConfigMap有了变更 , 然后触发Context重启 。
4 总结Spring Cloud Kubernetes为我们提供了不少Spring Cloud整合Kubernetes的特性 , 可以引入使用 。
多读书 , 多分享;多写作 , 多整理 。


推荐阅读