1. 课程概述:证书轮换的挑战与零停机策略
在生产环境中,TLS/SSL 证书是保障服务间通信安全、防止中间人攻击和数据泄露的核心基础设施。证书具有固定的有效期,一旦过期,客户端将拒绝连接,直接导致服务中断、业务受损。然而,手动或粗暴地替换证书往往伴随着重启进程、重新加载配置等操作,极易引发短暂的流量中断或连接失败。
本课程将深入讲解如何利用 Kubernetes 原生的 Deployment 滚动更新(RollingUpdate)策略,在不中断现有连接的前提下,安全、自动地完成证书轮换,实现真正的零停机运维。
证书轮换的三大痛点
| 痛点 | 描述 | 典型后果 |
|---|---|---|
| 证书过期 | 证书有效期通常为 90 天或 1 年,过期后 TLS 握手失败 | 服务不可用、客户端报错、安全扫描告警 |
| 手动替换风险 | 运维人员登录节点替换证书文件,容易遗漏或操作失误 | 部分 Pod 加载旧证书,导致灰度故障 |
| 重启中断 | 传统方式需要重启进程或重新加载配置,造成连接断开 | 长连接中断、请求超时、业务抖动 |
滚动更新如何实现零停机
Kubernetes Deployment 的滚动更新策略通过逐步替换 Pod 的方式,确保在整个证书轮换过程中始终有健康的 Pod 在处理流量。其核心机制包括:
- 优雅终止(Graceful Shutdown):旧 Pod 在收到 SIGTERM 信号后,先停止接收新连接,等待已有请求处理完毕再退出。
- 就绪探针(Readiness Probe):新 Pod 在加载新证书并通过 TLS 握手验证后,才被标记为 Ready 并加入 Service 端点。
- 逐步扩缩容:通过
maxSurge和maxUnavailable参数控制每次更新的 Pod 数量,保证可用副本数不低于阈值。
关键认知: 滚动更新不是简单地“替换证书文件”,而是通过创建携带新证书的新 Pod,逐步替换运行旧证书的旧 Pod。证书本身通常以 Secret 或 ConfigMap 挂载到 Pod 中,更新 Secret 后触发 Deployment 滚动更新。
本课程涵盖的核心知识点
- Deployment 滚动更新参数详解:
maxSurge、maxUnavailable、minReadySeconds的配置与调优。 - 证书挂载策略:使用 Secret 或 ConfigMap 挂载证书,并通过 hash 或版本号触发更新。
- 优雅终止与探针配合:配置 preStop hook、Readiness Probe 和 Liveness Probe 确保流量无损切换。
- 自动化证书轮换方案:结合 cert-manager 自动签发证书,并通过 Reloader 或自定义控制器触发滚动更新。
- 生产级验证与回滚:灰度验证新证书有效性,以及快速回滚到旧证书的应急方案。
学习目标: 完成本课程后,你将能够独立设计并实施一套基于 Kubernetes 滚动更新的证书轮换流水线,将证书过期导致的停机风险降至零,同时提升运维自动化水平。
适用人群
- Kubernetes 集群管理员与平台运维工程师
- DevOps 工程师与 SRE 工程师
- 对服务高可用、安全运维感兴趣的开发人员
接下来,我们将从 Deployment 滚动更新的底层原理开始,逐步深入到证书轮换的具体实现与最佳实践。