1. 课程导论:为什么需要零停机证书轮换?

在云原生架构中,TLS/SSL 证书是保障服务间通信安全的核心组件。然而,证书具有有限的生命周期(通常为 90 天至 1 年),到期前必须完成轮换。传统证书轮换方式在 Kubernetes 环境中往往导致服务中断、连接错误甚至安全漏洞。本章将系统分析传统方案的痛点,并引出零停机轮换的必要性。

1.1 证书轮换的基本场景

Kubernetes 集群中证书的使用场景包括:

场景 证书类型 轮换影响范围
Ingress 网关 服务端证书(TLS) 外部流量入口,中断即丢失请求
Service Mesh(如 Istio) mTLS 证书 所有 Sidecar 代理之间的通信
Kube-APIServer CA 证书 + 服务证书 整个控制平面可用性
应用间内部调用 自签或机构签发证书 业务链路上的每个 Pod

无论哪种场景,证书轮换的核心目标都是:在旧证书失效前,新证书已生效且被所有依赖方信任。

1.2 传统证书轮换的典型流程与痛点

传统做法通常包含以下步骤:

  1. 手动或脚本更新 Secret:将新证书内容写入 Kubernetes Secret 对象。
  2. 重启 Pod 或触发重新加载:通过 kubectl rollout restart 或向进程发送 SIGHUP 信号。
  3. 等待所有 Pod 就绪:期间部分 Pod 持有旧证书,部分持有新证书。
  4. 清理旧证书:删除过期 Secret 或等待自动过期。

这一流程存在以下严重风险:

⚠️ 核心风险: 重启 Pod 时,Kubernetes 默认的滚动更新策略无法保证证书切换的原子性。新旧 Pod 同时运行期间,客户端可能连接到持有旧证书的 Pod 而验证失败,导致 502/503 错误或 TLS 握手失败。
痛点 具体表现 影响等级
连接中断 Pod 重启期间,旧 Pod 被终止,新 Pod 尚未就绪,流量丢失 高
证书不一致 同一 Service 后端 Pod 持有不同版本的证书,客户端验证失败 高
手动操作失误 证书内容复制错误、Secret 名称拼错、权限不足 中
回滚困难 新证书有问题时,旧证书已被删除或过期,无法快速恢复 高
监控缺失 证书过期前无告警,轮换过程无可视化追踪 中

1.3 零停机证书轮换的核心目标

零停机证书轮换要求在整个轮换过程中:

  • 流量零丢失:客户端请求始终被正确处理,无 502/503/连接拒绝。
  • 证书一致性:同一 Service 后端的所有 Pod 在同一时间窗口内持有相同的有效证书。
  • 自动且可观测:轮换过程自动化,并提供清晰的进度和健康状态反馈。
  • 快速回滚:新证书出现问题时,能在秒级恢复到旧证书。
💡 关键洞察: 实现零停机轮换的本质是 控制 Pod 的调度顺序与流量切换时机。Kubernetes 的亲和性调度(Node Affinity / Pod Affinity)恰好提供了这种细粒度控制能力。

1.4 传统轮换 vs 零停机轮换对比

维度 传统轮换 零停机轮换(本课程方案)
Pod 重启方式 滚动更新,无顺序控制 基于亲和性分批调度
证书切换时机 Pod 启动后立即切换 等待所有 Pod 就绪后统一切换
流量中断风险 高 零
回滚能力 弱(需手动恢复 Secret) 强(保留旧版本 Pod 副本)
自动化程度 半自动(需手动触发重启) 全自动(Operator 驱动)
传统轮换 vs 零停机轮换流程对比 传统轮换(有停机风险) 1. 更新 Secret(新证书) 2. 滚动重启所有 Pod 3. 新旧 Pod 同时运行 4. 客户端连接失败(502/503) ❌ 服务中断 零停机轮换(本课程方案) 1. 创建新版本 Deployment 2. 亲和性调度:新 Pod 独立部署 3. 新旧 Pod 共存,流量不切换 4. 统一切换 Service 标签选择器 ✅ 零中断完成轮换

1.5 为什么选择 Kubernetes 亲和性调度?

Kubernetes 提供了多种调度策略,但亲和性调度(Affinity)在证书轮换场景中具有独特优势:

  • Pod 反亲和性:确保新旧版本 Pod 不会被调度到同一节点,避免节点级故障影响所有副本。
  • 节点亲和性:将新版本 Pod 固定到特定节点组,便于流量隔离和灰度验证。
  • 拓扑分布约束:控制 Pod 在不同可用区/节点间的分布,保证轮换期间集群整体容量。
📌 课程预告: 从第 2 章开始,我们将深入讲解如何利用 podAntiAffinity 和 nodeAffinity 构建证书轮换的调度策略,并结合 Cert-Manager 与自定义 Operator 实现全自动零停机轮换。

1.6 本章小结

传统证书轮换方式在 Kubernetes 环境中存在连接中断、证书不一致、回滚困难等严重风险。零停机轮换通过控制 Pod 调度顺序和流量切换时机,从根本上解决了这些问题。Kubernetes 亲和性调度提供了实现这一目标的基础能力,是构建高可用证书管理方案的关键技术。