5. 路由流量分配

路由流量分配用于将符合规则的流量按预设比例分发至不同服务子集(如不同版本Pod),支持金丝雀发布、A/B测试、蓝绿部署等场景,通过VirtualService的weight字段配置权重。

5.1 金丝雀发布配置(按权重分配)

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: demo-service-vs
  namespace: default
spec:
  hosts:
  - demo-service
  http:
  - route:
    - destination:
        host: demo-service
        subset: v1 # 稳定版本
      weight: 90 # 90%流量导向v1
    - destination:
        host: demo-service
        subset: v2 # 新版本(金丝雀)
      weight: 10 # 10%流量导向v2

5.2 按条件分流配置(结合匹配规则)

http:
- match:
  - headers:
      X-Test-User:
        exact: "true"
  route:
  - destination:
      host: demo-service
      subset: v2 # 测试用户流量全量导向v2
      weight: 100
- route: # 普通用户流量按比例分配
  - destination:
      host: demo-service
      subset: v1
      weight: 90
  - destination:
      host: demo-service
      subset: v2
      weight: 10

5.3 操作注意事项

  • 同一路由规则下所有子集权重之和需为100,否则配置无效,Istiod会拒绝下发策略。

  • 需提前通过DestinationRule定义服务子集(按Pod标签划分),确保Sidecar能识别目标子集对应的Pod。

  • 流量分配基于Sidecar代理层实现,对客户端透明,可通过Kiali仪表板实时查看流量分配比例。

作者:叶奕珺  创建时间:2026-01-23 14:46
最后编辑:叶奕珺  更新时间:2026-01-30 18:08