带你玩转Istio-第10篇---非侵入的流量治理

Tls路由(TLSRoute)

在 VirtualService 中,tls 是一种 TLSRoute 类型的路由集合,用于处理非终结的 TLS和HTTPS的流量,使用SNI(Server Name Indication,客户端在TLS握手阶段建立连接使用的服务Hostname)做路由选择。TLSRoute被应用于以下场景中。

◎ 服务的端口协议是HTTPS和TLS。即在服务的端口名中包含https-、tls-等。
◎ Gateway的端口是非终结的 HTTPS和 TLS。
◎ ServiceEntry的端口是HTTPS和TLS。

1.TLSRoute配置示例

简单配置如下:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: total-weather-tls
  namespace: weather
spec:
  hosts:
  - "*.weather.com"
  gateways:
  - ingress-gateway
  tls:
  - match:
    - port: 443
      sniHosts:
      - frontend.weather.com
      route:
      - destination:
          host: frontend
  - match:
    - port: 443
      sniHosts:
      - recommendation.weather.com
      route:
      - destination:
          host: recommendation

在以上示例中,可以通过HTTPS方式从外面访问weather应用内部的两个HTTPS服务frontend和recommendation,访问目标端口是443并且SNI是“frontend.weather.com”的请求会被转发到 frontend 服务上,访问目标端口是 443 并且 SNI 是“recommendation.weather.com”的请求会被转发到recommendation服务上。

2.TLSRoute规则解析

TLSRoute的规则定义如图3-38所示。

                              图3-38 TLSRoute的规则定义

可以看出,TLSRoute的规则定义比HTTPRoute要简单很多,规则逻辑也是将满足一定条件的流量转发到对应的后端。在以上规则定义中,匹配条件是 TLSMatchAttributes,路由规则目标是RouteDestination。

◎ sniHosts:一个重要的属性,为必选字段,用来匹配TLS请求的SNI。SNI的值必须是VirtualService的hosts的子集。
◎ destinationSubnets:目标IP地址匹配的IP子网。
◎ port:访问的目标端口。
◎ sourceLabels:是一个map类型的键值对,匹配来源负载的标签。
◎ gateways:表示规则适用的Gateway名字。覆盖VirtualService上的gateways定义。和 HTTPMatchRequest中gateways的意思相同。

可以看到,sniHosts 和 destinationSubnets 属性是 TLS 特有的,port、sourceLabels 和gateways属性同HTTP的条件定义。一般的用法是匹配port和sniHosts,配置如下:

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

3.四层路由目标RouteDestination

TLS 的路由目标通过 RouteDestination 来描述转发的目的地址,这是一个四层路由转发地址,包含两个必选属性destination和weight。

◎ destination:表示满足条件的流量的目标。
◎ weight:表示切分的流量比例。

RouteDestination 上的这两个字段在使用上有较多注意点。用法和约束同HTTPRouteDestination的对应字段,参见对应描述和配置示例。

TCP路由(TCPRoute)

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

1.TLSRoute配置示例

如下所示是一个简单的TCP路由规则,将来自forecast服务23003端口的流量转发到inner-forecast服务的3003端口:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: forecast
  namespace: weather
spec:
  hosts:
  - forecast
  tcp:
  - match:
    - port: 23003
    route:
    - destination:
        host: inner-forecast
        port:
          number: 3003

2.TCPRoute规则解析

与HTTP和TLS类似,如图3-39所示,TCPRoute的规则描述的也是将满足一定条件的流量转发到对应的目标后端,其目标后端的定义和 TLS 相同,也是四层的RouteDestination。本节重点关注TCP特有的4层匹配规则L4MatchAttributes。

                                                          图3-39 TCPRoute的规则定义

3.四层匹配规则L4MatchAttributes

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

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

这几个参数和TLSMatchAttributes对应字段的意义相同,如下所示为基于端口和源工作负载标签描述TCP流量的典型示例:

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值