cronjob を展開しました。シークレットに含まれるパラメータ (AES キーのローテーション) を更新する必要があります。シークレットは SOP で暗号化されています。
ジョブを再デプロイせずに 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
次に考えたのは、ファイルを作成し、それを SOP で暗号化し、その結果を「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==
以下の追加資料を確認することを強くお勧めします。