<p>I am using the default bookinfo application <a href="https://istio.io/docs/examples/bookinfo/" rel="nofollow noreferrer">https://istio.io/docs/examples/bookinfo/</a> and trying to test split traffic with the reviews service. Kiali is showing the split and everything seems to be configured correctly but its still doing a round robin. If I remove all virtual services and destination rules, the app works as normally expected. </p>

<pre><code># Source: bookinfo/templates/destination-rule-all.yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: productpage
spec:
  host: productpage
  subsets:
  - name: v1
    labels:
      version: v1
---
# Source: bookinfo/templates/destination-rule-all.yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: ratings
spec:
  host: ratings
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v2-mysql
    labels:
      version: v2-mysql
  - name: v2-mysql-vm
    labels:
      version: v2-mysql-vm
---
# Source: bookinfo/templates/destination-rule-all.yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: details
spec:
  host: details
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
---
# Source: bookinfo/templates/destination-rule-all.yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v3
    labels:
      version: v3
---
# Source: bookinfo/templates/bookinfo-gateway.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
  chart: bookinfo-0.1.2
  release: bookinfo
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
# Source: bookinfo/templates/bookinfo-gateway.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
  chart: bookinfo-0.1.2
  release: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080
---
# Source: bookinfo/templates/virtual-service-all-v1.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: productpage
spec:
  hosts:
  - productpage
  gateways:
  - bookinfo-gateway
  http:
  - route:
    - destination:
        host: productpage
        subset: v1
---
# Source: bookinfo/templates/virtual-service-all-v1.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  gateways:
  - bookinfo-gateway
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 100
    - destination:
        host: reviews
        subset: v2
      weight: 0
    - destination:
        host: reviews
        subset: v3
      weight: 0
---
# Source: bookinfo/templates/virtual-service-all-v1.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: ratings
spec:
  hosts:
  - ratings
  gateways:
  - bookinfo-gateway
  http:
  - route:
    - destination:
        host: ratings
        subset: v1
---
# Source: bookinfo/templates/virtual-service-all-v1.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: details
spec:
  hosts:
  - details
  gateways:
  - bookinfo-gateway
  http:
  - route:
    - destination:
        host: details
        subset: v1

# Source: bookinfo/templates/reviews-v1-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reviews-v1
  labels:
    chart: bookinfo-0.1.2
    release: bookinfo
    app: reviews
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reviews
      release: bookinfo
      version: v1
  template:
    metadata:
      labels:
        app: reviews
        release: bookinfo
        version: v1
    spec:
      serviceAccountName: bookinfo-reviews
      containers:
      - name: reviews
        image: myhub/istio/examples-bookinfo-reviews-v1:1.15.0
        imagePullPolicy: IfNotPresent
        env:
        - name: LOG_DIR
          value: "/tmp/logs"
        ports:
        - containerPort: 9080
        volumeMounts:
        - name: tmp
          mountPath: /tmp
        - name: wlp-output
          mountPath: /opt/ibm/wlp/output
      volumes:
      - name: wlp-output
        emptyDir: {}
      - name: tmp
        emptyDir: {}
---
# Source: bookinfo/templates/reviews-v2-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reviews-v2
  labels:
    chart: bookinfo-0.1.2
    release: bookinfo
    app: reviews
    version: v2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reviews
      release: bookinfo
      version: v2
  template:
    metadata:
      labels:
        app: reviews
        release: bookinfo
        version: v2
    spec:
      serviceAccountName: bookinfo-reviews
      containers:
      - name: reviews
        image: myhub/istio/examples-bookinfo-reviews-v2:1.15.0
        imagePullPolicy: IfNotPresent
        env:
        - name: LOG_DIR
          value: "/tmp/logs"
        ports:
        - containerPort: 9080
        volumeMounts:
        - name: tmp
          mountPath: /tmp
        - name: wlp-output
          mountPath: /opt/ibm/wlp/output
      volumes:
      - name: wlp-output
        emptyDir: {}
      - name: tmp
        emptyDir: {}
