使用 Canary Release
目录
介绍
Canary Release 通过渐进式流量切换和实时监控,实现对服务更新的受控部署。该功能:
- 降低生产环境部署风险
- 支持多种发布策略(canary/蓝绿/A/B 测试)
- 提供自动回滚机制
- 集成 GitOps 工作流
核心价值:安全且可观测的服务版本升级
功能
- 手动/自动流量控制模式
- 基于 Header/路径的路由规则
- 实时成功率/延迟指标
- 基于 CRD 的 GitOps 配置
优势
精确控制:1% 粒度的流量拆分
可视化:集成监控面板
安全性:错误阈值自动回滚
合规性:发布过程中保持安全策略
启用 Canary Release
步骤 1:访问服务配置
- 导航至:服务列表 > 目标服务
- 选择 Canary Release 标签页
- 点击发布配置下的 启用
步骤 2:配置发布参数
analysis:
interval: 2m
maxWeight: 50
stepWeight: 10
threshold: 10
maxResponseTime: 500
minSuccessRate: 95
参数 | 是否必填 | 默认值 | 描述 |
---|
interval | 是 | 2m | 流量切换间隔 |
maxWeight | 是 | 50% | 推广阈值 |
threshold | 是 | 10 | 最大允许错误数 |
路由配置管理
流量分配
http:
- route:
- destination: reviews-primary
weight: 80
- destination: reviews-canary
weight: 20
- match:
- headers: { "user-type": "internal" }
route:
◦ destination: reviews-canary
基于路径的测试
- match:
- uri: { prefix: "/api/v2" }
route:
◦ destination: reviews-canary
weight: 20
CanaryDelivery CRD 参考
元数据要求
字段 | 约束 | 示例 |
---|
name | 必须与服务名称匹配 | reviews |
namespace | 必须与服务命名空间匹配 | prod |
规格详情
spec:
delivertype: canary
targetRef:
name: reviews-v1
trafficControl: system
字段 | 有效值 | 描述 |
---|
promoteControl | user/system | 发布确认模式 |
trafficControl | user/system | 流量管理模式 |
监控与验证
关键指标
指标 | 计算方式 | 阈值 |
---|
成功率 | 2xx/总请求数 | >95% |
延迟 | avg(response_time) | <500ms |
错误数 | 5xx 计数 | <10/周期 |
发布状态
- 初始化 ➔ 2. 进行中 ➔ 3. 推广中 ➔ 4. 完成
kubectl get canarydeliveries -n prod
运行限制
- 与现有服务路由不兼容
- 需保证集群内服务名称唯一
- GitOps 管理的服务 UI 控制受限
- 发布过程中安全策略持续生效