So ändern Sie ein mit SOPs verschlüsseltes Geheimnis ohne erneute Bereitstellung

So ändern Sie ein mit SOPs verschlüsseltes Geheimnis ohne erneute Bereitstellung

Ich habe einen Cronjob bereitgestellt. Ich muss einen Parameter aktualisieren – einen AES-Schlüssel rotieren – der im Geheimnis enthalten ist. Das Geheimnis ist mit SOPs verschlüsselt.

Ist es möglich, den AES-Schlüssel zu aktualisieren, ohne den Job erneut bereitzustellen?

Was ich versucht habe:

"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

Mein nächster Gedanke ist, eine Datei zu erstellen, sie dann mit sops zu verschlüsseln und das Ergebnis in den Editor für „kubectl edit secret jobsecret“ zu kopieren/einzufügen. Ich hatte gehofft, dass es einen besseren Weg gibt.

Ich bin Entwickler und kein K8S-Administrator. Aber nicht freiwillig. Ich springe ein, bis wir das Problem „kein K8S-Administrator“ beheben können.

Antwort1

Kurz zusammengefasst

Sie können es verwenden $ kubectl patch, um Ressourcenfelder zu aktualisieren.

Beispiel:

kubectl patch secret YOUR_SECRET -p '{"data":{"key":"NEW_BASE64_ENCODED_VALUE"}}'

Weitere Referenzen finden Sie hier:

Ich habe unten weitere Erklärungen beigefügt.


Beispiel für das „Patchen“ eines Geheimnisses:

  • $ secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: super-secret
data:
  username: a3J1aw==
  password: b2xkLXBhc3N3b3Jk

Eine Randbemerkung!

Werte von Schlüsseln wie usernameund passwordsind Base64-codiert!

Um den Wert zu ändern, passwordmüssen Sie Folgendes ausführen:

  • kubectl patch super-secret -p '{"data":{"password":"bmV3LXBhc3N3b3Jk"}}'

Beim Anzeigen des neu aktualisierten Geheimnisses sollte Folgendes erscheinen (die Ausgabe ist nur teilweise):

  • $ kubectl get secret super-secret -o yaml
data:
  password: bmV3LXBhc3N3b3Jk 
  username: a3J1aw==

Ich empfehle Ihnen dringend, die zusätzliche Referenz zu prüfen:

verwandte Informationen