---
# Source: bookinfo/templates/reviews-v3-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  metadata:
  name: reviews-v3
  labels:
    chart: bookinfo-0.1.2
    release: bookinfo
    app: reviews
    version: v3
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reviews
      release: bookinfo
      version: v3
  template:
    metadata:
      labels:
        app: reviews
        release: bookinfo
        version: v3
    spec:
      serviceAccountName: bookinfo-reviews
      containers:
      - name: ratings
        image: myhub/istio/examples-bookinfo-reviews-v3:1.15.0
        imagePullPolicy: IfNotPresent
        env:
        - name: LOG_DIR
          value: "/tmp/logs"
        ports:
        - containerPort: 9080
        volumeMounts:
        - name: tmp
          mountPath: /tmp
        - name: wlp-output
          mountPath: /opt/ibm/wlp/output
      volumes:
      - name: wlp-output
        emptyDir: {}
      - name: tmp
        emptyDir: {}
---

</code></pre>

<p>Environment</p>

<p>kind v0.7.0 go1.13.6 linux/amd64</p>

<p>K8s  v1.18.1 v1.17.0 </p>

<p><a href="https://i.stack.imgur.com/rnRjC.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/rnRjC.png" alt="enter image description here"></a></p>

<p><a href="https://i.stack.imgur.com/95heG.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/95heG.png" alt="enter image description here"></a></p>

<p>I tried to reproduce your problem on gke with istio 1.5.2 and everything works fine.</p>

<hr>

<p>I followed istio <a href="https://istio.io/docs/examples/bookinfo/" rel="nofollow noreferrer">bookinfo documentation</a></p>

<pre><code>kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
</code></pre>

<p>As mentioned <a href="https://istio.io/docs/examples/bookinfo/#apply-default-destination-rules" rel="nofollow noreferrer">here</a> </p>

<h2>Apply default destination rules</h2>

<blockquote>
  <p>Before you can use Istio to control the Bookinfo version routing, you need to define the available versions, called subsets, in destination rules.</p>
  
  <p>Run the following command to create default destination rules for the Bookinfo services:</p>
  
  <p>If you did not enable mutual TLS, execute this command:</p>
  
  <p>Choose this option if you are new to Istio and are using the demo configuration profile.</p>
</blockquote>

<pre><code>$ kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
</code></pre>

<blockquote>
  <p>If you did enable mutual TLS, execute this command:</p>
</blockquote>

<pre><code>$ kubectl apply -f samples/bookinfo/networking/destination-rule-all-mtls.yaml
</code></pre>

<blockquote>
  <p>Wait a few seconds for the destination rules to propagate.</p>
  
  <p>You can display the destination rules with the following command:</p>
</blockquote>

<pre><code>$ kubectl get destinationrules -o yaml
</code></pre>

<hr>

<h2>Apply your virtual service for reviews</h2>

<p><strong>Examples</strong></p>

<p>Traffic only for subset v1.</p>

<pre><code>apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
</code></pre>

<p>Traffic only for subset v2.</p>

<pre><code>apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2
</code></pre>

<p>50/50 weight traffic for subset v2 and v3.</p>

<pre><code>apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2
      weight: 50
    - destination:
        host: reviews
        subset: v3
      weight: 50
</code></pre>

<p>100/0/0 weight traffic for subset v1,v2 and v3.</p>

<pre><code>apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2
      weight: 100
    - destination:
        host: reviews
        subset: v3
      weight: 0
    - destination:
        host: reviews
        subset: v1
      weight: 0
</code></pre>

<hr>

<p>With virtual service only for subset v1 Kiali shows traffic goes only to v1</p>

<p><a href="https://i.stack.imgur.com/XKbAZ.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/XKbAZ.png" alt="enter image description here"></a></p>

<p>Istio productpage doesn't show the stars, so it's review v1.</p>

<p><a href="https://i.stack.imgur.com/5to5b.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/5to5b.png" alt="enter image description here"></a></p>

<hr>

<p>There is documentation about <a href="https://istio.io/docs/tasks/traffic-management/traffic-shifting/#apply-weight-based-routing" rel="nofollow noreferrer">weight-based routing</a> for reviews.</p>
