首页/开发/CI/CD 与发布速查/Flagger 自动金丝雀
发布策略60 条

Flagger 自动金丝雀

以 Operator 方式执行自动金丝雀:接管工作负载后生成稳定版与金丝雀两套后端,按指标自动判定晋级或回滚,也可以按需暂停。

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

Flagger 是什么

以 Operator 方式执行自动金丝雀发布的工具:接管目标工作负载后生成 primary(稳定)与 canary(新版本)两套后端,按指标自动判定晋级或回滚,也可以按需暂停。它把「看指标、逐步放量、按结果决定去留」变成声明式流程。

基本信息

角色自动化金丝雀编排器
结构primary(稳定)与 canary(新版本)
流程放量 → 分析 → 晋级或回滚
集成Prometheus、Datadog 等指标源与通知渠道
指标成功率、延迟等自定义查询
前置需要网关或服务网格支持按权重路由

典型使用场景

  • 自动金丝雀:按指标自动推进或中止
  • 蓝绿路径:以 0/100 权重切换实现切换式发布
  • A/B 场景:按头部或会话特征分组引流
  • 定时放量:按批次逐步推进发布
  • 自动回滚:指标恶化即退回稳定版本
  • 预发校准:先在预发环境磨合阈值再上生产

Canary 资源

Canary 资源
apiVersion: flagger.app/v1beta1
kind: Canary
metadata: {name: web}
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web
  analysis:
    interval: 1m          # 分析间隔
    threshold: 5          # 连续失败次数触发回滚
    maxWeight: 50         # 放量上限
    stepWeight: 10        # 每轮递增比例

分析参数读法

参数含义调参建议
interval分析间隔按指标采集粒度设置
threshold容忍失败次数结合误报率校准
stepWeight每轮放量步长大流量可小步慢走,观察两轮再加速
maxWeight放量上限先到 50 看结果再决定,别一步到 100
自动化判断的前提是可信指标:阈值与窗口先在预发环境校准,再用于生产。
流量路由是前置条件:需要网关或网格支持按权重分流,选型时先确认。
与 Argo Rollouts 定位接近:团队已在 Argo CD 生态里可优先考虑 Rollouts,选型看现有栈。
可暂停分析:怀疑指标噪声时暂停,人工确认后继续,别让自动逻辑背锅,恢复后继续按权重推进。

配套使用要点

  • 触发方式:更新目标工作负载镜像即自动开始一轮分析,CI 推完镜像改引用,发布闭环就转起来
  • 状态查看:kubectl describe canary 名称能看到当前权重、连续失败计数与最近事件,排查先看这里
  • 过程通知:开始、晋级、回滚等事件可推送到协作渠道,值班同学不用盯屏等结果

易错点

  • 阈值未经校准:过松放过问题版本,过紧频繁自动回滚
  • 指标源不稳定:分析阶段数据缺失,晋级判断失真
  • 变更全程无人知晓:自动跑完才看结果,接通知渠道让过程可见
  • 指标不覆盖核心路径:只盯请求成功率,业务异常照样晋级,指标要按业务域补全
  • targetRef 指向错误工作负载:管理了不该管的对象,上线前逐项核对清单

数据来源与参考

  • Flagger 文档《How it works》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