Cette page explique comment résoudre les problèmes liés au chiffrement des secrets au niveau de la couche d'application dans Google Kubernetes Engine (GKE).
Échec de la mise à jour
Lorsque vous mettez à jour la configuration du chiffrement des secrets au niveau de la couche d'application, GKE doit réécrire tous les objets Secret du cluster Kubernetes. GKE effectue cette opération pour s'assurer que tous les secrets sont chiffrés par la nouvelle clé Cloud KMS ou écrits de manière non chiffrée si c'est ce que vous configurez.
Cette opération de mise à jour peut échouer pour l'une des conditions suivantes:
- Le plan de contrôle Kubernetes est temporairement indisponible pendant la mise à jour.
- Une règle
AdmissionWebhook
définie par l'utilisateur empêche GKE de mettre à jour les objets Secret. - La clé Cloud KMS mise à jour ou précédente est désactivée avant la fin de l'opération de mise à jour.
N'interagissez pas avec les clés Cloud KMS mises à jour ou précédentes tant que l'opération de mise à jour n'a pas abouti.
Champs de débogage
Les nouveaux clusters GKE exécutant les versions 1.29 et ultérieures contiennent des champs supplémentaires qui vous aident à suivre les mises à jour de Cluster.DatabaseEncryption
et à récupérer en cas d'échec.
Les étapes suivantes ne s'appliquent qu'aux clusters dans lesquels le champ DatabaseEncryption.CurrentState
n'est pas vide. Si le champ CurrentState
est vide, la fonctionnalité n'est pas encore activée sur cette version de cluster.
Les limites suivantes s'appliquent à ces champs :
- Elles sont exclusivement en sortie, ce qui signifie que vous ne pouvez pas les définir lors des requêtes de création ou de mise à jour du cluster.
Champ CurrentState
Vous pouvez inspecter l'état actuel d'une opération de mise à jour DatabaseEncryption
en examinant le champ CurrentState
dans Cluster.DatabaseEncryption
.
Valeur de CurrentState |
Description |
---|---|
|
La dernière opération de mise à jour a réussi. Aucune autre action de votre part n'est requise. Vous pouvez supprimer toutes les clés précédemment utilisées. |
|
La mise à jour est en cours. |
|
Une erreur s'est produite lors de la dernière mise à jour. Ne désactivez ou ne détruisez pas les clés Cloud KMS précédemment utilisées, car elles pourraient encore être utilisées par GKE.
Pour en savoir plus, reportez-vous au champ |
Champ LastOperationErrors
Lorsqu'une opération de mise à jour échoue, l'erreur sous-jacente du plan de contrôle GKE s'affiche dans le résultat de gcloud container clusters update
.
Les messages d'erreur des deux dernières opérations de mise à jour ayant échoué sont également disponibles dans Cluster.DatabaseEncryption.LastOperationErrors
.
Champ DecryptionKeys
La clé Cloud KMS utilisée pour les nouvelles opérations de chiffrement est indiquée dans DatabaseEncryption.KeyName
. Il s'agit généralement de la seule clé utilisée par le cluster.
Cependant, DatabaseEncryption.DecryptionKeys
contient des clés supplémentaires qui sont également utilisées par le cluster si une mise à jour est en cours ou après un échec.
Récupération après échec d'une mise à jour
Pour récupérer une mise à jour ayant échoué, procédez comme suit:
- Examinez le message d'erreur et résolvez les problèmes signalés.
- Réessayez d'exécuter la requête de mise à jour en exécutant la commande ayant échoué, telle que
gcloud container clusters update ... --database-encryption-key
. Nous vous recommandons d'effectuer une nouvelle tentative avec la requête de mise à jour initiale ou de rétablir l'état précédent du cluster. GKE risque de ne pas pouvoir passer à un autre état de clé ou de chiffrement s'il ne peut pas lire un ou plusieurs secrets.
Les sections suivantes répertorient les raisons les plus courantes des erreurs.
Erreur de clé Cloud KMS
Si le message d'erreur contient une référence à une ou plusieurs clés Cloud KMS, examinez la configuration de votre clé Cloud KMS pour vous assurer que les versions de clé appropriées sont utilisables.
Par exemple, si l'erreur indique qu'une clé Cloud KMS a été désactivée ou détruite, réactivez la clé ou la version de clé.
Impossible de mettre à jour le secret
L'erreur suivante peut se produire si l'API Kubernetes a refusé la requête de mise à jour en raison d'un webhook d'admission:
error admission webhook WEBHOOK_NAME denied the request
Pour résoudre cette erreur, supprimez le webhook ou modifiez-le afin que GKE puisse mettre à jour les secrets dans tous les espaces de noms lors des mises à jour des clés.