Rotazione delle credenziali del cluster


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. Quando la CA scade, le credenziali firmate dalla CA non sono più valide, incluso il certificato client del cluster (dal campo API MasterAuth), chiave e certificato per il server API e i certificati client 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 di quella attuale della credenziale. Le rotazioni delle credenziali richiedono la ricreazione dei nodi per utilizzare nuove credenziali, il che potrebbe compromettere l'esecuzione dei carichi di lavoro. Piano di manutenzione ed eseguire le rotazioni durante periodi di manutenzione per evitare tempi di inattività imprevisti del carico di lavoro o per i client API che non rispondono al di fuori del in un cluster Kubernetes.

Trova i cluster con credenziali in scadenza o scadute

Se le credenziali del cluster scadranno nei prossimi 180 giorni oppure le credenziali del cluster sono già scadute, GKE fornisce indicazioni con un insight e un suggerimento per spiegare che è necessario eseguire una credenziale la rotazione 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 insight e un suggerimento per un cluster, devi eseguire una la rotazione delle credenziali o GKE avvia automaticamente una rotazione delle credenziali entro 30 giorni dalla CA attuale data di scadenza, 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.

Criteri di automazione di GKE per evitare interruzioni del cluster

Per evitare che il cluster entri in uno stato irreversibile se l'infrastruttura 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 cluster scade il 6 gennaio 2024 e non ruoti le tue credenziali di Il 5 dicembre 2023, GKE avvia una rotazione automatica a partire dal giorno 7 dicembre 2023 e completa la rotazione sette giorni dopo l'operazione . Questa rotazione automatica è un ultimo tentativo di ripristino per impedire che un cluster un'interruzione del servizio e ha 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 attività:

  • Attiva l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine .
  • Se vuoi utilizzare Google Cloud CLI per questa attività, install e poi initialize con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.

Controlla la durata delle credenziali

Ti consigliamo di verificare la durata delle credenziali prima e dopo aver eseguito una rotazione delle credenziali in modo da conoscere la validità della CA radice 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

Per verificare la durata delle credenziali per tutti i cluster in un progetto, esegui questo 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

Esegui una rotazione delle credenziali

La rotazione delle credenziali prevede i seguenti passaggi:

  1. Avvia la rotazione: il piano di controllo avvia la pubblicazione su un nuovo indirizzo IP oltre all'indirizzo IP originale. Vengono inviate nuove credenziali a carichi di lavoro e piano di controllo.
  2. Ricrea i nodi: GKE ricrea i nodi del cluster in modo che utilizzano le nuove credenziali e il nuovo indirizzo IP, rispettando la disponibilità periodi di manutenzione ed esclusioni. Puoi anche ricreare manualmente di nodi eseguendo un upgrade della versione del nodo allo stesso GKE già eseguita dai nodi.
  3. 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.
  4. Completa la rotazione: il piano di controllo smette di gestire il traffico sulla all'indirizzo IP originale. Le vecchie credenziali vengono revocate, incluse eventuali le credenziali statiche esistenti per Kubernetes ServiceAccounts.

Quando avvii una rotazione delle credenziali, GKE ricrea i 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 ci sono nodi in il cluster utilizza ancora le credenziali precedenti, il completamento automatico non va a buon fine. Dovresti pianificare di monitorare manualmente e completare la rotazione delle credenziali dopo avviare la rotazione. Non fare affidamento sul completamento automatico, che è la prassi migliore misurare.

Avvia la rotazione

Per avviare la rotazione delle credenziali, esegui il comando seguente:

gcloud container clusters update CLUSTER_NAME \
    --region REGION_NAME \
    --start-credential-rotation

Questo comando crea nuove credenziali, le credenziali al piano di controllo e configura quest'ultimo per la pubblicazione due indirizzi IP: l'indirizzo IP originale e un nuovo indirizzo IP.

Ricrea i nodi

Dopo aver riconfigurato il server API per la pubblicazione su un nuovo indirizzo IP, GKE aggiorna automaticamente i nodi in modo da utilizzare il nuovo indirizzo IP e credenziali in caso di disponibilità di manutenzione. GKE esegue l'upgrade di tutti i nodi alla stessa versione GKE già eseguita, 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 è attivo un periodo di manutenzione 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 di manutenzione o periodi di manutenzione che potrebbero comportare una rotazione non riuscita, 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 lo stesso GKE già utilizzata dal cluster.

    Per ulteriori informazioni, vedi caveat per i periodi di manutenzione.

Controlla l'avanzamento della ricreazione del pool di nodi

  1. Per monitorare l'operazione di rotazione, esegui questo 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.

  2. 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 una propria operazione. Se disponi per più pool di nodi, utilizza queste istruzioni per eseguire il polling di ciascuna operazione.

Aggiornamento 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 questo 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 ServiceAccounts nel tuo cluster, passa a credenziali di breve durata. Il completamento della rotazione rende l'account di servizio esistente non valido e credenziali. 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 impostati come hardcoded e le regole del firewall

Se hai eseguito l'hardcoded dell'indirizzo IP del piano di controllo nel tuo ambiente o se se hai 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 configurare il piano di controllo in modo che utilizzi solo le nuove credenziali 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 analogamente a quanto segue, fai riferimento Risoluzione dei problemi:

ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.

Passaggi successivi