美文网首页
Istio的路由规则配置

Istio的路由规则配置

作者: 程序员札记 | 来源:发表于2023-01-07 11:55 被阅读0次

VirtualService是istio流量治理的核心配置.

一、路由规则配置示例


image.png

含义:对于forecast服务的访问,如果在请求的Header中location取值是north,则将该请求转发到服务的v2版本上,其他请求转发到服务的v1版本上。

二、路由规则定义
virtualService:用于定义对特定目标服务的一组流量规则。描述一个具体的服务对象,包含了对流量的各种处理。


image.png

virtualService中的术语:

  • service:服务
  • service version:服务版本
  • source: 发起调用的服务
  • host: 服务调用方连接和调用目标服务时使用的地址

VirtualService的1级定义,包括通用字段hosts、gateways,复合字段HttpRoute、TCPRoute、TLSRoute,表示istio支持的http\TCP\TLS协议的流量规则。

hosts和gateways是每种协议都要用到的公共字段。
1、hosts
必选,表示流量发送的目标。用于匹配访问地址,可以是一个DNS名称或IP地址。
DNS可以使用通配符前缀,也可以使用短域名。但是建议在规则中明确写完整的域名。

对k8s平台来说,hosts中一般是Service的短域名。如forecast对应的完整域名是:forecast.weather.svc.cluster.local,其中weather是forecast服务部署的命名空间。
isito中,hosts的全域名是 forecats.default.svc.cluster.local。其中命名空间default是virtualService的命名空间,不是Service的命名空间。

2、gateways
标识应用这些流量规则的gateway。VirtualService描述的规则可以作用到网格里的Sidecar和入口处的Gateway。具体场景如下:
1)服务仅在网格内访问,规则也仅作用于网格内的sideCar。此时gateways字段可以省略。
2)服务仅在网格外访问,需要配置关联的Gateway,对应gateway进来的流量执行在这个VirtualService上定义的规则。
3)服务在网格内核网格外都要访问,那对gateways数组字段至少配置两个元素,一个是是外部访问的gateway,另一个是保留关键字”mesh“。

3、http
用于处理http的流量,是一个与HTTPRoute类似的路由集合

4、tls
用于处理非终结的TLS和HTTPS的流量,是一个TLSRoute类型的路由集合。

5、tcp
用于处理TCP的流量,所有其他非HTTP和TLS端口的流量,是一个TCPRoute类型的路由集合
注意:http tls tcp3各字段在定义上都是数组,可以定义多个元素;使用上都是一个有序列表,应用时匹配的第一个规则生效。不会检查后面的规则

6、exportTo
新增字段,控制VirtualService跨命名空间的可见性,即VirtualService是否可以被其他命名空间下的sidecar和Gateway使用。
默认全局可见。 .表示仅应用到当前命名空间, *表示应用到所有的命名空间。

三、HTTP路由(HttpRoute)
1、HTTPRoute
http是当前最通用、内容最丰富的协议。除了可以路由,还可以进行如:重定向、重写、重试、流量镜像、故障注入、跨资源共享等操作。
实际的协议包括:http http2 grpc

2、http的配置规则
支持将uri schema method authority port等作为条件来匹配。
URI 的完整格式是:URI=scheme:[//authority]path [?query][#fragment]
Authority的标准定义是:“authority=[userinfo@]host[:port]


image.png

具体匹配规则:

  • uri schema method authority都是StringMatch类型,在匹配时支持extract-全部匹配、prefix-前缀匹配、regex-正则匹配
  • headers map类型,也可以采用全部、前缀、正则三种方式匹配。


    image.png

匹配headers中source取值为north,并且uri以/advertisement开头的请求

  • port 请求的服务端口
  • sourcelabels map类型的键值对,标识请求来源的负载匹配标签。可以对一组服务都打一个相同的标签,然后使用sourceLabels字段对这些服务试试相同的流量规则。
    k8s平台中,label就是pod上的标签。


    image.png

标识请求来源是frontend服务的v2版本负载。

  • gateways:规则应用的gateway名称

匹配逻辑:HTTPMatchRequest中多个match是或的关系,
某个match中的诸多属性如uri、 headers、method等是“与”逻辑,而属性数组中几个元素间的关系是“或”逻辑。


image.png

match有两个,其条件的语义是:headers中的source取值 为“north”,并且uri以“/advertisement”开头的请求,或者uri以“/forecast”开头的请求。

相关文章

  • Istio的路由规则配置

    VirtualService是istio流量治理的核心配置. 一、路由规则配置示例 含义:对于forecast服务...

  • Istio 路由管理

    Istio中的路由包含以下几种常见的对象: VirtualService:Istio服务网格中定义的路由规则,控制...

  • Istio流量治理基础

    流量治理 Istio的流量路由规则使运维人员可以轻松控制服务之间的流量和API调用 Istio简化了诸如断路器,超...

  • 使用 Istio 进行路由策略的配置

    本篇来讲一下如何使用 Istio 进行路由的配置,在这里直接使用 Istio 官方提供的案例应用来进行演示,首先部...

  • K8s的ingress 配置跨域和白名单,

    配置跨域: 配置白名单: 配置路由规则

  • vue学习(50)vue-router(2)

    多级路由配置路由规则,使用children配置项 跳转(要写完整路径): 路由的query参数 接收参数: 命名路...

  • vue-router基本使用

    安装 使用路由,引入路由规则 main.js文件 配置路由规则,在文件夹router新建文件index.js这个文...

  • vue组件的嵌套 20

    路由嵌套 配置规则 1) 父级路由 首页

  • 路由独享路由守卫、组件路由守卫

    路由独享路由守卫 index.js 只对某个路由进行权限限制,可以在路由规则里面单独配置权限,使用beforeEn...

  • angular路由

    路由配置文件 配置路由规则需要在 config 阶段 1、引入 ui-router 脚本 2、在 app 创建时加...

网友评论

      本文标题:Istio的路由规则配置

      本文链接:https://www.haomeiwen.com/subject/rqaecdtx.html