輪替憑證授權單位

Google Distributed Cloud 會使用憑證和私密金鑰,驗證及加密叢集內系統元件之間的連線。叢集憑證授權單位 (CA) 會管理這些憑證和金鑰。執行 bmctl update credentials certificate-authorities rotate 指令時,Google Distributed Cloud 會執行下列動作:

  • 這個指令會建立新的叢集憑證授權單位 (CA),並上傳至管理員叢集的使用者叢集命名空間,包括叢集 CA、etcd CA 和 front-proxy CA。

  • 管理員叢集控制器會以新產生的憑證授權單位,取代使用者叢集憑證授權單位。

  • 管理員叢集控制器會將新的公開 CA 憑證和分葉憑證金鑰組,發布至使用者叢集系統元件。

  • 這項指令也會更新 stackdriver-prometheus-etcd-scrape Secret,這是 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