Argo Rollouts 是什么
Argo Rollouts 是 Kubernetes 的渐进式发布控制器与 CRD:用 Rollout 资源声明式描述金丝雀与蓝绿流程,支持按步骤调权重(setWeight)、定时暂停(pause)、自动分析(analysis),配套 CLI 查询状态、晋级(promote)与中止(abort)。金丝雀在没有流量治理组件时按副本数近似权重;接入流量治理(服务网格、Ingress、Gateway 等)后可按真实比例切流。AnalysisTemplate 对接指标源,分析不达标可自动中止并回滚。它取代 Deployment 管理副本,迁移时要同步调整发布入口与权限。
基本信息
| 金丝雀 | steps 组合 setWeight / pause / analysis |
|---|---|
| 蓝绿 | activeService 与 previewService 服务切换 |
| 操作 | kubectl argo rollouts get / promote / abort |
| 分析 | AnalysisTemplate 对接指标源,失败自动中止 |
| 依赖 | 安装控制器;精确切流依赖流量治理集成 |
典型使用场景
- 定时暂停放量:pause 固定时长后自动继续下一档。
- 指标自动判定:analysis 用错误率与延迟决定晋级或中止。
- 蓝绿切换:新环境全量就绪后一次切流,回滚只需切回旧服务。
- 无网格近似灰度:没有流量组件时用副本比例近似权重。
- 发布可追踪:发布历史与步骤状态都记录在资源里。
- 迁移过渡:从 Deployment 平滑迁移到 Rollout 并复用模板。
金丝雀步骤
金丝雀步骤
spec:
strategy:
canary:
steps:
- setWeight: 10
- pause: {duration: 30m}
- analysis:
templates:
- templateName: success-rate # 不达标自动中止策略对比
| 维度 | 金丝雀 | 蓝绿 |
|---|---|---|
| 流量控制 | 按比例或副本近似 | 两套服务整体切换 |
| 回滚速度 | 撤权重或缩副本 | 切回旧服务,较快 |
| 资源成本 | 少量额外副本 | 新环境全量复制 |
| 适用 | 在线服务日常发布 | 重要版本与快速回滚 |
Rollout 接管副本管理:替换原 Deployment 后,发布入口、权限与监控都要同步调整。
pause 不设时长就要人工晋级:无人负责时版本会长时间停在中间步骤,交接与超时策略先定好。
没有流量治理时权重按副本近似:副本比例不等于精确流量比例,实例数少了会更粗糙。