主题备用名称 (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 服务器以重新加载新证书。
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 服务器,具体取决于集群中控制平面节点的数量和集群的负载。