结合Waypoint和虚拟服务管理集群内的东西向流量

ASM中安装了Waypoint代理后,您可以使用7层负载均衡实现服务之间按比例分发流量。本文介绍如何为Bookinfo应用配置服务间按比例分发流量。

前提条件

操作步骤

Bookinfo应用有三个版本的reviews服务。以下步骤将通过部署虚拟服务来按比例的在v1v2版本之间分配流量。

  1. 配置流量规则,将目标为reivews服务的请求90%发往reviews-v1,10%发往reviews-v2

    kubectl apply -f - <<EOF
    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
        - reviews
      http:
        - name: route
          route:
            - destination:
                host: reviews-v1
              weight: 90
            - destination:
                host: reviews-v2
              weight: 10
    EOF
  2. sleep发起100个请求。

    export RESULT=$(kubectl exec deploy/sleep -- sh -c "for i in \$(seq 1 100); do curl -s http://productpage:9080/productpage | grep reviews-v.-; done")
  3. 验证流量比例。

    由于每次访问Bookinfo应用时,会返回两个相同的reviews版本。因此2中命令的输出数量为200个。
    1. 查看reviews-v1的数量。

      echo $RESULT|grep reviews-v1 |wc -l

      预期输出:

      178
    2. 查看reviews-v2的数量。

      echo $RESULT|grep reviews-v2 |wc -l

      预期输出:

      22

      可以看到reviews-v1reviews-v2的数量比例大约为9:1,与虚拟服务中配置的权重相同。