Kubernetes配置热更新的两种方式

背景

任何应用都需要一些特定的配置项,用来自定义应用的特性。这些配置通常可以分为两类:

  • 一类是诸如运行环境和外部依赖等非敏感配置
  • 一类是诸如密钥和 SSH 证书等敏感配置。

这些配置不应该直接放到容器镜像中,而是应该配配置与容器分离,通过数据卷、环境变量等方式在运行时动态挂载。

在我们使用kubernetes的过程中,通常都会将应用的配置文件放到ConfigMap或/和Secret中,但是也经常碰到配置文件更新后如何让其生效的问题。

用户定义Kubernetes的资源对象(例如Deployment、Daemonset 等),配置文件以configmap定义,通过Volumemounts进行挂载到Pod里,配置文件修改以后,服务可以自动reload加载更新配置。

解决方案

2.1Reloader

  • 限制条件:Kubernetes版本在1.9以及以上
  • 集群安装reloader
  • 通过添加注解annotation的方式实现
kubectl apply -f https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml

2.1.1全局 configmap 触发更新

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat
  namespace: log 
  labels:
    k8s-app: filebeat
  annotations:
    reloader.stakater.com/auto: "true"

2.1.2 按照指定的 configmap 变更自动触发资源对象的配置更新

  • 单 ConfigMap 更新
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat
  namespace: log 
  labels:
    k8s-app: filebeat
  annotations:
    configmap.reloader.stakater.com/reload: "filebeat-config"
  • 多 configmap,以逗号对多个 configmap 进行隔离
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat
  namespace: log 
  labels:
    k8s-app: filebeat
  annotations:
    configmap.reloader.stakater.com/reload: "filebeat-config,foo-config"

2.2 checksum 注解

checksum 注解是 Helm Charts 中最常用的滚动更新方法,即在 Deployment 的 annotations 中加上 Secret 或者 ConfigMap 的 sha256sum,这样已有的 Pod 就会随着 Secret 或者 ConfigMap 的变更而更新。

kind: Deployment
spec:
  template:
    metadata:
      annotations:
        checksum/config: {
  { include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
[...]

添加这一节的效果就是,在/configmap.yaml中有任何内容改变,都会导致Deployment的sepc下的annotation被更新,进而驱动重建pod,达到我们想要的效果。

作者:Honest1y
链接:https://juejin.cn/post/6993128314055426084
来源:掘金

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 12:31
以前小时候我最痛恨出轨、偷情的人,无论男女,为什么会出轨?现在我成了自己最讨厌的人,没想到分享的东西在牛客会被这么多人看,大家的评价都很中肯,我也认同,想过一一回复,但我还是收声了,我想我应该说说这件事,这件事一直压在我心里,是个很大的心结,上面说了人为什么出轨,我大概能明白了。我们大一下半年开始恋爱,开始恋爱,我给出了我铭记3年的承诺,我对她好一辈子,我永远不会背叛,我责任心太重,我觉得跟了我,我就要照顾她一辈子,我们在一起3年我都没有碰过她,她说往东我就往东,她说什么我做什么,她要我干什么,我就干什么!在学校很美好,中途也出过一些小插曲,比如男闺蜜、男闺蜜2号等等等。但我都强迫她改掉了,我...
牛客刘北:两个缺爱的人是没有办法好好在一起的,但世界上哪有什么是非对错?你后悔你们在一起了,但是刚刚在一起的美好也是真的呀,因为其他人的出现,你开始想要了最开始的自己,你的确对不起自己,21岁的你望高物远,你完全可以不谈恋爱,去过你想要的生活,你向往自由,在一起之后,你要想的不是一个人,而是两个人,你不是变心了,就像你说的,你受够了,你不想包容了,冷静几天是你最优的选择,爱人先爱己。
社会教会你的第一课
点赞 评论 收藏
分享
积极的小学生不要香菜:你才沟通多少,没500不要说难
点赞 评论 收藏
分享
程序员小白条:太晚了,看别人找到实习了才投的话,自己本身就没啥准备,计划太晚咯,只能吞苦果子
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务