天天看点

istio:灰度发布与AB测试

灰度发布

istio:灰度发布与AB测试

只让一部分用户继续使用老版本,一部分用户开始用新版本,如果用户对新版本没有什么意见,那么逐步扩大范围,把所有用户都迁移到新版本上面来

优点:

保证整体系统稳定性

用户无感知,平滑过渡

缺点:

自动化要求高

A/B测试 

istio:灰度发布与AB测试

灰度发布的另一种方式,主要对特定用户采样后,对采集的反馈数据做相关对比,然后根据对比结果做出决策。用来测试应用功能表现的方法,侧重应用的可用性,受欢迎程度等,最后决定是否升级

istio实现灰度发布

istio:灰度发布与AB测试

 用户的请求由gateway转发到虚拟服务(virtual service)中,在虚拟服务中定义了版本的权重和目标规则(destination rule),找到指定的目标规则后,通过k8s中标签找到指定的pod,实现不同权重的服务转发

istio实现AB测试

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason           #指定用户jason登录为v2版本,其他用户登录为v1版本
    route:
    - destination:
        host: reviews
        subset: v2
  - route:
    - destination:
        host: reviews
        subset: v3
           

 AB测试的配置方法其实很简单,只要修改虚拟服务(virtual Service)中的配置就可以了

istio实现流量复制

将请求复制一份,并根据策略来处理这个请求,不会影响真是请求

应用场景:

线上问题排查

用真实的流量验证应用功能是否正常

对镜像环境压力测试

收集真实流量数据进行分析

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: nginx
spec:
  hosts:
  - "*"
  gateways:
  - nginx
  http:
  - route:
    - destination:
        host: nginx
        subset: v1
      weight: 100
#复制v1的流量到v2
    mirror:
      host: nginx
      subset: v2
    mirror_percent: 100
           

同样要修改虚拟服务(virtual Service)中的配置就可以了

继续阅读