kubernetes - 如何在不杀死部署的情况下刷新 Worker Secret?
问题描述
我想学习如何在不杀死和重新创建部署的情况下更新工作 pod 中的秘密。
目前,Pod 将秘密作为 env vars 拉入:
env:
- name: SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
key: secret_access_key
name: secrets
但这仅在它们启动时发生。
因此,如果需要更改秘密,我必须:
- 更改密码
secrets.yaml
kubectl apply -f secrets.yaml
kubectl delete -f worker-deployment.yaml
kubectl apply -f worker-deployment.yaml
我真的不喜欢第 3 步和第 4 步,因为它们会终止正在进行的工作。
更新 env var 机密的更好工作流程是什么?
解决方案
没有办法对 pod 的环境变量进行“热重载”。
不过,您无需再次删除并重新创建部署即可应用新的密钥值。您只需要重新创建底层 pod。一些选项是:
kubectl delete pods
重新创建它们- 编辑一些部署微不足道的值以触发滚动更新(例如,将
terminationGracePeriodSeconds
from更改30
为31
)。 - 用于
kubectl rollout restart
对部署进行滚动重启†</li>
†rollout restart
仅适用于 kubernetes v1.15+
推荐阅读
- c# - 使用带有多个列表的 json.net 反序列化 json 对象
- c# - 如何在类方法中修改调用对象 - C#
- python - Python:当网格尺寸很大时,递归计算行走网格产量误差
- json - 在 Google Apps 脚本中遇到 Twitter API 授权问题
- git - Git checkout 失败,因为本地更改......没有本地更改?
- java - 在android中启动应用程序时初始化SQL
- ibm-cloud - 如何连接后端和前端并在 IBM 云应用服务中使用 Discovery API?
- html - 缩小页面 CSS
- c# - 不包含 DataBind 的定义
- ms-access - 从多个表中查询辅助数据