金丝雀中止是什么
金丝雀中止指金丝雀阶段的指标越界时,立即停止放量并把服务回退到稳定版本。它可以由自动化分析触发(如 Argo Rollouts、Flagger 判定失败),也可以由发布负责人人工判定。无论哪种方式,都要事先定义明确的阈值、观察窗口与责任人,并在触发时保留指标与样本快照,供复盘使用。
基本信息
| 触发条件 | 错误率、延迟或业务指标越过阈值,或人工判定 |
|---|---|
| 执行动作 | 停止放量、流量归零、回退到上一个稳定版本 |
| 自动化 | 分析流程失败时由发布控制器自动中止 |
| 留痕 | 记录触发指标、样本量与当时版本 |
| 恢复 | 人工确认后可继续放量或彻底回退 |
中止与回退命令
中止与回退命令
kubectl argo rollouts get rollout web -n prod # 查看当前发布步骤
kubectl argo rollouts abort web -n prod # 中止金丝雀并回零
kubectl argo rollouts undo web -n prod # 回退到上一稳定版本
kubectl argo rollouts promote web -n prod # 人工确认后继续放量
kubectl argo rollouts status web -n prod # 复核发布状态典型触发方式
- 自动分析:指标查询满足失败条件时控制器自动中止,适合高频小步发布
- 人工判定:值班或发布负责人根据大盘与业务反馈决定,适合低频重大变更
- 告警联动:监控告警直接联动中止流程,缩短异常暴露时间
- 组合阈值:错误率、延迟、业务成功率任一越界即触发,降低漏判
- 样本量兜底:流量过低时先扩大观察窗口,再决定是否中止
中止决策要点
| 环节 | 做法 | 目的 |
|---|---|---|
| 阈值 | 以基线波动范围为参考设定 | 减少把抖动当故障 |
| 样本量 | 设最小样本量与窗口下限 | 避免噪声导致误判 |
| 执行 | 一键中止并回退到稳定版 | 缩短异常曝光时间 |
| 留痕 | 保存触发时的指标快照 | 支撑事后复盘与调参 |
低流量时段样本不足:阈值判定应结合样本量下限或延长观察窗口,避免把统计噪声当成故障。
中止只是暂停:确认修复后要明确选择「继续放量」还是「彻底回退」,避免悬空状态长期占用两套版本。