Rotazione dell'IP del control plane

Questa pagina spiega come eseguire una rotazione degli indirizzi IP per il piano di controllo nei cluster di Google Kubernetes Engine (GKE).

Prima di leggere questa pagina, assicurati di conoscere la rotazione delle credenziali. Ti consigliamo di eseguire una rotazione delle credenziali, che include la rotazione degli indirizzi IP. Tuttavia, potresti dover eseguire una rotazione degli indirizzi IP autonoma se non puoi eseguire una rotazione completa delle credenziali.

Questa pagina è rivolta agli specialisti della sicurezza che gestiscono il ciclo di vita dei cluster su GKE. Per saperne di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Google Cloud contenuti, consulta Ruoli e attività comuni degli utenti GKE.

Informazioni sulle rotazioni delle credenziali in GKE

L'autorità di certificazione (CA) radice del cluster ha una durata limitata. Quando la CA scade, tutte le credenziali firmate dalla CA non sono più valide, inclusi il certificato client del cluster (dal campo API MasterAuth), la chiave e il certificato per il server API e i certificati client kubelet. La durata delle credenziali del cluster dipende da quando hai creato il cluster o da quando hai eseguito l'ultima rotazione delle credenziali.

Puoi revocare e riemettere queste credenziali eseguendo uno dei seguenti tipi di rotazione. Nella maggior parte dei casi, ti consigliamo di eseguire una rotazione completa delle credenziali, che è più completa di una rotazione degli indirizzi IP.

  • Rotazione delle credenziali:

    • Ruota l'indirizzo IP utilizzato dal piano di controllo per il server API Kubernetes.
    • Ruota la CA radice del cluster.
    • Ruota le chiavi di ServiceAccount Kubernetes, utilizzate per firmare e verificare le credenziali di ServiceAccount.
    • Ruota la CA del livello di aggregazione.
  • Rotazione degli indirizzi IP:

    • Ruota l'indirizzo IP utilizzato dal piano di controllo per il server API Kubernetes.
    • Ruota la CA radice del cluster.

Per entrambi i tipi di rotazione, i nodi devono essere ricreati prima di poter utilizzare le nuove credenziali.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il gcloud components update comando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.

Eseguire una rotazione degli indirizzi IP

