Kubernetes对注解进行更改以强制更新部署

问题描述

嘿,我有一个更广泛的问题,当我在kubernetes中更新机密时,除非在ugprades / rechedules或只是重新部署它们,否则它们不会在pod中实现;我看到了有关它的其他stackoverflow帖子,但是没有一个解决方案适合我Update kubernetes secrets doesn't update running container env vars

所以Pod上的python脚本的应用程序内解决方案可以自动更新其秘密https://medium.com/analytics-vidhya/updating-secrets-from-a-kubernetes-pod-f3c7df51770d,但似乎很遥远,我想出了在部署清单中添加注释的解决方案-希望它可以重新-每次掌舵图表将新的时间戳记添加到计划的pod中-确实放置了时间戳,但没有重新计划-任何想法如何强制这种行为?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: xxx
  namespace: xxx
  labels: xxx
  annotations:
    lastUpdate: {{ now }}

我也不希望将此补丁命令添加到ci / cd部署中,因为它具有任意性,而且-感觉不像是正确的解决方案

kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'

没有其他人找到更好的解决方案来针对已更改的机密重新部署Pod吗?

解决方法

更改秘密时,Kubernetes本身不会自动进行部署的滚动更新。因此,需要一个控制器来自动为您执行此操作。看一下Reloader,它是一个控制器,它监视ConfigMap和/或Secret中是否发生了某些更改;然后对相关的DeploymentConfig,Deployment,Daemonset和Statefulset进行滚动升级。

reloader.stakater.com/auto注释添加到名为xxx的部署中,并有一个名为xxx-configmap的ConfigMap或名为xxx-secret的Secret。

这将自动发现通过环境变量或通过卷挂载使用xxx-configmap或xxx-secret的部署/守护程序/状态集。并且xxx-configmapxxx-secret更新时,它将在相关的Pod上执行滚动升级

apiVersion: apps/v1
kind: Deployment
metadata:
  name: xxx
  namespace: xxx
  labels: xxx
  annotations:
    reloader.stakater.com/auto: "true"

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...