Risoluzione dei problemi relativi alla crittografia dei secret a livello di applicazione


Questa pagina mostra come risolvere problemi relativi a: 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 tutto Gli oggetti Secret in Kubernetes. GKE lo fa per garantire che tutti i Secret sono criptati dalla nuova chiave Cloud KMS o sono scritti non criptati se ecco cosa 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 progressi.
  • Un AdmissionWebhook definito dall'utente impedisce a GKE di poter per aggiornare gli oggetti Secret.
  • La chiave Cloud KMS aggiornata o precedente viene disabilitata prima dell'aggiornamento l'operazione.

Finché l'operazione di aggiornamento non va a buon fine, non interagire con nessuno dei due aggiornate o precedenti di Cloud KMS.

Campi di debug

I nuovi cluster GKE che eseguono la versione 1.29 e successive contengono campi aggiuntivi che ti consentono di monitorare gli aggiornamenti a Cluster.DatabaseEncryption e aiutarti a risolvere gli errori.

I passaggi seguenti sono validi solo per i cluster in cui Il campo DatabaseEncryption.CurrentState non è vuoto. Se CurrentState è vuoto, la funzionalità non è ancora abilitata in questa versione del cluster.

A questi campi si applicano i seguenti limiti:

  • Sono solo output, il che significa che non è possibile impostarli durante la creazione del cluster o richieste di aggiornamento.

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

CURRENT_STATE_ENCRYPTED

CURRENT_STATE_DECRYPTED

L'ultima operazione di aggiornamento è riuscita. Non devi fare altro necessaria. Puoi smaltire qualsiasi chiave utilizzata in precedenza.

CURRENT_STATE_ENCRYPTION_PENDING

CURRENT_STATE_DECRYPTION_PENDING

L'aggiornamento è in corso.

CURRENT_STATE_ENCRYPTION_ERROR

CURRENT_STATE_DECRYPTION_ERROR

Si è verificato un errore con l'aggiornamento più recente. Non disattivare o eliminare tutte le chiavi Cloud KMS utilizzate in precedenza, poiché potrebbero in uso da GKE.

Fai riferimento al campo LastOperationErrors per saperne di più informazioni.

Campo LastOperationErrors

Quando un'operazione di aggiornamento non va a buon fine, l'errore sottostante dell'istanza GKE viene visualizzato nell'output di gcloud container clusters update.

Vengono visualizzati anche i messaggi di errore delle due ultime operazioni di aggiornamento non riuscite disponibile 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 sono e utilizzata 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:

  1. Esamina il messaggio di errore e risolvi gli eventuali problemi segnalati.
  2. Riprova la richiesta di aggiornamento eseguendo il comando non riuscito, ad esempio gcloud container clusters update ... --database-encryption-key. Me ti consigliamo di riprovare con la stessa richiesta di aggiornamento che hai usato o aggiornare il cluster allo stato precedente. GKE potrebbe non essere in grado di passare a una chiave diversa o della crittografia se non può 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 uno o più Cloud KMS di Cloud KMS, esamina la configurazione della chiave Cloud KMS per assicurarti 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 l'aggiornamento richiesta 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 può aggiornare i secret in tutti gli spazi dei nomi durante gli aggiornamenti delle chiavi.