Questa pagina spiega come eseguire una rotazione delle credenziali nei cluster Google Kubernetes Engine (GKE).
Informazioni sulla rotazione delle credenziali in GKE
L'autorità di certificazione (CA) radice del cluster ha una durata limitata. Alla scadenza dell'autorità di certificazione, tutte le credenziali firmate dall'autorità di certificazione non sono più valide, inclusi il certificato client del cluster (dal campo dell'API MasterAuth
), la chiave e il certificato per il server API e i certificati client di kubelet. Per
vedi Durata della CA radice del cluster.
Puoi eseguire una rotazione delle credenziali per revocare ed emettere nuove credenziali per il tuo cluster. Questa operazione ruota la chiave privata CA del cluster e richiede creazione di nodi per l'utilizzo di nuove credenziali. Devi avviare e terminare una rotazione delle credenziali per il cluster prima della scadenza delle credenziali attuali. Oltre a la rotazione delle credenziali esegue anche Rotazione IP.
Quando eseguire una rotazione delle credenziali
Devi eseguire la rotazione delle credenziali regolarmente e prima della data di scadenza delle credenziali correnti. Le rotazioni delle credenziali richiedono la ricreazione dei nodi per utilizzare le nuove credenziali, il che potrebbe causare interruzioni dei carichi di lavoro in esecuzione. Pianifica i periodi di manutenzione ed esegui le rotazioni durante le finestre di manutenzione per evitare tempi di riposo imprevisti del carico di lavoro o client API non rispondenti al di fuori del cluster.
Trovare i cluster con credenziali in scadenza o scadute
Se le credenziali del tuo cluster scadranno nei prossimi 180 giorni o se sono già scadute, GKE fornisce indicazioni con un'analisi e un consiglio per spiegare che devi eseguire una rotazione delle credenziali per questo cluster. Queste indicazioni includono la data di scadenza
le credenziali. Puoi visualizzare queste indicazioni nella console Google Cloud. Oppure
puoi visualizzare questo
guida
con gcloud CLI, o l'API Recommender, specificando
CLUSTER_CA_EXPIRATION
sottotipo.
Se ricevi un'informazione e un consiglio per un cluster, devi eseguire una rotazione delle credenziali oppure GKE avvia automaticamente una rotazione delle credenziali entro 30 giorni dalla data di scadenza dell'attuale CA, come spiegato nella sezione successiva. Una volta rotazione delle credenziali completata può richiedere fino a 36 ore per la risoluzione dell'insight e del suggerimento.
Criterio di automazione GKE per evitare interruzioni del cluster
Per evitare che il cluster entri in uno stato non recuperabile se l'attuale scadono, GKE avvia automaticamente una credenziale la rotazione entro 30 giorni dalla data di scadenza attuale della CA. Ad esempio, se la CA del tuo cluster scade il 6 gennaio 2024 e non ruoti le credenziali entro il 5 dicembre 2023, GKE avvia una rotazione automatica a partire dal 7 dicembre 2023 e la completa sette giorni dopo l'inizio dell'operazione. Questa rotazione automatica è un tentativo estremo per evitare un interruzione del servizio del cluster e presenta le seguenti considerazioni:
- Le rotazioni automatiche ignorano periodi di manutenzione o manutenzione configurati esclusioni
- Al termine della rotazione delle credenziali, le credenziali in scadenza vengono revocate. i client API Kubernetes esterni al cluster, come kubectl negli ambienti locali, non funzionerà finché non configuri i client in modo che utilizzino le nuove credenziali
- Le ricreazioni del pool di nodi durante la rotazione potrebbero causare interruzioni dell'esecuzione carichi di lavoro
Le rotazioni automatiche avviate da GKE sono un'interruzione dell'ultima risorsa misure di prevenzione. Non fare affidamento solo su queste rotazioni automatiche: una misura di emergenza preventiva per evitare interruzioni complete.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installa e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
Controllare la durata delle credenziali
Ti consigliamo di controllare la durata delle credenziali prima e dopo aver eseguito una rotazione delle credenziali in modo da conoscere la validità della CA principale del cluster.
Per verificare la durata delle credenziali per un singolo cluster, esegui questo comando:
gcloud container clusters describe CLUSTER_NAME \
--region REGION_NAME \
--format "value(masterAuth.clusterCaCertificate)" \
| base64 --decode \
| openssl x509 -noout -dates
L'output è simile al seguente:
notBefore=Mar 17 16:45:34 2023 GMT
notAfter=Mar 9 17:45:34 2053 GMT
Se esegui questo comando dopo aver avviato una rotazione delle credenziali, l'output è la durata del certificato originale. Questo certificato rimane valido fino al completamento della rotazione. Dopo il completamento la rotazione, l'output è la durata del nuovo certificato.
Per controllare la durata delle credenziali per tutti i cluster di un progetto, esegui il seguente comando:
gcloud container clusters list --project PROJECT_ID \
| awk 'NR>1 {print "echo; echo Validity for cluster " $1 " in location " $2 ":;\
gcloud container clusters describe --project PROJECT_ID " $1 " --location " $2 " \
--format \"value(masterAuth.clusterCaCertificate)\" \
| base64 --decode | openssl x509 -noout -dates"}' \
| bash
Eseguire una rotazione delle credenziali
La rotazione delle credenziali prevede i seguenti passaggi:
- Avvia la rotazione: il piano di controllo inizia a eseguire il servizio su un nuovo indirizzo IP oltre a quello originale. Le nuove credenziali vengono rilasciate ai carichi di lavoro e al piano di controllo.
- Ri crea i nodi: GKE ricrea i nodi del cluster in modo che utilizzino il nuovo indirizzo IP e le nuove credenziali, rispettando la disponibilità delle finestre di manutenzione ed esclusioni. Puoi anche ricreare manualmente i nodi eseguendo un upgrade della versione del nodo alla stessa versione GKE già in esecuzione sui nodi.
- Aggiornamento client API: dopo aver avviato la rotazione, aggiorna qualsiasi API del cluster
come le macchine di sviluppo che utilizzano
kubectl
, per comunicare sul piano di controllo utilizzando il nuovo indirizzo IP. - Completa la rotazione: il piano di controllo smette di gestire il traffico sull'indirizzo IP originale. Le credenziali precedenti vengono revocate, incluse eventuali credenziali statiche esistenti per gli account di servizio Kubernetes.
Quando avvii una rotazione delle credenziali, GKE ricrea i tuoi nodi per te. Tuttavia, durante eventi importanti come Google Cloud Next, Mettere in pausa le ricreazioni automatiche dei nodi in modo da non riscontrare interruzioni. Se non completi la rotazione delle credenziali entro sette giorni dall'avvio, GKE tenta di completare la rotazione per te. Se alcuni nodi del tuo cluster utilizzano ancora le credenziali precedenti, il completamento automatico non va a buon fine. Dovresti pianificare di monitorare e completare manualmente le rotazioni delle credenziali dopo aver avviato la rotazione. Non fare affidamento sul completamento automatico, che è la prassi migliore misurare.
Avvia la rotazione
Per avviare una rotazione delle credenziali, esegui il seguente comando:
gcloud container clusters update CLUSTER_NAME \
--region REGION_NAME \
--start-credential-rotation
Questo comando crea nuove credenziali, le emette al piano di controllo e configura il piano di controllo in modo che venga eseguito su due indirizzi IP: l'indirizzo IP originale e un nuovo indirizzo IP.
Ricrea i nodi
Dopo aver riconfigurato il server API in modo che venga eseguito su un nuovo indirizzo IP, GKE aggiorna automaticamente i nodi in modo che utilizzino il nuovo indirizzo IP e le nuove credenziali se è disponibile la manutenzione. GKE esegue l'upgrade di tutti i nodi alla stessa versione GKE già in esecuzione, che ricrea i nodi. Per ulteriori informazioni, consulta Nodo piscina upgrade.
Per impostazione predefinita, GKE completa automaticamente la rotazione delle credenziali sette giorni dopo l'avvio dell'operazione. Se una finestra di manutenzione attiva o un'esclusione nel cluster impedisce a GKE di ricreare alcuni nodi durante questo periodo di sette giorni, la rotazione delle credenziali non viene completata.
Se utilizzi esclusioni o finestre di manutenzione che potrebbero comportare un fallimento della rotazione, esegui manualmente l'upgrade del cluster per forzare la ricreazione dei nodi:
gcloud container clusters upgrade CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION
Sostituisci
VERSION
con la stessa versione GKE utilizzata già dal cluster.Per ulteriori informazioni, vedi caveat per i periodi di manutenzione.
Controlla l'avanzamento della ricreazione del pool di nodi
Per monitorare l'operazione di rotazione, esegui il seguente comando:
gcloud container operations list \ --filter="operationType=UPGRADE_NODES AND status=RUNNING" \ --format="value(name)"
Questo comando restituisce l'ID operazione dell'operazione di upgrade del nodo.
Per eseguire il polling dell'operazione, passa l'ID operazione al seguente comando:
gcloud container operations wait OPERATION_ID
I pool di nodi vengono ricreati uno alla volta e ognuno ha la propria operazione. Se disponi per più pool di nodi, utilizza queste istruzioni per eseguire il polling di ciascuna operazione.
Aggiorna i client API
Dopo aver avviato la rotazione delle credenziali, devi aggiornare tutti i client API all'esterno
nel cluster (ad esempio kubectl
sui computer degli sviluppatori) per utilizzare le nuove credenziali
e puntino al nuovo indirizzo IP del piano di controllo.
Per aggiornare i client API, esegui il seguente comando per ogni client:
gcloud container clusters get-credentials CLUSTER_NAME \
--region REGION_NAME
Aggiorna le credenziali dell'account di servizio di Kubernetes
Se utilizzi credenziali statiche per gli account di servizio nel tuo cluster, passa alle credenziali di breve durata. Il completamento della rotazione rende non valide le credenziali dell'account di servizio esistenti. Se non vuoi utilizzare credenziali di breve durata, assicurati di ricreare le credenziali statiche per tutti gli account di servizio nel cluster dopo aver completato la rotazione.
Aggiorna gli indirizzi IP e le regole firewall hardcoded
Se hai eseguito l'hardcoded dell'indirizzo IP del piano di controllo nel tuo ambiente o se se esistono regole firewall che hanno come target l'indirizzo IP del piano di controllo, gli indirizzi al nuovo indirizzo IP. Se completi la rotazione senza aggiornare gli indirizzi IP nelle applicazioni e nelle regole firewall, potrebbero verificarsi interruzioni quando GKE interrompe la pubblicazione sul l'indirizzo IP precedente del piano di controllo.
Completa la rotazione
Dopo aver aggiornato i client API all'esterno del cluster, completa la rotazione per configurare il piano di controllo in modo che utilizzi solo le nuove credenziali e il nuovo indirizzo IP:
gcloud container clusters update CLUSTER_NAME \
--region=REGION_NAME \
--complete-credential-rotation
Se la rotazione delle credenziali non viene completata e restituisce un messaggio di errore simile al seguente, consulta Errore 400: il pool di nodi richiede la ricostituzione:
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
Passaggi successivi
- Scopri di più sulla protezione dei metadati del cluster.
- Scopri di più sull'oggetto Kubernetes Secret.
- Scopri di più sulla rotazione dell'indirizzo IP.