【问题标题】:How to Refresh Worker Secrets Without Killing Deployment?如何在不杀死部署的情况下刷新 Worker Secret?
【发布时间】:2020-02-19 20:20:01
【问题描述】:

我想了解如何在不杀死和重新创建部署的情况下更新工作 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 机密的更好工作流程是什么?

【问题讨论】:

标签: kubernetes kubectl kubernetes-secrets amazon-eks


【解决方案1】:

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

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

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

【讨论】:

  • 您还可以添加一个注释,其中包含 configmap 的校验和,或者其最后修改的时间戳。比滥用模板中不相关的文件要干净一些。
  • @PauloSchreiner on k8s v1.15 kubectl rollout restart 现在是触发滚动更新的更好选择。
【解决方案2】:

如前所述,您想做的事情是不可能的。但是,Kubernetes 提供了另一种选择:将 ConfigMap 挂载为卷。例如

apiVersion: v1
kind: Pod
metadata:
  name: configmap-pod
spec:
  containers:
    - name: test
      image: busybox
      volumeMounts:
        - name: config-vol
          mountPath: /etc/config
  volumes:
    - name: config-vol
      configMap:
        name: log-config
        items:
          - key: log_level
            path: log_level

在这种情况下,log-configConfigMap 将被挂载为 Volume,您可以从其 log_level 条目中访问内容作为 pod 内的文件“/etc/config/log_level”。

对配置映射的更改反映在卷上文件的更改中,而这些更改又可以由您的应用程序通过使用您的语言中的适当功能来观察。

【讨论】:

    【解决方案3】:

    如果您拥有适当的权限,您可以通过 K8S 的 WebUI(仪表板)或 fabric8 等工具更新机密。

    查看Kubernetes modify a secret using the cli 了解其他选项。

    【讨论】:

    • 问题不在于如何修改机密(在第 1 步和第 2 步中已经完成)。这是关于处理 pod 配置的重新加载。
    • 很好奇你为什么认为我不理解这个问题。 FWIW,我个人使用 Dashboard 和 Fabric8 更改了更新 pod 中相应环境值的秘密值。如果您不知道这些选项,我很乐意为您演示。
    • 在不重新创建 Pod 的情况下更新相应的环境?看到这个工作会很棒! (特别是使用 kubernetes 仪表板)。你能创建一个 POC 来演示它吗?考虑在#24957#22368 中包含演示,Kubernetes 项目的人也不知道这个功能。
    • 我的立场是正确的。您可以通过 Dashboard 和 Fabric8 修改秘密值;但是,您必须重新启动 pod,才能在环境中反映任何更改。感谢 Educardo 提供的信息。
    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    相关资源
    最近更新 更多