kubernetes - 如何在不中断部署的情况下刷新工作人员的 secret ?

标签 kubernetes kubectl amazon-eks kubernetes-secrets eks

我想学习如何在不中断和重新创建部署的情况下更新工作组中的 secret 。

目前,pod通过以下方式将 secret 作为环境变量:

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

但这只会在他们启动时发生。

因此,如果需要更改 secret ,我必须:
  • 更改secrets.yaml的 secret
  • kubectl apply -f secrets.yaml
  • kubectl delete -f worker-deployment.yaml
  • kubectl apply -f worker-deployment.yaml

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

    有什么更好的工作流程来更新环境变量?

    最佳答案

    无法对Pod的环境变量进行“热重装”。

    但是,您无需再次删除并重新创建部署即可应用新的 secret 值。您只需要重新创建基础容器。一些选项是:

  • kubectl delete pods重新创建它们
  • 编辑一些部署琐碎的值以触发Rolling Update(例如,从terminationGracePeriodSeconds30changing the 31 )。
  • 使用kubectl rollout restart对部署进行滚动重新启动†

  • rollout restart仅在kubernetes v1.15+上可用

    关于kubernetes - 如何在不中断部署的情况下刷新工作人员的 secret ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55642384/

    相关文章:

    kubernetes - Kubernetes 需要分配真实 IP 地址吗?

    kubernetes - 在 VSTS 中取消发布(取消部署)应用程序?

    kubernetes - 如何使用rest api访问kubernetes中的命名空间?

    kubernetes - 没有类型 "TZCronJob"为版本 "cronjobber.hidde.co/v1alpha1"注册

    bash - 如何从 kubectl 转发 psql shell

    amazon-web-services - 没有事件的广告连播

    amazon-web-services - 如何加入 ALB 入口组而不是覆盖 EKS 中的现有入口组?

    javascript - 库伯内特斯 : Pause main script while keeping pod alive

    kubernetes - Kubectl pods vs pods

    amazon-web-services - 无法从互联网访问 EKS Fargate Pod