使用金丝雀发布
简介
金丝雀发布使得通过逐步流量转移和实时监控来控制服务更新的部署。这一功能具有:
- 减少生产环境中的部署风险
- 支持多种发布策略(金丝雀/蓝绿/A/B 测试)
- 提供自动回滚机制
- 与 GitOps 工作流集成
核心价值:安全可观察的服务版本升级
特性
- 手动/自动流量控制模式
- 基于头部/路径的路由规则
- 实时成功率/延迟指标
- 基于 CRD 的 GitOps 配置
优势
精准控制:1% 粒度的流量拆分
可视化:集成监控仪表板
安全性:达到错误阈值时自动回滚
合规性:发布过程中保持安全策略
启用金丝雀发布
步骤 1:访问服务配置
- 导航:服务列表 > 目标服务
- 选择 金丝雀发布 标签
- 点击 启用 以配置发布
步骤 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 控制
- 发布过程中安全策略保持活跃