Gateway

在kubernetes中,想暴露service给外部用户访问,可以使用ingress(例如nginx ingress):

image-20211107112908757

在istio世界中,这个功能是gateway来负责:

image-20211107113023632

在上一节安装istio demo profile时,也许你已经注意到同时安装了两个gateway组件ingressgatewayegressgateway

image-20211107113109885

其中ingress gateway负责处理入的流量,egress gateway负责控制出的流量。

image-20211107113205097

从实现原理上来说, 这两种gateway内部也是envoy container

不过它们不是以sidercar模块运行,而是一个独立的容器:

image-20211107113334398

除了默认的istio-ingressgateway外,我们也可以创建自定义的ingressgateway:

image-20220809224506578

Gateway示例

下面的示例展示了一个外部 HTTP 入口流量的网关配置,它根据selector标签,使用了默认的istio-ingressgateway controller

image-20220809225332188

这个网关配置让 HTTP 流量从 bookinfo.app域名通过 80 端口流入网格,但没有为请求指定任何路由规则。为想要工作的网关指定路由,必须把网关绑定到虚拟服务(VirtualService)上,我们下节将介绍它。


参考: https://istio.io/latest/zh/docs/tasks/traffic-management/ingress/ingress-control/