使用 Canary Release

目录

介绍

Canary Release 通过渐进式流量切换和实时监控,实现对服务更新的受控部署。该功能:

  • 降低生产环境部署风险
  • 支持多种发布策略(canary/蓝绿/A/B 测试)
  • 提供自动回滚机制
  • 集成 GitOps 工作流

核心价值:安全且可观测的服务版本升级

功能

  • 手动/自动流量控制模式
  • 基于 Header/路径的路由规则
  • 实时成功率/延迟指标
  • 基于 CRD 的 GitOps 配置

优势

精确控制:1% 粒度的流量拆分
可视化:集成监控面板
安全性:错误阈值自动回滚
合规性:发布过程中保持安全策略

启用 Canary Release

步骤 1:访问服务配置

  1. 导航至:服务列表 > 目标服务
  2. 选择 Canary Release 标签页
  3. 点击发布配置下的 启用

步骤 2:配置发布参数

analysis:
  interval: 2m
  maxWeight: 50
  stepWeight: 10
  threshold: 10
maxResponseTime: 500
minSuccessRate: 95
参数是否必填默认值描述
interval2m流量切换间隔
maxWeight50%推广阈值
threshold10最大允许错误数

路由配置管理

流量分配

http:
- route:
  - destination: reviews-primary
    weight: 80
  - destination: reviews-canary
    weight: 20

基于 Header 的路由

- 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
字段有效值描述
promoteControluser/system发布确认模式
trafficControluser/system流量管理模式

监控与验证

关键指标

指标计算方式阈值
成功率2xx/总请求数>95%
延迟avg(response_time)<500ms
错误数5xx 计数<10/周期

发布状态

  1. 初始化 ➔ 2. 进行中 ➔ 3. 推广中 ➔ 4. 完成
kubectl get canarydeliveries -n prod

运行限制

  • 与现有服务路由不兼容
  • 需保证集群内服务名称唯一
  • GitOps 管理的服务 UI 控制受限
  • 发布过程中安全策略持续生效