以 SLO 为发布门禁是什么
把 SLO 指标接入发布过程:灰度阶段发现错误率或延迟超出预算消耗速度时自动暂停推进,让可靠性数据直接参与发布决策。观察指标采用与线上一致的 SLI 口径,判定方式为新版本与基线对比或预算消耗速度;动作包括暂停晋级、告警,必要时自动回滚。误判与漏判都要复盘:根据事故样本校准阈值与窗口。
基本信息
| 观察指标 | 成功率、延迟分位、饱和资源等 SLI |
|---|---|
| 判定 | 与基线对比,或按预算消耗速度判定 |
| 动作 | 暂停晋级、告警,必要时自动回滚 |
| 工具 | Argo Rollouts 分析、Flagger 等 |
| 口径 | 分析阈值从现有 SLO 推导 |
| 数据来源 | 指标系统提供灰度与基线两支序列 |
| 暂停语义 | 暂停不撤流量,确认后继续或回滚 |
| 通知 | 暂停与回滚动作通知发布负责人 |
门禁要素
| 要素 | 来源 | 作用 |
|---|---|---|
| SLI 查询 | 监控系统 | 取灰度与基线数据 |
| 阈值 | SLO 目标推导 | 判定是否超限 |
| 窗口 | 按流量大小设置 | 保证样本量 |
| 动作 | 发布控制器 | 暂停或回滚 |
| 记录 | 分析结果快照 | 支撑复盘与调参 |
分析模板要点
分析模板要点
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata: {name: success-rate}
spec:
metrics:
# 成功率门禁:阈值与 SLO 目标一致
- name: success-rate
interval: 1m
successCondition: result[0] >= 0.99
provider:
prometheus:
address: http://prometheus:9090
query: |
sum(rate(http_requests_total{code!~"5.."}[5m]))
/ sum(rate(http_requests_total[5m]))典型使用场景
- 金丝雀放量:每档晋级前用 SLO 判定,不达标即暂停
- 重大变更:把门禁阈值收紧,先于用户感知异常
- 值班值守:自动门禁替代人工盯盘,夜间发布更稳
- 指标统一:门禁、告警与看板共用同一套 SLI 口径
- 复盘取证:门禁判定记录留存,解释每次暂停的原因
- 多服务复用:模板化分析规则,新服务按模板接入
- 预算联动:错误预算消耗正常时继续,超标时收紧闸门
分析阈值从现有 SLO 推导:保证灰度判定与线上目标一致。门禁是减速带而不是路障:与发布流程配合减少临时人工决策。
预算消耗速度判定要防抖:瞬时波动触发暂停时应结合连续窗口确认。