前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >外包精通--Istio流量管理之请求路由(一)

外包精通--Istio流量管理之请求路由(一)

原创
作者头像
Godev
修改2023-07-31 19:27:34
5350
修改2023-07-31 19:27:34
举报
文章被收录于专栏:GodevGodev

该任务展示了如何路由请求,来动态的到一个微服务的多个版本。

1. 开始准备工作
  1. 安装Istio
  2. 部署Bookinfo的案例应用
  3. 充分掌握前面的说的原理,及熟悉destionation rulevirtual servicesubnet.
2. 关于该任务

istio Bookinfo案例包含4个微服务,其中reviews有三个不同的版本。要说明这导致的问题,在浏览器中访问Bookinfo应用程序的/productpage并刷新几次。你会注意到,有时书评输出包含星级评级,有时不包含。这是因为如果没有显式的默认服务版本来路由,Istio就会以循环的方式将请求路由到所有可用的版本。

此任务的初始目标是应用将所有流量路由到微服务的v1(版本1)的规则。稍后,您将根据HTTP请求头的值将规则应用于路由流量。

1. 应用虚拟服务

要仅路由到一个版本,需要应用虚拟服务来设置微服务的默认版本。在这种情况下,虚拟服务将把所有流量路由到每个微服务的v1。

  1. 应用默认的目标规则
代码语言:javascript
复制
$ kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
  1. 显示目标规则
代码语言:javascript
复制
$ kubectl get destinationrules -o yaml
  1. 运行下面命令应用虚拟服务
代码语言:javascript
复制
$ kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml

因为配置传播最终是一致的,所以请等待几秒钟,等待虚拟服务生效。

  1. 使用如下命令显示定义的路由
代码语言:javascript
复制
$ kubectl get virtualservices -o yaml
  1. 使用如下命令查看子集的定义
代码语言:javascript
复制
$ kubectl get destinationrules -o yaml
2. 测试新路由配置

测试结果如下:

3. 基于用户的标识进行路由

接下来,您将更改路由配置,以便将来自特定用户的所有流量路由到特定的服务版本。在本例中,来自一个名为Jason的用户的所有流量将被路由到reviews:v2

  1. 运行以下的命令开启基于用户的路由
代码语言:javascript
复制
$ kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml 
  1. 使用以下命令确定规则的创建
代码语言:javascript
复制
$ kubectl get virtualservice reviews -o yaml
  1. 测试结果如下:

4. 理解发生了什么?

在该任务中,刚开始发送100%的流量到Bookinfo中的每个服务,然后我们设置了基于end-user报头来发送流量到reviews的v2版本。

4. 清空试验
代码语言:javascript
复制
$ kubectl delete -f samples/bookinfo/networking/virtual-service-all-v1.yaml

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 开始准备工作
  • 2. 关于该任务
  • 1. 应用虚拟服务
  • 2. 测试新路由配置
  • 3. 基于用户的标识进行路由
  • 4. 理解发生了什么?
  • 4. 清空试验
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档