学习
路无止境!

没有伞的孩子要学会努力奔跑!


  • 首页

  • 归档

  • 关于我

  • 公益404

  • 搜索

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版本 在这里插入图片描述

  • 文章目录
  • 站点概览
Etaon

Etaon

Kepp Going!

80 日志
15 分类
43 标签
GitHub CSDN
友情链接
  • Kubernetes
  • Cisco
  • W3School
  • 廖雪峰
标签云
  • Mysql
  • Aws
  • Dql
  • Hadoop
  • Kubernetes
  • Nsx t
  • Redis
  • Azure
  • Cicd
  • Git
  • 应用默认目标规则
  • 配置请求路由
    • 仅路由到一个版本
    • 基于用户身份的路由
  • 流量转移
    • 应用基于权重的路由
© 2010 - 2023 路无止境!
Powered by - Hugo v0.101.0 / Theme by - NexT
/
Storage by Azure static web apps /
0%