适用场景
灰度发布的价值是"用少量真实流量验证新版本"。没有指标观察与回滚条件,灰度只是"分两次全量"。
配置步骤(金丝雀放量与观察)
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata: { name: web, namespace: app }
spec:
hosts: [web]
http:
- route:
- destination: { host: web, subset: v1 }
weight: 95
- destination: { host: web, subset: v2 }
weight: 5
关键参数与建议
- 金丝雀:按权重逐步放量(1% → 5% → 25% → 50% → 100%)
- AB 测试:按请求头/用户群体路由(内部用户先试)
- 蓝绿:双环境切换,回滚快但资源占用翻倍
- 观察指标:错误率、P99、业务指标(下单成功率)
- 回滚条件:错误率超阈值或核心指标下降,自动/人工回切
容易踩的坑
- 直接从 50% 起步,风险放大
- 只看技术指标不看业务指标
- 无回滚条件,发现问题时已全量
验证与巡检
istioctl analyze -n app
# 观察:错误率、P99、业务成功率
- 巡检:放量记录、指标对比、回滚预案
小结
灰度发布的验收:每次发布都有"放量节奏 + 指标看板 + 回滚条件"三件套,且实际执行过一次回滚演练。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。