秘密更新后重新启动 Pod

问题描述 投票:0回答:4

我们使用 Secret 作为 pod 上的环境变量,但每次更新 Secret 时,我们都会重新部署 Pod 以使更改生效。我们正在寻找一种机制,只要机密更新,Pod 就会自动重新启动。有这方面的帮助吗?

提前致谢。

kubernetes openshift kubernetes-pod
4个回答
6
投票

有很多方法可以处理这个问题。

首先,使用 Deployment 而不是不受管理的“裸”Pod。当 Pod 模板更改时,Deployment 将为您创建新的 Pod。

其次,管理 Secrets 可能有点棘手。如果您可以使用可以使用 Kustomize SecretGenerator 的设置,那就太好了 - 然后每个新的

Secret
将获得其唯一的名称。此外,该唯一名称会自动反映到
Deployment
- 当
Secret
更改时,您的 pod 将自动重新创建 - 这与您的起源问题相匹配。当
Secret
Deployment
以这种方式处理时,您可以使用以下命令应用更改:

kubectl apply -k <folder>

3
投票

如果您将机密安装到 pod,它将自动更新,您无需按照此处

所述重新启动 pod

其他方法是staker重新加载器,它可以根据配置、秘密等重新加载您的部署


0
投票

添加一个有状态集注释,其中包含相关密钥的校验和。每次秘密发生变化时,其校验和都会发生变化,因此有状态集也会发生变化。这会触发其 pod 重新滚动。

spec:
  template:
    metadata:
      annotations:
        checksum/secret/scripts: {{ include (print $.Template.BasePath "/scripts.yaml") . | sha256sum }}

-1
投票

有多种方法可以做到这一点:

  • 只需重启 Pod 即可

    • 这可以手动完成,或者,
    • 您可以使用 VMware carvel kapp 控制器(文档)提供的操作员,使用 kapp 控制器您可以重新加载 Secrets/configmap,而无需重新启动 pod(这会有效地定期运行
      helm template <package>
      ,并在以下情况下应用更改)它发现了
      helm template
      中的任何差异),请查看 我的设计 以重新加载日志级别,而无需重新启动 pod。
  • 使用服务绑定https://servicebinding.io/

© www.soinside.com 2019 - 2024. All rights reserved.