一、TLS路由
应用于https和TLS协议中。TLSRoute的规则定义比HTTPRoute要简单的多,只有匹配规则TLSMatchAttributes和路由规则目标RouteDestination
1、TLSRoute配置实例
说明:从外面访问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端口。
如图:
TCPRoute 中,match 字段也是一个数组,元素类型是 L4MatchAttributes,支持以下匹配属性。
◎ destinationSubnets: 目标IP地址匹配的IP子网。
◎ port: 访问的目标端口。
◎ sourceLabels: 源工作负载标签。
◎ gateways: Gateway的名称。
基于单口和亚UN公共做负载标签描述TCP流量的典型示例:
tcp:
- match:
- sourceLabels:
group:beta
- port: 23003
三、3种协议路由规则的对比
http TLS TCp路由规则对比:
四、VirtualService的典型应用场景
1、多个服务的组合
即将weather应用的多个服务组装成大的虚拟服务。根据访问路径的不同,对weather服务的访问转发到不同的内部服务上。
配置如图
示意图
2、路由规则的优先级
通过路由顺序表达路由的规则。
以“/weather/data/”开头的流量被转发到v3版本;以“/weather/”开头的其他流量被转发到v2版本;其他流量 被转发到v1版本:
如图:
3、复杂条件路由
配置如图
对于forecast服务的请求,当请求的cookie满足“^(.?😉?(local=north)(;.)?”表达式,并
且 uri 匹配“/weather”,或者请求的 uri 匹配“/data”时,流量走 v2 和 v3 版本,其中v2版本的流量占20%, v3版本占80%;其他流量都走forecast服务的v1版本。
4、特定版本间的访问规则
sourceLabels过滤访问来源。
如下配置就很有意思,只对frontend服务的v2版本到forecast服务的v1版本的请求设置20秒的延迟。
如图: