聊聊springcloud如何与k8s configMap整合实现配置动态刷新
发布网友
发布时间:2024-10-22 03:19
我来回答
共1个回答
热心网友
时间:2024-10-24 04:20
配置中心在微服务场景中是标配,常见的配置中心如Nacos、Apollo、Zookeeper、Springcloud config、Consul、Etcd、Redis、Disconf、Diamond、xxl-conf等。若部署环境已使用Kubernetes,且对配置中心的额外功能需求不多,仅需统一配置和实现热更新,Kubernetes的ConfigMap是一个不错的选择。
ConfigMap是一种API对象,用于存储非机密性数据,以键值对形式呈现。Pods可将其用作环境变量、命令行参数或存储卷中的配置文件,实现镜像与配置文件的解耦,提高镜像的可移植性和可复用性。更多信息可参考kubernetes.io/zh-cn/doc/。
Kubernetes的ConfigMap具备自动热更新功能,主要体现在以Volume方式挂载的ConfigMap数据。一般更新时间约为10秒。然而,以环境变量或使用ConfigMap的subPath挂载为容器Volume时,Kubernetes不会自动热更新。
热更新验证可通过官方示例完成。在了解ConfigMap基本概念后,本文将介绍Springcloud如何与ConfigMap整合实现动态刷新。
首先,确保Springcloud版本为Hoxton.SR3。项目中需引入相关GAV依赖。创建bootstrap.yml或application.yml文件,配置关键属性:spring.cloud.kubernetes.config.name、spring.cloud.kubernetes.config.namespace、spring.cloud.kubernetes.reload.enabled、spring.cloud.kubernetes.reload.strategy和spring.cloud.kubernetes.reload.mode等。
测试阶段,访问控制器,修改ConfigMap内容。观察业务日志,确认配置更新生效。若遇到访问权限问题,需补全system:serviceaccount:lybgeek:default的拉取权限。
通过创建ClusterRole和将其与system:serviceaccount:lybgeek:default绑定,可解决权限问题。Springcloud与ConfigMap的整合依赖spring-cloud-kubernetes能力,更多信息参见docs.spring.io/spring-cloud。
注意,功能在Spring Cloud 2020.0版本后已被弃用,推荐使用Spring Cloud Kubernetes Configuration Watcher。若Kubernetes版本>= 1.9,Reloader作为配置热更新组件也是一个可行选项。对Reloader组件感兴趣的读者,可访问github.com/stakater/Reloader查看。
此外,其他配置热更新方案的详细信息可参考cctoctofx.netlify.app/p。