Google Distributed Cloud utilizza certificati e chiavi private per autenticare la comunicazione tra i componenti di sistema Kubernetes in un cluster amministrativo. Quando crei un cluster di amministrazione, vengono creati nuovi certificati delle autorità di certificazione (CA) e questi certificati radice vengono utilizzati per emettere certificati secondari aggiuntivi per i componenti di sistema Kubernetes.
Questa guida si applica solo alla rotazione dei certificati CA del cluster amministrativo. Per i cluster utente, consulta Rotazione dei certificati CA dei cluster utente.
Esistono tre certificati CA utilizzati dal sistema Kubernetes in un cluster amministrativo:
Il certificato CA etcd protegge la comunicazione dal server API Kubernetes alle repliche etcd, nonché la comunicazione tra le repliche etcd. Questo certificato è autofirmato.
Il certificato CA del cluster protegge la comunicazione tra il server API Kubernetes e tutti i client API Kubernetes interni, ad esempio kubelet, il gestore dei controller e lo scheduler. Questo certificato è autofirmato.
Il certificato CA del proxy anteriore protegge la comunicazione con le API aggregate. Questo certificato è autofirmato.
Puoi utilizzare gkectl
per attivare una rotazione dei certificati. Durante una rotazione,
gkectl
sostituisce i certificati CA di sistema di base per il
cluster amministrativo con certificati appena generati. Poi distribuisce i nuovi certificati CA, i certificati a foglia e le chiavi private ai componenti di sistema del cluster amministrativo. 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.
Senza la rotazione, i certificati CA e del piano di controllo scadranno cinque anni dopo la data di creazione del cluster. I certificati del piano di controllo vengono ruotati automaticamente durante un upgrade del cluster, ma le CA non vengono ruotate automaticamente. Ciò significa che una rotazione della CA deve essere eseguita almeno una volta ogni cinque anni, oltre agli upgrade della versione regolari.
Limitazioni
Se hai creato il cluster con
enableAdvancedCluster
impostato sutrue
(obbligatorio per la configurazione dei domini di topologia), la rotazione dei certificati CA non è supportata.La rotazione dei certificati CA è limitata ai certificati etcd, cluster e front-proxy precedentemente menzionati.
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.
La rotazione dei certificati CA riavvia più volte il server API Kubernetes, altri processi di controllo e ogni nodo del cluster di amministrazione. Ogni fase di una rotazione procede in modo simile a un upgrade del cluster. Sebbene il cluster di amministrazione e i cluster utente gestiti dal cluster di amministrazione rimangano operativi durante la rotazione dei certificati, è normale che i workload nel cluster di amministrazione vengano riavviati e riprogrammati. Dovresti anche aspettarti brevi periodi di inattività per il control plane del cluster di amministrazione e per il control plane del cluster utente.
Devi aggiornare il file kubeconfig del cluster di amministrazione durante una rotazione dei certificati e di nuovo al termine della rotazione. Questo accade perché il vecchio certificato del cluster viene revocato e le credenziali nel file kubeconfig non funzioneranno più.
Una volta avviata, la rotazione dei certificati CA non può essere annullata.
La rotazione dei certificati CA potrebbe richiedere molto tempo, a seconda delle dimensioni del cluster.
Se viene interrotta, la procedura di rotazione dei certificati può essere ripresa eseguendo di nuovo lo stesso comando. Tuttavia, devi assicurarti che sia in esecuzione un solo comando di rotazione alla volta.
Avvia la rotazione
Per avviare la rotazione dei certificati, esegui il seguente comando. Esegue la prima metà della rotazione e si ferma in un punto di pausa.
Avvia la rotazione:
gkectl update credentials certificate-authorities rotate \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_CONFIG: il percorso del file di configurazione del cluster di amministrazione
ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione
Se il comando viene interrotto, riavvialo eseguendo lo stesso comando.
Aggiorna il file kubeconfig
Quando il comando precedente viene messo in pausa, aggiorna il file kubeconfig per il cluster amministrativo. Verranno inseriti un nuovo certificato client e un nuovo certificato CA nel file kubeconfig. Il vecchio certificato client viene rimosso dal file kubeconfig e il vecchio certificato CA rimane nel file kubeconfig.
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Continua la rotazione
Esegui il comando seguente per eseguire la seconda metà della procedura. Il
comando non procederà finché gkectl
non avrà verificato che il file kubeconfig aggiornato
si trovi nella directory corrente.
gkectl update credentials certificate-authorities rotate \ --admin-cluster \ --complete \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Se il comando viene interrotto, riavvialo eseguendo lo stesso comando.
Al termine della rotazione, viene segnalata la versione CA corrente.
Aggiorna di nuovo il file kubeconfig
Al termine della seconda metà della rotazione, aggiorna nuovamente il file kubeconfig. In questo modo, il vecchio certificato CA viene rimosso dal file kubeconfig.
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Distribuisci il nuovo file kubeconfig
Distribuisci il nuovo file kubeconfig del cluster di amministrazione a tutti gli utenti del cluster.