2. 核心概念:TLS/SSL证书生命周期、轮换策略与调度器角色
在构建基于 Prometheus 指标的证书轮换调度器之前,必须精确理解 TLS/SSL 证书从颁发到销毁的完整生命周期,以及不同轮换策略对服务可用性的影响。调度器的核心职责正是围绕这些生命周期阶段和策略约束进行编排与度量。
2.1 TLS/SSL 证书生命周期
一个典型的证书生命周期包含以下阶段,每个阶段都对应调度器需要监控或触发的关键事件:
| 阶段 | 描述 | 调度器关注点 |
|---|---|---|
| 1. 证书请求 (CSR) | 生成密钥对并提交证书签名请求 | 触发 CSR 生成,记录请求延迟 |
| 2. 颁发 (Issue) | CA 签发证书,返回 PEM 文件 | 监控颁发成功率与耗时 |
| 3. 部署 (Deploy) | 将证书写入目标位置(文件、Secret、Envoy SDS) | 确保写入原子性,避免部分更新 |
| 4. 生效 (Activate) | 服务加载新证书,开始使用 | 验证生效时间,记录生效延迟 |
| 5. 监控 (Monitor) | 持续检查证书剩余有效期 | Prometheus 指标:cert_expiry_seconds |
| 6. 轮换 (Rotate) | 在过期前替换为新的证书 | 触发轮换策略,记录轮换耗时 |
| 7. 撤销/销毁 (Revoke/Destroy) | 旧证书过期或泄露后废弃 | 清理旧证书,避免残留 |
关键指标映射: 调度器应暴露
cert_lifetime_seconds(证书总有效期)、cert_remaining_seconds(剩余时间)、cert_rotation_duration_seconds(轮换耗时)三个基础 Prometheus Gauge/Histogram 指标。
2.2 轮换策略:热替换 vs 冷替换
证书轮换策略直接影响服务的停机窗口和调度器的性能基准。两种策略在可用性、复杂度和指标特征上存在本质差异:
| 维度 | 热替换 (Hot Swap) | 冷替换 (Cold Swap) |
|---|---|---|
| 服务中断 | 零中断,连接平滑迁移 | 需要重启或重载服务,存在短暂中断 |
| 实现机制 | Envoy SDS、Nginx reload、gRPC 证书回调 | 重启进程、重新加载配置文件 |
| 轮换耗时 | 毫秒级(通常 < 100ms) | 秒级到分钟级(取决于启动时间) |
| 连接保持 | 旧连接继续使用旧证书,新连接使用新证书 | 所有连接断开重建 |
| 调度器复杂度 | 高(需协调新旧证书共存窗口) | 低(直接替换后触发重载) |
| 适用场景 | 高可用网关、实时交易系统 | 内部服务、批处理任务、开发环境 |
| Prometheus 指标特征 | rotation_duration 低方差 |
rotation_duration 高方差,伴随 up 抖动 |
性能基准测试陷阱: 冷替换场景下,调度器的轮换耗时指标可能被服务重启时间主导。基准测试必须区分“调度器决策耗时”和“服务生效耗时”,否则会得到误导性的 P99 延迟数据。
2.3 调度器的角色与职责
证书轮换调度器不是简单的定时任务,而是一个具备感知、决策、执行、度量能力的控制平面组件。其核心角色可分解为:
- 感知器 (Sensor):通过 Prometheus 指标或直接读取证书文件,感知证书剩余有效期、即将过期事件。
- 决策器 (Decider):基于配置的轮换策略(热/冷)、过期阈值、重试策略,决定何时触发轮换。
- 执行器 (Executor):调用底层接口(如 Kubernetes Secret 更新、Envoy SDS 推送、文件写入)完成证书替换。
- 验证器 (Validator):轮换后验证新证书是否生效、连接是否正常、旧证书是否已废弃。
- 度量器 (Meter):暴露 Prometheus 指标,记录轮换次数、耗时、成功率、证书剩余时间等。
2.4 调度器与 Prometheus 指标的映射关系
每个调度器角色都对应一组 Prometheus 指标,用于性能基准测试的量化分析:
| 角色 | 关键 Prometheus 指标 | 指标类型 | 基准测试用途 |
|---|---|---|---|
| 感知器 | cert_check_duration_seconds |
Histogram | 评估证书扫描频率与延迟 |
| 决策器 | rotation_decision_duration_seconds |
Histogram | 衡量策略计算开销 |
| 执行器 | rotation_execution_duration_seconds |
Histogram | 衡量底层接口调用性能 |
| 验证器 | rotation_validation_duration_seconds |
Histogram | 验证生效延迟 |
| 度量器 | rotation_total (Counter) |
Counter | 统计轮换次数与成功率 |
基准测试设计提示: 在后续章节中,我们将为每个角色构建独立的性能测试用例,使用
promhttp_metric_handler_requests_total 和自定义 Histogram 指标来量化调度器在不同证书数量(100、1000、10000)和不同轮换策略下的吞吐量与延迟分布。