Pro*_*OXO 6 kubernetes kubectl kubernetes-secrets amazon-eks
我想学习如何在不终止和重新创建部署的情况下更新工作 Pod 中的机密。
目前 pod 将秘密作为 env vars 提取:
env:
- name: SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
key: secret_access_key
name: secrets
Run Code Online (Sandbox Code Playgroud)
但这只发生在他们启动时。
因此,如果需要更改秘密,我必须:
secrets.yamlkubectl apply -f secrets.yamlkubectl delete -f worker-deployment.yamlkubectl apply -f worker-deployment.yaml我真的不喜欢第 3 步和第 4 步,因为它们会终止正在进行的工作。
更新 env var 机密的更好的工作流程是什么?
没有办法对 pod 的环境变量进行“热重载”。
不过,您无需再次删除和重新创建部署即可应用新的密钥值。您只需要重新创建底层 pod。一些选项是:
kubectl delete pods 重新创建它们terminationGracePeriodSecondsfrom更改30为31)。kubectl rollout restart对部署进行滚动重启††rollout restart仅在 kubernetes v1.15+上可用
正如已经提到的,你想做的事是不可能的。然而,Kubernetes 提供了一种替代方案:将 ConfigMap 作为卷安装。例如
\n\napiVersion: v1\nkind: Pod\nmetadata:\n name: configmap-pod\nspec:\n containers:\n - name: test\n image: busybox\n volumeMounts:\n - name: config-vol\n mountPath: /etc/config\n volumes:\n - name: config-vol\n configMap:\n name: log-config\n items:\n - key: log_level\n path: log_level\nRun Code Online (Sandbox Code Playgroud)\n\n在这种情况下,将log-config ConfigMap被挂载为Volume,您可以从其条目中访问内容,作为pod 内的log_level文件 \xe2\x80\x9c \xe2\x80\x9d 。/etc/config/log_level
配置映射的更改反映在卷上文件的更改中,而这些更改反过来可以由您的应用程序通过使用您语言中的适当功能来监视。
\n| 归档时间: |
|
| 查看次数: |
3683 次 |
| 最近记录: |