Google Distributed Cloud 會使用憑證和私密金鑰,驗證管理叢集中 Kubernetes 系統元件之間的通訊。建立管理員叢集時,系統會建立新的憑證授權單位 (CA) 憑證,並使用這些根憑證為 Kubernetes 系統元件核發額外的葉憑證。
本指南僅適用於管理員叢集 CA 憑證輪替。如要瞭解使用者叢集,請參閱「輪替使用者叢集 CA 憑證」。
管理叢集中的 Kubernetes 系統會使用三種 CA 憑證:
etcd CA 憑證可確保 Kubernetes API 伺服器與 etcd 副本之間的通訊安全,以及 etcd 副本之間的通訊安全。這個憑證是自行簽署的憑證。
叢集 CA 憑證可確保 Kubernetes API 伺服器與所有內部 Kubernetes API 用戶端 (例如 kubelet、控制器管理工具和排程器) 之間的通訊安全無虞。這個憑證是自行簽署。
前端 Proxy CA 憑證可確保與匯總 API 的通訊安全。這個憑證是自行簽署。
您可以使用 gkectl
觸發憑證輪替。輪替期間,gkectl
會以新產生的憑證,取代管理員叢集的核心系統 CA 憑證。然後將新的 CA 憑證、葉子憑證和私密金鑰,發布至管理叢集系統元件。輪替作業會逐步進行,因此系統元件在輪替期間仍可繼續通訊。但請注意,輪替期間會重新啟動工作負載和節點。
如果沒有輪替,CA 憑證和控制層憑證會在叢集建立五年後失效。叢集升級期間,控制層憑證會自動輪替,但 CA 不會自動輪替。也就是說,除了定期升級版本外,您也必須至少每五年執行一次 CA 輪替。
限制
請注意,進階叢集有下列限制:
- 1.31 版:進階叢集不支援 CA 輪替。
- 1.32 以上版本:進階叢集支援 CA 輪替,但本文件會視情況註明一些細微差異。
CA 憑證輪替僅限於先前提及的 etcd、叢集和前端 Proxy 憑證。
CA 憑證輪替僅限於由 Google Distributed Cloud 自動核發的憑證。即使憑證是由系統 CA 簽署,系統也不會更新管理員手動核發的憑證。
CA 憑證輪替會多次重新啟動 Kubernetes API 伺服器、其他控制層程序,以及管理員叢集中的每個節點。輪替的每個階段都與叢集升級的進展類似。雖然在憑證輪替期間,管理員叢集和由管理員叢集管理的使用者叢集仍會保持運作,但管理員叢集中的工作負載會重新啟動並重新排程。管理員叢集控制層和使用者叢集控制層也可能會短暫停機。
您必須在憑證輪替期間更新管理員叢集 kubeconfig 檔案,輪替完成後也必須再次更新。這是因為舊叢集憑證已遭撤銷,且 kubeconfig 檔案中的憑證將無法再運作。
啟動 CA 憑證輪替後,就無法復原。
視叢集大小而定,CA 憑證輪替作業可能需要相當長的時間才能完成。
如果憑證輪替程序中斷,可以重新執行相同指令,繼續完成程序。不過,請務必確保一次只執行一個旋轉指令。
啟動輪替
如要啟動憑證輪替,請執行下列指令:
gkectl update credentials certificate-authorities rotate \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
更改下列內容:
ADMIN_CLUSTER_CONFIG:管理員叢集設定檔的路徑
ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑
指令的行為會因是否啟用進階叢集而異:
未啟用
gkectl update credentials certificate-authorities rotate
指令會啟動並執行輪替作業的前半段。然後,指令會暫停,讓您執行下一個指令來更新 kubeconfig 檔案。
更新 kubeconfig 檔案
gkectl update credentials certificate-authorities rotate
指令暫停時,請更新管理員叢集的 kubeconfig 檔案。這會在 kubeconfig 檔案中放置新的用戶端憑證和新的 CA 憑證。舊的用戶端憑證會從 kubeconfig 檔案中移除,舊的 CA 憑證則會保留在 kubeconfig 檔案中。
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
繼續輪替
執行下列指令,完成程序的後半部分。gkectl
驗證更新後的 kubeconfig 檔案位於目前目錄中後,指令才會繼續執行。
gkectl update credentials certificate-authorities rotate \ --admin-cluster \ --complete \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
輪替完成後,系統會回報目前的 CA 版本。
再次更新 kubeconfig 檔案
第二次輪替完成後,請再次更新 kubeconfig 檔案。這會從 kubeconfig 檔案中移除舊的 CA 憑證。
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
已啟用
如果啟用進階叢集,gkectl update credentials
certificate-authorities rotate
指令會同步執行。指令會將狀態訊息輸出至管理員工作站,顯示 CA 輪替進度。
CA 成功輪替後,指令會結束,並自動產生新的 kubeconfig 檔案。您在指令中指定的 kubeconfig 檔案會替換為新檔案。指令會輸出類似以下的結果:
Beginning CA rotation with generated CA ... Successfully rotated CA for admin cluster. The kubeconfig file "/home/ubuntu/kubeconfig" has been updated. Done rotating certificate-authorities
發布新的 kubeconfig 檔案
將新的管理員叢集 kubeconfig 檔案發布給所有叢集使用者。