一、TLS路由

应用于https和TLS协议中。TLSRoute的规则定义比HTTPRoute要简单的多,只有匹配规则TLSMatchAttributes和路由规则目标RouteDestination

1、TLSRoute配置实例

istio demo 请求路由 istio tcp 路由策略_网络


说明:从外面访问weather应用内部的两个https服务;

访问目标端口是443且SNI是”frontend.weather.com“的请求会被转发到frontend上;

访问目标端口是443且SNI是”recommendation.weather.com“的请求会被转发到recommendation服务。

2、TLS匹配规则

TLSMatchAttributes的属性:
1)sniHosts:必选字段,server name indication,目标服务的名称定义,用来匹配TLS请求的SNI。SNI的值必须是VirtualService的hosts的子集
2)destinationSubnets:目标IP地址匹配的IP子网
3)port:访问的目标端口
4)sourceLabels:map类型的键值对,匹配请求的标签
5)gateways:表示规则适用的gateway名字
其中shiHosts和destinationSubnets属性是TLS特有的。

一般的用法是匹配ports和sniHosts,配置如下:

tls:
- match:
  - port: 443
      sniHosts:
      - frontend.weather.com

3、四层路由目标RouteDestination

转发的目的地址,包含两个必选属性destination和weight
destination:标识满足条件的流量的目标
weight:流量比例

二、TCP路由

所有不满足以上http和TLS条件的流量都会应用到本节要介绍的TCP流量规则。

1 TCPRoute配置示例

将来自forecast服务23003端口的流量转发到inner-forecast服务的3003端口。

如图:

istio demo 请求路由 istio tcp 路由策略_网络_02


TCPRoute 中,match 字段也是一个数组,元素类型是 L4MatchAttributes,支持以下匹配属性。

◎ destinationSubnets: 目标IP地址匹配的IP子网。
◎ port: 访问的目标端口。
◎ sourceLabels: 源工作负载标签。
◎ gateways: Gateway的名称。

基于单口和亚UN公共做负载标签描述TCP流量的典型示例:

tcp:
- match:
 - sourceLabels:
   group:beta
 - port: 23003

三、3种协议路由规则的对比

http TLS TCp路由规则对比:

istio demo 请求路由 istio tcp 路由策略_IP_03

四、VirtualService的典型应用场景

1、多个服务的组合

即将weather应用的多个服务组装成大的虚拟服务。根据访问路径的不同,对weather服务的访问转发到不同的内部服务上。

配置如图

istio demo 请求路由 istio tcp 路由策略_http_04


示意图

istio demo 请求路由 istio tcp 路由策略_IP_05


2、路由规则的优先级

通过路由顺序表达路由的规则。

以“/weather/data/”开头的流量被转发到v3版本;以“/weather/”开头的其他流量被转发到v2版本;其他流量 被转发到v1版本:

如图:

istio demo 请求路由 istio tcp 路由策略_网络_06


3、复杂条件路由

配置如图

istio demo 请求路由 istio tcp 路由策略_istio demo 请求路由_07


对于forecast服务的请求,当请求的cookie满足“^(.?😉?(local=north)(;.)?”表达式,并

且 uri 匹配“/weather”,或者请求的 uri 匹配“/data”时,流量走 v2 和 v3 版本,其中v2版本的流量占20%, v3版本占80%;其他流量都走forecast服务的v1版本。

istio demo 请求路由 istio tcp 路由策略_网络_08

4、特定版本间的访问规则

sourceLabels过滤访问来源。

如下配置就很有意思,只对frontend服务的v2版本到forecast服务的v1版本的请求设置20秒的延迟。

如图:

istio demo 请求路由 istio tcp 路由策略_http_09