我部署了一个 cronjob。我需要更新密钥中包含的一个参数——轮换 AES 密钥。密钥是 sops 加密的。
是否可以在不重新部署作业的情况下更新 AES 密钥?
我已尝试过:
"kubectl edit secret jobsecret" -- edits the sops encrypted file but it is still encrypted
"helm edit secrets jobsecret.yaml" -- edits/encrypts the parameter file before deploy
我的下一个想法是创建一个文件,然后用 sops 加密它,并将结果复制/粘贴到“kubectl edit secret jobsecret”的编辑器中。我希望有更好的方法。
我是一名开发人员,不是 k8s 管理员。但这不是我的选择。我会继续努力,直到我们能够解决“没有 k8s 管理员”的问题。
答案1
总结
您可以使用$ kubectl patch
它来更新资源字段。
例子:
kubectl patch secret YOUR_SECRET -p '{"data":{"key":"NEW_BASE64_ENCODED_VALUE"}}'
您可以在这里找到更多参考:
我在下面添加了更多解释。
“修补”秘密的示例:
$ secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: super-secret
data:
username: a3J1aw==
password: b2xkLXBhc3N3b3Jk
附注!
username
和等键的值password
均采用 base64 编码!
要更改您的值,password
您需要运行:
kubectl patch super-secret -p '{"data":{"password":"bmV3LXBhc3N3b3Jk"}}'
显示新更新的秘密应该显示(输出只是部分):
$ kubectl get secret super-secret -o yaml
data:
password: bmV3LXBhc3N3b3Jk
username: a3J1aw==
我强烈建议您查看附加参考资料: