自訂主體別名 (SAN) 可讓您將 API 伺服器憑證涵蓋範圍擴充至其他網域、子網域和 IP 位址。在 Google Distributed Cloud 叢集上,預設 SAN 僅包含控制層節點的 IP 和 VIP 位址,以及標準 Kubernetes DNS 名稱。您可以在建立叢集時或建立後的任何時間,使用叢集設定檔中的可變動 controlPlane.apiServerCertExtraSANs 欄位,設定自訂 SAN。
在建立叢集時新增網域
在建立叢集時新增額外的 SAN,叢集可用時,Kubernetes API 伺服器憑證就會包含額外指定的網域和 IP 位址。
以下範例顯示叢集設定檔中的 apiServerCertExtraSANs 欄位:
...
kind: Cluster
metadata:
name: sample001
namespace: cluster-sample001
spec:
type: user
...
controlPlane:
apiServerCertExtraSANs:
- "demo-dns.example.com"
- "sample-dns.com"
nodePoolSpec:
nodes:
- address: 10.200.0.20
clusterNetwork:
...
為現有叢集新增或更新網域
apiServerCertExtraSANs 欄位可變動,因此您隨時可以為現有叢集新增或更新該欄位。修改叢集中的 apiServerCertExtraSANs 欄位時,會觸發下列活動:
Google Distributed Cloud 叢集控制器會重新產生 API 伺服器憑證,納入修改後的額外網域。
叢集控制器會重新啟動 API 伺服器,重新載入新憑證。
apiServerCertExtraSANs的新值會由 Webhook 驗證,確保符合 RFC 1035 網域名稱慣例。控制層節點集區會進入協調狀態。
Control Plane Node Pool Status: Anthos Bare Metal Version: 1.28.0-gke.435 Anthos Bare Metal Versions: 1.28.0-gke.435: 3 Conditions: ... Last Transition Time: 2023-11-15T18:23:49Z Observed Generation: 1 Reason: Reconciling Status: True Type: Reconciling變更傳播至每個控制層節點上的 Kubernetes API 伺服器後,節點集區就會準備就緒。
Control Plane Node Pool Status: Anthos Bare Metal Version: 1.28.0-gke.435 Anthos Bare Metal Versions: 1.28.0-gke.435: 3 Conditions: . . . Last Transition Time: 2023-11-15T18:32:25Z Observed Generation: 1 Reason: ReconciliationCompleted Status: False Type: Reconciling
更新執行中叢集的 API 伺服器憑證額外 SAN 欄位時,可能會發生停機:
在高可用性 (HA) 叢集上,API 伺服器執行個體會依序重新啟動。憑證更新期間,您仍可與叢集互動,因為負載平衡器會將要求分配給各個 API 伺服器。不過,您可能會看到回應,指出 API 伺服器正在關閉。如果看到這則回應,請重試要求。
在非高可用性叢集上,API 伺服器重新啟動以重新載入新憑證時,可能會短暫中斷約一分鐘。
視叢集中的控制層節點數量和叢集負載而定,這項變更需要 5 到 20 分鐘才會套用至所有 API 伺服器。