证书轮换的必要性
在 Kubernetes 声明式管理集群中,证书是控制面组件之间、组件与 kube-apiserver 之间、以及 kubelet 与 apiserver 之间身份认证与通信加密的基石。证书轮换并非可选的运维操作,而是保障集群长期稳定运行、满足安全合规要求的强制性任务。以下从四个核心维度阐述证书轮换的必要性。
一、证书过期风险
Kubernetes 集群默认签发的证书(如 kubelet 证书、apiserver 证书、etcd 证书)通常具有固定的有效期(常见为 1 年)。证书过期后,依赖该证书的组件将无法建立 TLS 连接,直接导致服务中断。
| 证书类型 | 默认有效期 | 过期影响范围 |
|---|---|---|
| kubelet 服务端证书 | 1 年 | kubelet 无法注册到集群,节点状态变为 NotReady |
| apiserver 证书 | 1 年 | kubectl、kubelet、调度器、控制器均无法连接 apiserver |
| etcd 证书 | 1 年 | etcd 集群通信中断,控制面数据不可读写 |
| kubeconfig 用户证书 | 1 年 | 运维人员无法通过 kubectl 管理集群 |
⚠️ 典型事故场景:某生产集群因 kubelet 证书批量过期,导致 30% 节点在 24 小时内陆续进入 NotReady 状态,业务 Pod 被驱逐,核心服务中断 2 小时。事后排查发现证书轮换策略缺失,且未设置证书过期告警。
二、安全合规要求
企业级集群必须满足行业安全标准(如 PCI DSS、SOC 2、ISO 27001、等保 2.0)。这些标准对证书管理有明确要求:
- 证书有效期限制:多数合规框架要求证书有效期不超过 1 年,部分要求不超过 90 天。
- 密钥轮换周期:私钥必须定期轮换,防止密钥泄露后长期有效。
- 证书吊销能力:当证书泄露或组件退役时,必须能立即吊销证书。
- 审计日志:证书的签发、轮换、吊销操作必须记录在审计日志中。
💡 合规实践:在 K8s 集群中,建议将证书有效期设置为 90 天,并配合自动轮换机制。对于金融、医疗等强合规行业,证书有效期应缩短至 30 天,并使用硬件安全模块(HSM)保护私钥。
三、集群稳定性影响
证书过期对集群稳定性的破坏是渐进式且灾难性的。下图展示了证书过期后集群状态的变化路径:
从图中可以看出,证书过期并非单一组件故障,而是会沿着控制面依赖链逐级扩散,最终导致集群整体不可用。更隐蔽的风险在于:
- 证书过期前无预警:K8s 默认不会在证书过期前主动告警,运维人员往往在故障发生后才发现。
- 证书批量过期:同一批次签发的证书会在相近时间点过期,造成大规模故障。
- 证书轮换期间服务中断:手动轮换证书时,如果操作顺序错误或证书不匹配,会导致更长的恢复时间。
四、证书轮换策略
为了规避上述风险,必须制定并实施证书轮换策略。一个完整的证书轮换策略包含以下要素:
| 策略维度 | 推荐做法 | 说明 |
|---|---|---|
| 轮换周期 | 90 天(强合规场景 30 天) | 短周期降低泄露风险,但需配合自动化工具 |
| 轮换方式 | 自动轮换(kubelet 证书轮换 + cert-manager) | 减少人工操作失误,支持证书自动续期 |
| 轮换窗口 | 业务低峰期 + 灰度分批 | 避免一次性轮换所有证书导致集群抖动 |
| 证书备份 | 轮换前备份旧证书和私钥 | 用于回滚场景,防止新证书不兼容 |
| 监控告警 | 证书过期前 30 天、7 天、1 天分级告警 | 通过 Prometheus + cert_exporter 实现 |
| 回滚预案 | 保留上一版本证书,支持快速回切 | 轮换失败时能在 5 分钟内恢复 |
📌 关键原则:证书轮换策略的核心是“自动化 + 可回滚 + 可观测”。手动轮换证书在 10 节点以下集群尚可接受,但在 50 节点以上的生产集群中,必须使用 cert-manager、kubelet 证书轮换控制器等自动化工具。
下图展示了推荐的证书轮换自动化流程:
在实际操作中,证书轮换策略还需要考虑以下细节:
- kubelet 证书轮换:K8s 1.8+ 支持 kubelet 证书自动轮换,需在 kubelet 配置中启用
RotateKubeletServerCertificate和RotateKubeletClientCertificate特性。 - 控制面证书轮换:使用 kubeadm 部署的集群可通过
kubeadm certs renew命令轮换,但需注意 kubeconfig 文件也需要同步更新。 - 证书存储安全:私钥必须加密存储,推荐使用 Kubernetes Secrets 或外部密钥管理服务(如 HashiCorp Vault)。
- 证书吊销列表(CRL):对于高安全环境,应配置 CRL 分发点,支持证书即时吊销。
✅ 最佳实践:在集群初始化时即部署 cert-manager,配置
Certificate 资源对象,设置 renewBefore 为有效期剩余 30 天时自动续期。同时配置 Prometheus 告警规则,监控 certmanager_certificate_expiry_seconds 指标,确保证书过期前有足够时间响应。