Kubernetes 证书自动轮换
本指南将帮助你在 中安装、了解和运行 Kubernetes 证书轮换器,从而自动轮换集群中的 Kubernetes 证书。
从 ACP 4.5 开始,Kubernetes Certificates Rotator 更名为 Cluster Certificate Rotation。从 Customer Portal 下载插件时,请搜索 Cluster Certificate Rotation。在更名之前发布的插件包上传后,在平台中仍会显示为 Kubernetes Certificates Rotator。
安装
请参阅 集群插件,了解安装说明。
注意:
当前支持:
- 本地部署集群
- DCS 集群
工作原理
此插件可自动轮换以下证书。
轮换流程
-
加载证书信息
首先收集所有目标证书的元数据。由于这些证书存储在主机上的不同路径中,因此必须从相应文件读取其内容。为此,系统会在目标节点上创建一个临时 Pod,并挂载证书目录,以便 Pod 读取相关信息。证书信息每天收集一次。证书详细信息(路径、到期时间)保存在 ConfigMap
cpaas-system/node-local-certs-<node-name>中。加密的 CA 证书保存在 Secretcpaas-system/kubernetes-ca中。 -
轮换触发条件
证书的
notBefore和notAfter字段表示有效期。当剩余有效期不足 20% 或少于 30 天时,将触发轮换。 -
轮换队列
需要轮换的证书会加入队列进行处理。轮换程序会评估近期的轮换活动以及待处理任务的紧迫程度,以决定是否立即处理。这样可以避免同时轮换多个证书可能导致的集群健康问题。
-
生成新证书
轮换程序会根据内部存储的 CA 信息生成新证书。轮换过程中,系统会在目标节点上创建一个临时 Pod,并挂载所需的证书目录,以便按受控方式修改文件。
-
重启组件
需要重启:
kube-apiserver:需要重启以加载新证书。重启期间,它会重新生成内部回环证书(有效期为一年,仅供内部使用,无法从外部轮换)。kube-controller-manager:需要重启以重新加载 kubeconfig 文件。kube-scheduler:需要重启以重新加载 kubeconfig 文件。kubelet:需要重启以重新加载服务器证书。
重启方法:在相应静态 Pod 的 YAML 文件中添加注解,触发 kubelet 重新创建 Pod。要重启 kubelet,请使用
hostPID is true挂载主机文件系统,并在容器中运行 "systemctl restart kubelet"。自动重新加载:
- etcd 可以自动重新加载证书。
-
轮换时间
kubelet证书:在第 61 天轮换(有效期为 91 天)- 控制平面证书:在第 292 天轮换(有效期为 365 天)
操作注意事项
如果 kubelet 在轮换窗口期间处于异常状态,无法自动轮换证书,则需要手动轮换:
操作员必须手动续订证书。
运行以下命令手动续订证书:
例如,续订 kubelet.crt:
要下载并准备 cert-renew 工具,请运行:
也可以下载 renew-all.sh,以续订节点上的所有证书: