我部署了一個 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 管理員。但是,不是出於選擇。填寫直到我們可以解決“no k8s admin”問題。
答案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==
我強烈建議您檢查附加參考: