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 名称能看到当前权重、连续失败计数与最近事件,排查先看这里
- 过程通知:开始、晋级、回滚等事件可推送到协作渠道,值班同学不用盯屏等结果