向 API 服务器证书添加网域

主体备用名称 (SAN) 是 SSL 证书的一项功能,可让您定义由证书提供安全保护的域名和子网域。在 Google Distributed Cloud 集群上,Kubernetes API 服务器证书的默认 SAN 包含控制平面节点的 IP 和 VIP 地址以及 Kubernetes DNS 名称。借助自定义 API 服务器证书额外 SAN 功能,您可以将其他网域、子网域和 IP 地址作为 SAN 添加到集群的 Kubernetes API 服务器证书。

如需为 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 服务器正在关闭。如果您看到此响应,请重试请求。

  • 在非 HA 集群中,在 API 服务器重启以重新加载新证书时,可能会出现大约一分钟的短暂服务中断。

更改需要 5-20 分钟才能传播到所有 API 服务器,具体取决于集群中的控制平面节点数和集群的负载。