如何在不重新部署的情况下更改 sops 加密密钥

如何在不重新部署的情况下更改 sops 加密密钥

我部署了一个 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==

我强烈建议您查看附加参考资料:

相关内容