Rotazione delle autorità di certificazione dei cluster utente

Google Distributed Cloud utilizza certificati e chiavi private per autenticare e criptare le connessioni tra i componenti di sistema nei cluster utente. Il cluster di amministrazione crea un nuovo insieme di autorità di certificazione (CA) per ogni cluster utente e utilizza i certificati CA per emettere certificati aggiuntivi per i componenti di sistema. Il cluster di amministrazione gestisce la distribuzione dei certificati CA pubblici e delle coppie di chiavi dei certificati principali ai componenti di sistema per stabilire la loro comunicazione sicura.

La funzionalità di rotazione dell'autorità di certificazione dei cluster utente consente di attivare una rotazione dei certificati di sistema di base in un cluster utente. Durante un la rotazione, il cluster di amministrazione sostituisce le CA principali del sistema per il cluster utente con le nuove CA generate e distribuisce i nuovi certificati CA pubblici di coppie di chiavi dei certificati foglia ai componenti di sistema del cluster utente. La rotazione avviene in modo incrementale, in modo che i componenti di sistema possano continuare a comunicare durante la rotazione. Tieni presente, tuttavia, che i carichi di lavoro e i nodi vengono riavviati durante la rotazione.

Esistono tre CA di sistema gestite dal cluster di amministrazione per ogni cluster utente:

  • La CA etcd protegge la comunicazione dal server API alle repliche etcd e anche il traffico tra le repliche etcd. Questa CA è autofirmata.
  • La CA del cluster protegge le comunicazioni tra il server API e tutti i server Client API Kubernetes (kubelet, controller, scheduler). Questa CA è autofirmata.
  • La CA del proxy frontale protegge la comunicazione con API aggregate. Questa CA è autofirmata.

Inoltre, potresti utilizzare un'autorità di certificazione dell'organizzazione per firmare il certificato configurato dall'opzione authentication.sni. Questa CA e il certificato SNI vengono utilizzati per gestire l'API Kubernetes ai client all'esterno del cluster. Gestisci questa CA e generi manualmente l'SNI certificato. L'utente non ha alcun impatto su questa CA e sul certificato SNI la funzionalità di rotazione CA del cluster.

Limitazioni

  • La rotazione del certificato CA è limitata a etcd, cluster e CA front-proxy menzionate in precedenza.

  • La rotazione dei certificati CA è limitata ai certificati emessi automaticamente da Google Distributed Cloud. Non aggiorna i certificati emessi manualmente da un amministratore, anche se sono firmati dalle CA di sistema.

  • Una rotazione della CA riavvia il server API, altri processi del piano di controllo e ogni nodo del cluster più volte. Ogni fase della rotazione delle CA procede in modo simile a un upgrade del cluster. Sebbene il cluster utente rimanga operativo durante la rotazione dell'autorità di certificazione, è normale che i carichi di lavoro vengano riavviati e riprogrammati. Dovresti anche aspettarti brevi periodi di tempo di inattività del piano di controllo se il cluster utente non ha un piano di controllo per l'alta disponibilità.

  • Devi aggiornare il file kubeconfig del cluster utente e i file di configurazione dell'autenticazione dopo una rotazione della CA. Questo perché il cluster precedente è revocato e le credenziali nel file kubeconfig non più a lungo.

  • Una volta avviata, la rotazione della CA non può essere messa in pausa o annullata.

  • Il completamento di una rotazione CA potrebbe richiedere molto tempo, a seconda delle dimensioni per il cluster utente.

