Google Distributed Cloud 會使用憑證和私密金鑰,驗證及加密叢集內系統元件之間的連線。叢集憑證授權單位 (CA) 會管理這些憑證和金鑰。執行 bmctl
update credentials certificate-authorities rotate 指令時,Google Distributed Cloud 會執行下列動作:
這個指令會建立新的叢集憑證授權單位 (CA),並上傳至管理員叢集的使用者叢集命名空間,包括叢集 CA、etcd CA 和 front-proxy CA。
管理員叢集控制器會以新產生的憑證授權單位,取代使用者叢集憑證授權單位。
管理員叢集控制器會將新的公開 CA 憑證和分葉憑證金鑰組,發布至使用者叢集系統元件。
這項指令也會更新
stackdriver-prometheus-etcd-scrapeSecret,這是 Google Distributed Cloud 在建立叢集時建立的 Secret。Prometheus 需要這個密鑰才能收集 etcd 指標。
為維護安全的叢集通訊,請定期輪替使用者叢集 CA,並在可能發生安全性漏洞時進行輪替。
事前準備
輪替叢集的憑證授權單位前,請根據下列條件和影響進行規劃:
開始輪替 CA 前,請確認管理員和使用者叢集為 1.9.0 以上版本。
CA 輪替會逐步進行,系統元件在輪替期間仍可通訊。
CA 輪替會多次重新啟動 API 伺服器、其他控制層程序,以及叢集中的每個節點。CA 輪替的每個階段進展方式,都與叢集升級類似。雖然使用者叢集在 CA 輪替期間仍可運作,但您應預期工作負載會重新啟動及重新排程。
如果使用者叢集沒有高可用性控制層,請預期在 CA 輪替期間,控制層會短暫停機。
CA 輪替期間,不得執行叢集管理作業。
CA 輪替時間取決於叢集大小。舉例來說,如果叢集有一個控制層和 50 個 worker 節點,CA 輪換作業可能需要將近兩小時才能完成。
限制
憑證授權單位輪替功能有下列限制:
CA 輪替不會更新由管理員手動核發的憑證,即使憑證是由叢集 CA 簽署也一樣。使用者叢集 CA 輪替完成後,請更新並重新發布所有手動核發的憑證。
CA 輪替作業一旦開始,就無法暫停或復原。
開始輪替叢集 CA
根據預設,TLS 憑證的有效期限為 1 年,clientconfig-operator 憑證的有效期限則為 10 年 (1.36.100 之前的版本,clientconfig-operator 憑證會在 5 年後到期)。當您輪替憑證授權單位時,Google Distributed Cloud 會更新這些憑證。Google Distributed Cloud 也會在叢集升級期間更新 1 年期 TLS 憑證。如果是 1.36.100 之前的版本,建議您定期升級叢集,確保叢集安全無虞、受到支援,並防止 TLS 憑證過期,且至少每五年執行一次 CA 輪替。
使用下列指令啟動 CA 輪替程序:
bmctl update credentials certificate-authorities rotate --cluster CLUSTER_NAME \
--kubeconfig KUBECONFIG
更改下列內容:
CLUSTER_NAME:要輪替 CA 的叢集名稱。KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑。如果是自行管理的叢集,這個檔案就是叢集的 kubeconfig 檔案。
成功輪替 CA 並產生新的 kubeconfig 檔案後,bmctl 指令就會結束。kubeconfig 檔案的標準路徑為 bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig。
排解叢集 CA 輪替問題
bmctl update credentials 指令會顯示 CA 輪替進度。相關聯的 update-credentials.log 檔案會儲存到下列加上時間戳記的目錄:
bmctl-workspace/CLUSTER_NAME/log/update-credentials-TIMESTAMP