主體別名 (SAN) 是 SSL 憑證的一項功能,可讓您定義憑證保護的網域名稱和子網域。在 Google Distributed Cloud 叢集上,Kubernetes API 伺服器憑證的預設 SAN 包括控制層節點的 IP 和 VIP 位址,以及 Kubernetes DNS 名稱。使用自訂 API 伺服器憑證額外 SAN 功能,您可以將其他網域、子網域和 IP 位址新增為叢集的 Kubernetes API 伺服器憑證 SAN。
如要為 API 伺服器憑證指定自訂 SAN,請使用叢集設定規格中的 controlPlane.apiServerCertExtraSANs
欄位。這個欄位會採用網域名稱和 IP 位址清單。這個欄位為選填欄位,且可變更。建立叢集時或之後,您隨時可以新增及更新這個欄位。
...
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:
...
在建立叢集時新增網域
在建立叢集時新增額外 SAN 時,Kubernetes API 伺服器憑證會在叢集可用時,納入額外指定的網域和 IP 位址。
為現有叢集新增或更新網域
由於 apiServerCertExtraSANs
欄位可變動,您隨時可以為現有叢集新增或更新該欄位。修改叢集中的 apiServerCertExtraSANs
欄位時,會觸發下列活動:
Google Distributed Cloud 叢集控制器會重新產生 API 伺服器憑證,並納入修改後的額外網域。
叢集控制器會重新啟動 API 伺服器,重新載入新憑證。
系統會透過 Webhook 驗證
apiServerCertExtraSANs
的新值,確保這些值符合 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 伺服器。