Esegui una rotazione CA

  1. Avvia la rotazione:

    gkectl update credentials certificate-authorities rotate \
        --config USER_CLUSTER_CONFIG \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Sostituisci quanto segue:

    • USER_CLUSTER_CONFIGE: il percorso del cluster utente file di configurazione

    • ADMIN_CLUSTER_KUBECONFIG: il percorso del cluster di amministrazione File kubeconfig

    Se la rotazione della CA si avvia correttamente, viene visualizzato un messaggio simile al seguente:

    successfully started the CA rotation with CAVersion 2, use gkectl update credentials certificate-authorities status command to view the current state of CA rotation
    

    Se è già in corso una rotazione della CA, viene visualizzato un messaggio di errore simile al seguente:

    Exit with error:
    admission webhook "vonpremusercluster.onprem.cluster.gke.io" denied the request: requests must not modify CAVersion when cluster is not ready: ready condition is not true: ClusterCreateOrUpdate: Creating or updating user cluster control plane workloads
    
  2. Visualizza lo stato della rotazione:

    gkectl update credentials certificate-authorities status \
        --config USER_CLUSTER_CONFIG \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Il comando precedente riporta il valore CAVersion, che è un numero intero incrementato automaticamente dal sistema per distinguere le CA utilizzate prima e dopo una rotazione. Il comando riporta anche uno stato (True o False) che indica se la rotazione della CA è completata e un messaggio che descrive quale CAVersion è attualmente in uso da ciascun componente del sistema.

    Se la rotazione CA è già stata completata, viene visualizzato un messaggio simile a questo:

    State of CARotation with CAVersion 2 is -
    status: True,
    reason: CARotationCompleted,
    message: Control plane has CA bundle [2], certs from CA 2, CA 2 is CSR signer. Data plane has CA bundle [2], CA 2 was CSR signer at last restart.
    

    Se la rotazione della CA è ancora in corso, verrà visualizzato un messaggio simile al seguente:

    State of CARotation with CAVersion 2 is -
    status: False,
    reason: CARotationProgressed,
    message: Control plane has CA bundle [1 2], certs from CA 2, CA 1 is CSR signer. Data plane has CA bundle [1 2], CA 1 was CSR signer at last restart.
    

Aggiorna le credenziali del cluster utente

Al termine della rotazione della CA, devi ottenere un nuovo kubeconfig del cluster utente dal cluster di amministrazione. Questo accade perché la rotazione dell'autorità di certificazione revoca l'autorità di certificazione su cui si basava il vecchio file kubeconfig.

Ottieni un nuovo file kubeconfig:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secret admin \
    -n USER_CLUSTER_NAME -o jsonpath='{.data.admin\.conf}' \
    | base64 --decode > USER_CLUSTER_NAME-kubeconfig

Distribuisci il nuovo file kubeconfig a chiunque utilizzi un file kubeconfig per a interagire con il cluster.

Aggiorna i file di configurazione dell'autenticazione

Al termine della rotazione della CA, i file di configurazione dell'autenticazione devono essere aggiornati e ridistribuiti. Segui le istruzioni linkate per aggiornare e ridistribuire questi file dopo la rotazione della CA:

Rotazione dei certificati del piano di controllo

Senza rotazione, sia le CA del cluster utente sia i certificati del piano di controllo scadono cinque anni dopo la data di creazione del cluster. Il cluster utente vengono ruotati automaticamente entro dieci ore dall'inizio dell'upgrade del cluster utente, ma le CA non vengono ruotate automaticamente. Ciò significa La rotazione della CA deve essere eseguita almeno una volta ogni cinque anni, oltre a gli upgrade della versione standard.

Per evitare che un cluster utente non sia più disponibile, i certificati del piano di controllo vengono ruotati entro dieci ore dall'upgrade del cluster utente. In questo caso, viene visualizzato un messaggio nello stato di rotazione della CA del cluster di utenti.

Per visualizzare l'ultima versione a cui è stato eseguito l'upgrade di un cluster utente quando è stato eseguito il piano di controllo certificati sono stati ruotati:

gkectl update credentials certificate-authorities status \
--config USER_CLUSTER_CONFIG \
--kubeconfig ADMIN_CLUSTER_KUBECONFIG

Le informazioni vengono visualizzate alla fine del campo message entro dieci ore da un upgrade. Ad esempio:

Last Leaf Certificates Rotation Version: 1.16.0-gke.0.

Risolvere i problemi relativi alla rotazione delle CA

Il comando gkectl diagnose supporta il controllo dello stato previsto di un la rotazione CA completata su un cluster utente. Per istruzioni su come eseguire gkectl diagnose su un cluster utente; consulta Diagnosticare i problemi del cluster. Se riscontri problemi con una rotazione di CA, contatta l'Assistenza Google e fornisce l'output gkectl diagnose.