Istio学习笔记-Bookinfo Demo测试

在前一篇我们安装好了Istio和Bookinfo测试环境,本篇中我们要对此环境进行条件测试。
原有的环境中,我们对productpage页面时轮询查看的。

应用默认目标规则

目标规则:可以将虚拟服务视为将流量如何路由到给定目标地址,然后使用目标规则来配置该目标的流量。在评估虚拟服务路由规则之后,目标规则将应用于流量的“真实”目标地址。

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: productpage
spec:
  host: productpage
  subsets:
  - name: v1
    labels:
      version: v1
---
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
---
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
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: details
spec:
  host: details
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
---

在reviews的目标规则中,有三个去向,即v1、v2和v3

[root@master01 istio-1.10.3]# kubectl apply -f  samples/bookinfo/networking/destination-rule-all.yaml
destinationrule.networking.istio.io/productpage created
destinationrule.networking.istio.io/reviews created
destinationrule.networking.istio.io/ratings created
destinationrule.networking.istio.io/details created

查看

[root@master01 istio-1.10.3]# kubectl get destinationrules.networking.istio.io
NAME          HOST          AGE
details       details       57s
productpage   productpage   57s
ratings       ratings       57s
reviews       reviews       57s

细节可以用以下命令查看

kubectl get destinationrules -o yaml

配置请求路由

仅路由到一个版本

注意:前提是配置好了应用的Destination Rule

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: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        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: details
spec:
  hosts:
  - details
  http:
  - route:
    - destination:
        host: details
        subset: v1
---

在前面配置reviews的目标规则中,有三个去向,即v1、v2和v3,上面的yaml文件只选择了v1版本。

[root@master01 istio-1.10.3]# kubectl apply -f  samples/bookinfo/networking/virtual-service-all-v1.yaml
virtualservice.networking.istio.io/productpage created
virtualservice.networking.istio.io/reviews created
virtualservice.networking.istio.io/ratings created
virtualservice.networking.istio.io/details created

无论怎么刷新,访问productpage都只在一个v1页面
在这里插入图片描述

基于用户身份的路由

将来自特定用户的所有流量路由到特定服务版本,在这种情况下,来自名为 zyi 的用户的所有流量将被路由到服务 reviews:v2。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: zyi
    route:
    - destination:
        host: reviews
        subset: v2
  - route:
    - destination:
        host: reviews
        subset: v1

路由规则最后定义了默认规则到v1版本。

在这里插入图片描述
在这里插入图片描述
可以看到zyi用户看到的是v2版本。
从Kiali监控也可以看到:
在这里插入图片描述

流量转移

应用基于权重的路由

以下的yaml文件中,配置权重路由将会把 50% 的流量发送到 reviews:v2,另外50% 的流量发送到 reviews:v3。

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
  1. 使用前面用过的仅路由到一个版本,将所有流量导到v1
[root@master01 istio-1.10.3]# kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
virtualservice.networking.istio.io/productpage created
virtualservice.networking.istio.io/reviews created
virtualservice.networking.istio.io/ratings created
virtualservice.networking.istio.io/details created

在这里插入图片描述

  1. 然后,将50% 的流量发送到 reviews:v2,50% 的流量发送到 reviews:v3。
[root@master01 istio-1.10.3]# kubectl apply -f  samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml
virtualservice.networking.istio.io/reviews configured

在这里插入图片描述
在这里插入图片描述

  1. 可以通过应用 Virtual Service 规则将 100% 的流量路由 reviews:v3:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v3

[root@master01 istio-1.10.3]# kubectl apply -f  samples/bookinfo/networking/virtual-service-reviews-v3.yaml
virtualservice.networking.istio.io/reviews configured

无论如何刷新都是v3版本
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值