首页 > 解决方案 > 如何在不杀死部署的情况下刷新 Worker Secret?

问题描述

我想学习如何在不杀死和重新创建部署的情况下更新工作 pod 中的秘密。

目前,Pod 将秘密作为 env vars 拉入:

        env:
        - name: SECRET_ACCESS_KEY
          valueFrom:
            secretKeyRef:
              key: secret_access_key
              name: secrets

但这仅在它们启动时发生。

因此,如果需要更改秘密,我必须:

  1. 更改密码secrets.yaml
  2. kubectl apply -f secrets.yaml
  3. kubectl delete -f worker-deployment.yaml
  4. kubectl apply -f worker-deployment.yaml

我真的不喜欢第 3 步和第 4 步,因为它们会终止正在进行的工作。

更新 env var 机密的更好工作流程是什么?

标签: kuberneteskubectlkubernetes-secretsamazon-eks

解决方案


没有办法对 pod 的环境变量进行“热重载”。

不过,您无需再次删除并重新创建部署即可应用新的密钥值。您只需要重新创建底层 pod。一些选项是:

  • kubectl delete pods重新创建它们
  • 编辑一些部署微不足道的值以触发滚动更新(例如,terminationGracePeriodSecondsfrom更改3031)。
  • 用于kubectl rollout restart对部署进行滚动重启†</li>

rollout restart仅适用于 kubernetes v1.15+


推荐阅读