Istio的流量镜像也叫影子流量,是将生产的流量镜像拷贝到测试集群或者其他版本中去,简单地说也就是引导实时流量到另一个微服务的版本中去。

将流量路由到reviews:v1版本

我们先应用之前的virtual-service-all-v1.yaml,将流量路由到微服务的v1版本

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: productpage
spec:
hosts:
- productpage
http:
- route:
- destination:
host: productpage
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: details
spec:
hosts:
- details
http:
- route:
- destination:
host: details
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- route:
- destination:
host: ratings
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1

我们刷新下/productage页面,发现流量确实都路由到reviews:v1版本了,看下reviews:v1日志

reviews:v1日志中确实有访问日志,一会我们将流量镜像到reviews:v2版本,目前reviews:v2是没有访问日志的

将流量镜像到reviews:v2版本

应用virtualservice规则

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
mirror:
host: reviews
subset: v2

刷新/productage页面,查看reviews的v1和v2版本的日志

我们发现2个版本的微服务版本日志中都有访问日志的输出,v1访问的流量确实被镜像到了v2版本中去