La rotazione degli indirizzi IP è un processo in più passaggi:

  1. Quando avvii una rotazione degli indirizzi IP, il piano di controllo inizia a pubblicare i servizi sul nuovo indirizzo IP oltre che sull'indirizzo IP originale.
  2. GKE ricrea i node pool in modo che utilizzino il nuovo indirizzo IP, rispettando la disponibilità della manutenzione. Puoi anche ricreare manualmente i node pool eseguendo un upgrade della versione pool di nodi alla stessa versione GKE già in esecuzione sui nodi.
  3. Dopo aver avviato una rotazione, devi aggiornare i client API del cluster (ad esempio le macchine di sviluppo che utilizzano l'interfaccia a riga di comando kubectl) in modo che inizino a comunicare con il piano di controllo tramite il nuovo indirizzo IP.
  4. Al termine della rotazione, il piano di controllo smette di pubblicare il traffico con l'indirizzo IP precedente.

Quando avvii una rotazione degli indirizzi IP, GKE ricrea automaticamente i nodi, rispettando la disponibilità della manutenzione. Durante eventi importanti come Google Cloud Next, GKE potrebbe mettere in pausa le ricreazioni automatiche dei nodi per evitare interruzioni. Per saperne di più su come la disponibilità della manutenzione influisce sulla rotazione degli indirizzi IP e sul tipo di interruzione che si verifica nel cluster durante i passaggi di una rotazione, consulta la riga relativa alla rotazione degli indirizzi IP nella tabella delle modifiche manuali che ricreano i nodi utilizzando una strategia di upgrade dei nodi e rispettando le policy di manutenzione. GKE dipende dalla disponibilità delle risorse per l'aggiornamento dei nodi. Per saperne di più sugli aggiornamenti dei nodi, consulta Pianificare le interruzioni degli aggiornamenti dei nodi.

Se non completi una rotazione degli indirizzi IP entro sette giorni dall'inizio, GKE tenta di completarla per te. Se alcuni nodi del cluster utilizzano ancora l'indirizzo IP precedente, l'operazione di completamento automatico non va a buon fine, ma GKE continua a tentare di completarla finché i nodi non vengono ricreati e l'operazione non può essere completata.

Dovresti pianificare di monitorare e completare manualmente la rotazione degli indirizzi IP dopo averla avviata. Puoi sempre ignorare la disponibilità della manutenzione e attivare manualmente passaggi specifici per assicurarti che la rotazione delle credenziali possa essere completata. Non fare affidamento sul completamento automatico, che è una misura di best effort.

Avviare la rotazione

  1. Per avviare una rotazione degli indirizzi IP, esegui questo comando:

    gcloud container clusters update CLUSTER_NAME \
        --start-ip-rotation
    

    Sostituisci CLUSTER_NAME con il nome del cluster.

    L'output è simile al seguente:

    This will start an IP Rotation on cluster CLUSTER_NAME.
    The master will be updated to serve on a new IP address in addition to
    the current IP address. Google Kubernetes Engine will then schedule recreation of all nodes
    to point to the new IP address.  If maintenance window is
    used, nodes are not recreated until a maintenance window occurs. See
    documentation on how to manually update nodes. This operation is
    long-running and will block other operations on the cluster (including
    delete) until it has run to completion.
    Do you want to continue (Y/n)?
    

    Questo comando configura il piano di controllo in modo che utilizzi due indirizzi IP: l'indirizzo originale e un nuovo indirizzo.

  2. Conferma la rotazione e lascia aperta la shell per completare l'operazione.

Riavviare i componenti in-cluster con connessioni a lunga durata

Dopo aver avviato una rotazione degli indirizzi IP o delle credenziali, viene ruotata anche l'autorità di certificazione (CA) del cluster. Alcuni componenti in-cluster che mantengono connessioni TLS a lunga durata, ad esempio metrics-server e konnectivity-agent, potrebbero non considerare automaticamente attendibile la nuova CA del cluster.

Questa situazione può causare il fallimento di queste connessioni durante la comunicazione con i nodi o altri endpoint del cluster e potresti visualizzare errori di handshake TLS nei log dei componenti, ad esempio x509: certificate signed by unknown authority.

Se riscontri questi errori dopo aver avviato una rotazione, potresti dover riavviare manualmente i pod. Un riavvio forza il pod a reinizializzare la connessione e caricare i nuovi certificati CA del cluster. Ad esempio, per riavviare metrics-server e konnectivity-agent, esegui questi comandi:

kubectl rollout restart deployment metrics-server -n kube-system
kubectl rollout restart deployment konnectivity-agent -n kube-system

Ricreare i nodi

Dopo aver riconfigurato il server API in modo che utilizzi un nuovo indirizzo IP, GKE aggiorna automaticamente i nodi in modo che utilizzino il nuovo indirizzo IP. GKE esegue l'upgrade di tutti i nodi alla versione nodo supportata più vicina, il che comporta la ricreazione dei nodi. Per saperne di più, consulta Upgrade dei node pool.

Per impostazione predefinita, GKE completa automaticamente le rotazioni degli indirizzi IP sette giorni dopo l'avvio dell'operazione. Se una periodo di manutenzione o un'esclusione attiva nel cluster impedisce a GKE di ricreare alcuni nodi durante questo periodo di sette giorni, la rotazione degli indirizzi IP inizialmente non viene completata. Tuttavia, GKE continua a tentare di ricreare i nodi e completare la rotazione finché la disponibilità della manutenzione non consente a GKE di procedere.

  • Se utilizzi esclusioni di manutenzione o finestre di manutenzione che potrebbero causare il fallimento della rotazione, esegui manualmente l'upgrade del cluster per forzare la ricreazione dei nodi:

    gcloud container clusters upgrade CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --cluster-version=VERSION
    

    Sostituisci VERSION con la stessa versione GKE già utilizzata dal cluster.

    Per saperne di più, consulta Manutenzione automatica che rispetta le policy di manutenzione di GKE.

Controllare l'avanzamento della ricreazione 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 dei nodi.

  2. Per eseguire il polling dell'operazione, passa l'ID operazione al seguente comando:

    gcloud container operations wait OPERATION_ID
    

I node pool vengono ricreati uno alla volta e ognuno ha la propria operazione. Se hai più node pool, utilizza queste istruzioni per eseguire il polling di ogni operazione.

Aggiornare i client API

Dopo aver avviato la rotazione degli indirizzi IP, devi aggiornare tutti i client API esterni al cluster (ad esempio kubectl sulle macchine degli sviluppatori) in modo che puntino al nuovo indirizzo IP.

Per aggiornare i client API, esegui questo comando per ogni client:

gcloud container clusters get-credentials CLUSTER_NAME

Aggiornare gli indirizzi IP hardcoded e le regole firewall

Se hai codificato l'indirizzo IP del piano di controllo nel tuo ambiente o se hai regole firewall che hanno come target l'indirizzo IP del piano di controllo, aggiorna gli indirizzi al nuovo indirizzo IP. Se completi la rotazione senza aggiornare gli indirizzi IP nelle applicazioni e nelle regole firewall, queste risorse potrebbero subire interruzioni quando GKE smette di pubblicare i servizi sul precedente indirizzo IP del piano di controllo.

Completare la rotazione

Dopo aver aggiornato i client API esterni al cluster, completa la rotazione per configurare il piano di controllo in modo che utilizzi solo il nuovo indirizzo IP.

Per completare la rotazione, esegui questo comando:

gcloud container clusters update CLUSTER_NAME \
    --complete-ip-rotation

L'output è simile al seguente:

This will complete the in-progress IP Rotation on cluster CLUSTER_NAME.
The master will be updated to stop serving on the old IP address and only
serve on the new IP address. Make sure all API clients have been updated
to communicate with the new IP address (e.g. by running `gcloud container
clusters get-credentials --project PROJECT_ID --region COMPUTE_REGION
CLUSTER_NAME`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.

Se la rotazione degli indirizzi IP non viene completata e restituisce un messaggio di errore simile al seguente, consulta Errore 400: il node pool richiede la ricreazione:

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

Se non completi una rotazione degli indirizzi IP entro sette giorni dall'inizio, GKE tenta di completarla per te. Se alcuni nodi in del cluster utilizzano ancora l'indirizzo IP precedente, probabilmente a causa della disponibilità della manutenzione e dei vincoli correlati che impediscono la ricreazione dei nodi, il completamento automatico non va a buon fine, ma GKE continua a tentare di completarla finché i nodi non vengono ricreati e l'operazione non può essere completata.

Passaggi successivi