Questa pagina mostra come risolvere i problemi relativi alla crittografia dei secret a livello di applicazione in Google Kubernetes Engine (GKE).
Aggiornamento non riuscito
Quando aggiorni la configurazione della crittografia dei secret a livello di applicazione, GKE deve riscrivere tutti gli oggetti Secret nel cluster Kubernetes. GKE lo fa per garantire che tutti i secret siano criptati dalla nuova chiave Cloud KMS o che siano scritti non criptati, se è quello che configuri.
Questa operazione di aggiornamento può non riuscire a causa di una delle seguenti condizioni:
- Il piano di controllo Kubernetes è temporaneamente non disponibile durante l'aggiornamento.
- Un
AdmissionWebhook
definito dall'utente impedisce a GKE di aggiornare gli oggetti Secret. - La chiave Cloud KMS aggiornata o precedente viene disabilitata prima del completamento dell'operazione di aggiornamento.
Finché l'operazione di aggiornamento non va a buon fine, non interagire con le chiavi Cloud KMS aggiornate o precedenti.
Campi di debug
I nuovi cluster GKE che eseguono la versione 1.29 e successive contengono
campi aggiuntivi che consentono di monitorare gli aggiornamenti a Cluster.DatabaseEncryption
e di ripristinare gli eventuali errori.
I passaggi seguenti sono validi solo per i cluster in cui il campo DatabaseEncryption.CurrentState
non è vuoto. Se il campo CurrentState
è vuoto, la funzionalità non è ancora abilitata su questa versione del cluster.
A questi campi si applicano i seguenti limiti:
- Sono solo output, il che significa che non è possibile impostarli durante le richieste di creazione o aggiornamento del cluster.
Campo CurrentState
Puoi controllare lo stato attuale di un'operazione di aggiornamento di DatabaseEncryption
esaminando il campo CurrentState
in Cluster.DatabaseEncryption
.
Valore di CurrentState |
Descrizione |
---|---|
|
L'ultima operazione di aggiornamento è riuscita. Non sono necessarie ulteriori azioni. Puoi smaltire qualsiasi chiave utilizzata in precedenza. |
|
L'aggiornamento è in corso. |
|
Si è verificato un errore con l'aggiornamento più recente. Non disabilitare o eliminare le chiavi Cloud KMS utilizzate in precedenza, poiché potrebbero essere ancora utilizzate da GKE.
Per ulteriori informazioni, fai riferimento al campo |
Campo LastOperationErrors
Quando un'operazione di aggiornamento non va a buon fine, nell'output di gcloud container clusters update
viene visualizzato l'errore sottostante del piano di controllo GKE.
I messaggi di errore delle due più recenti operazioni di aggiornamento non riuscite sono disponibili anche in Cluster.DatabaseEncryption.LastOperationErrors
.
Campo DecryptionKeys
La chiave Cloud KMS utilizzata per le nuove operazioni di crittografia è mostrata in DatabaseEncryption.KeyName
. Di solito questa è l'unica chiave utilizzata dal cluster.
Tuttavia, DatabaseEncryption.DecryptionKeys
contiene chiavi aggiuntive che vengono utilizzate anche dal cluster se è in corso un aggiornamento o dopo un errore.
Recuperare i dati da un aggiornamento non riuscito
Per eseguire il ripristino dopo un aggiornamento non riuscito:
- Esamina il messaggio di errore e risolvi gli eventuali problemi segnalati.
- Riprova la richiesta di aggiornamento eseguendo il comando non riuscito, ad esempio
gcloud container clusters update ... --database-encryption-key
. Ti consigliamo di riprovare con la stessa richiesta di aggiornamento che hai emesso in origine oppure di aggiornare il cluster allo stato precedente. GKE potrebbe non riuscire a passare a uno stato di crittografia o chiave diverso se non riesce a leggere uno o più Secret.
Le seguenti sezioni elencano i motivi più comuni per gli errori.
Errore chiave Cloud KMS
Se il messaggio di errore contiene un riferimento a una o più chiavi Cloud KMS, esamina la configurazione della chiave Cloud KMS per assicurarti che siano utilizzabili le versioni pertinenti della chiave.
Ad esempio, se l'errore indica che una chiave Cloud KMS è stata disabilitata o eliminata, riabilita la chiave o la versione della chiave.
Impossibile aggiornare il secret
Potrebbe verificarsi il seguente errore se l'API Kubernetes ha rifiutato la richiesta di aggiornamento a causa di un webhook di ammissione:
error admission webhook WEBHOOK_NAME denied the request
Per risolvere questo errore, rimuovi il webhook o modificalo in modo che GKE possa aggiornare i secret in tutti gli spazi dei nomi durante gli aggiornamenti delle chiavi.