Auf dieser Seite wird beschrieben, wie Sie Probleme im Zusammenhang mit der Verschlüsselung von Secrets auf Anwendungsebene in Google Kubernetes Engine (GKE) beheben.
Aktualisierung fehlgeschlagen
Wenn Sie die Verschlüsselungskonfiguration der Secret-Verschlüsselung auf Anwendungsebene aktualisieren, muss GKE alle Secret-Objekte im Kubernetes-Cluster neu schreiben. Dadurch wird in GKE sichergestellt, dass alle Secrets mit dem neuen Cloud KMS-Schlüssel verschlüsselt oder unverschlüsselt geschrieben werden, wenn Sie dies konfigurieren.
Dieser Aktualisierungsvorgang kann aufgrund der folgenden Bedingungen fehlschlagen:
- Die Kubernetes-Steuerungsebene ist während des Updates vorübergehend nicht verfügbar.
- Ein benutzerdefinierter
AdmissionWebhook
verhindert, dass GKE Secret-Objekte aktualisieren kann. - Der aktualisierte oder vorherige Cloud KMS-Schlüssel wird deaktiviert, bevor der Aktualisierungsvorgang abgeschlossen ist.
Interagieren Sie erst dann mit den aktualisierten oder vorherigen Cloud KMS-Schlüsseln, wenn der Aktualisierungsvorgang erfolgreich ist.
Debugging-Felder
Neue GKE-Cluster mit Version 1.29 und höher enthalten zusätzliche Felder, mit denen Sie Aktualisierungen von Cluster.DatabaseEncryption
verfolgen und nach Fehlern wiederherstellen können.
Die folgenden Schritte gelten nur für Cluster, in denen das Feld DatabaseEncryption.CurrentState
nicht leer ist. Wenn das Feld CurrentState
leer ist, ist die Funktion für diese Clusterversion noch nicht aktiviert.
Für diese Felder gelten die folgenden Limits:
- Sie sind nur Ausgabe, was bedeutet, dass Sie sie nicht bei Anfragen zur Clustererstellung oder -aktualisierung festlegen können.
Feld CurrentState
Sie können den aktuellen Status eines DatabaseEncryption
-Aktualisierungsvorgangs prüfen, indem Sie das Feld CurrentState
in Cluster.DatabaseEncryption
prüfen.
Wert von CurrentState |
Beschreibung |
---|---|
|
Der letzte Aktualisierungsvorgang war erfolgreich. Sie müssen dann nichts weiter tun. Sie können alle zuvor verwendeten Schlüssel entsorgen. |
|
Der Aktualisierungsvorgang läuft. |
|
Beim letzten Update ist ein Fehler aufgetreten. Deaktivieren oder löschen Sie keine zuvor verwendeten Cloud KMS-Schlüssel, da sie möglicherweise noch von GKE verwendet werden. Weitere Informationen finden Sie im |
Feld LastOperationErrors
Wenn ein Aktualisierungsvorgang fehlschlägt, wird der zugrunde liegende Fehler von der GKE-Steuerungsebene in der Ausgabe von gcloud container clusters update
angezeigt.
Die Fehlermeldungen der beiden letzten fehlgeschlagenen Updatevorgänge sind auch in Cluster.DatabaseEncryption.LastOperationErrors
verfügbar.
Feld DecryptionKeys
Der für neue Verschlüsselungsvorgänge verwendete Cloud KMS-Schlüssel wird in DatabaseEncryption.KeyName
angezeigt. Normalerweise ist dies der einzige Schlüssel, der vom Cluster verwendet wird.
DatabaseEncryption.DecryptionKeys
enthält jedoch zusätzliche Schlüssel, die auch vom Cluster verwendet werden, wenn eine Aktualisierung ausgeführt wird oder nach einem Fehler.
Nach einem fehlgeschlagenen Update wiederherstellen
So führen Sie eine Wiederherstellung nach einer fehlgeschlagenen Aktualisierung durch:
- Sehen Sie sich die Fehlermeldung an und beheben Sie alle angegebenen Probleme.
- Wiederholen Sie die Aktualisierungsanfrage mit dem fehlgeschlagenen Befehl, z. B.
gcloud container clusters update ... --database-encryption-key
. Wir empfehlen, den Vorgang mit derselben Aktualisierungsanfrage zu wiederholen, die Sie ursprünglich ausgegeben haben, oder den Cluster auf den vorherigen Zustand zurückzusetzen. GKE kann möglicherweise nicht zu einem anderen Schlüssel- oder Verschlüsselungsstatus wechseln, wenn ein oder mehrere Secrets nicht gelesen werden können.
In den folgenden Abschnitten werden häufige Fehlerursachen aufgeführt.
Cloud KMS-Schlüsselfehler
Wenn die Fehlermeldung einen Verweis auf einen oder mehrere Cloud KMS-Schlüssel enthält, prüfen Sie Ihre Cloud KMS-Schlüsselkonfiguration, um sicherzustellen, dass die relevanten Schlüsselversionen verwendbar sind.
Wenn der Fehler beispielsweise anzeigt, dass ein Cloud KMS-Schlüssel deaktiviert oder gelöscht wurde, aktivieren Sie den Schlüssel oder die Schlüsselversion noch einmal.
Fehler: Cloud KMS-Schlüssel kann nicht verwendet werden, da er für die Verschlüsselung auf Anwendungsebene konfiguriert ist
Die folgende Fehlermeldung wird angezeigt, wenn das Standarddienstkonto von GKE nicht auf den Cloud KMS-Schlüssel zugreifen kann:
Cluster problem detected (Kubernetes Engine Service Agent account unable to use CloudKMS key configured for Application Level encryption).
Aktivieren Sie den deaktivierten Schlüssel noch einmal, um das Problem zu beheben.
Secret kann nicht aktualisiert werden
Der folgende Fehler kann auftreten, wenn die Kubernetes API die Aktualisierungsanfrage aufgrund eines Zulassungs-Webhooks abgelehnt hat:
error admission webhook WEBHOOK_NAME denied the request
Entfernen Sie den Webhook oder ändern Sie ihn so, dass GKE während Schlüsselaktualisierungen in allen Namespaces Secrets in allen Namespaces aktualisieren kann, um diesen Fehler zu beheben.