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. 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:

  1. 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.
  2. 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.
  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 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

  1. 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.

  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 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