首页/开发/CI/CD 与发布速查/金丝雀中止(Canary Abort)
质量门禁与回滚51 条

金丝雀中止(Canary Abort)

金丝雀阶段指标越界时停止放量并回滚:自动化或人工判定都要定义明确阈值、观察窗口与执行人,并记录触发时的样本。

CI/CD 与发布速查开发更新于 2026-10-13

金丝雀中止是什么

金丝雀中止指金丝雀阶段的指标越界时,立即停止放量并把服务回退到稳定版本。它可以由自动化分析触发(如 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        # 复核发布状态

典型触发方式

  • 自动分析:指标查询满足失败条件时控制器自动中止,适合高频小步发布
  • 人工判定:值班或发布负责人根据大盘与业务反馈决定,适合低频重大变更
  • 告警联动:监控告警直接联动中止流程,缩短异常暴露时间
  • 组合阈值:错误率、延迟、业务成功率任一越界即触发,降低漏判
  • 样本量兜底:流量过低时先扩大观察窗口,再决定是否中止

中止决策要点

环节做法目的
阈值以基线波动范围为参考设定减少把抖动当故障
样本量设最小样本量与窗口下限避免噪声导致误判
执行一键中止并回退到稳定版缩短异常曝光时间
留痕保存触发时的指标快照支撑事后复盘与调参
低流量时段样本不足:阈值判定应结合样本量下限或延长观察窗口,避免把统计噪声当成故障。
中止只是暂停:确认修复后要明确选择「继续放量」还是「彻底回退」,避免悬空状态长期占用两套版本。

易错点

  • 阈值过灵敏:正常抖动即中止,发布频次与团队信心受损
  • 不设样本量下限:低流量服务的统计噪声导致误判
  • 只回退新版本镜像不处理数据变更:结构或消息格式变更残留导致新旧版本行为不一致
  • 中止后未清理流量权重:少量残留流量持续进入问题版本

数据来源与参考

  • Google SRE Workbook《Canarying Releases》
  • Argo Rollouts 文档《Canary》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