我们使用 Secret 作为 pod 上的环境变量,但每次更新 Secret 时,我们都会重新部署 Pod 以使更改生效。我们正在寻找一种机制,只要机密更新,Pod 就会自动重新启动。有这方面的帮助吗?
提前致谢。
有很多方法可以处理这个问题。
首先,使用 Deployment 而不是不受管理的“裸”Pod。当 Pod 模板更改时,Deployment 将为您创建新的 Pod。
其次,管理 Secrets 可能有点棘手。如果您可以使用可以使用 Kustomize SecretGenerator 的设置,那就太好了 - 然后每个新的
Secret
将获得其唯一的名称。此外,该唯一名称会自动反映到 Deployment
- 当 Secret
更改时,您的 pod 将自动重新创建 - 这与您的起源问题相匹配。当 Secret
和 Deployment
以这种方式处理时,您可以使用以下命令应用更改:
kubectl apply -k <folder>
如果您将机密安装到 pod,它将自动更新,您无需按照此处
所述重新启动 pod其他方法是staker重新加载器,它可以根据配置、秘密等重新加载您的部署
添加一个有状态集注释,其中包含相关密钥的校验和。每次秘密发生变化时,其校验和都会发生变化,因此有状态集也会发生变化。这会触发其 pod 重新滚动。
spec:
template:
metadata:
annotations:
checksum/secret/scripts: {{ include (print $.Template.BasePath "/scripts.yaml") . | sha256sum }}
有多种方法可以做到这一点:
只需重启 Pod 即可