5.1.1 Istio网关的工作原理

传统上,Kubernetes使用Ingress控制器来处理从外部进入集群的流量。使用Istio时,情况不再如此。Istio网关用新的Gateway资源和VirtualServices资源来控制入口流量,它们协同工作以将流量路由到网格中。在网格内部不需要Gateways,因为服务可以通过集群本地服务名称相互访问。

那么Istio网关是怎样工作的?请求如何到达它想要的应用程序?基本步骤如下:

1)客户端在特定端口上发出请求。

2)负载均衡器在这个端口上进行侦听,并将请求转发到集群中(在相同或新的端口)。

3)在集群内部,请求被路由到Istio IngressGateway服务所侦听的负载均衡器转发过来的端口上。

4)Istio IngressGateway服务将请求(在相同或新的端口)转发到对应的pod上。

5)在IngressGateway pod上会配置Gateway资源和VirtualService资源定义。Gateway会配置端口、协议以及相关安全证书。VirtualService的路由配置信息用于找到正确的服务。

6)Istio IngressGateway pod会根据路由配置信息将请求路由到对应的应用服务上。

7)应用服务将请求路由到对应的应用pod上。

Istio网关工作原理如图5-1所示。

图5-1 Istio网关的工作原理