在 API 伺服器憑證中新增網域

自訂主體別名 (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 伺服器。