在kubernetes中,想暴露service给外部用户访问,可以使用ingress(例如nginx ingress):
在istio世界中,这个功能是gateway来负责:
在上一节安装istio demo profile
时,也许你已经注意到同时安装了两个gateway组件ingressgateway
和egressgateway
其中ingress gateway负责处理入的流量,egress gateway负责控制出的流量。
从实现原理上来说, 这两种gateway内部也是envoy container
不过它们不是以sidercar模块运行,而是一个独立的容器:
除了默认的istio-ingressgateway
外,我们也可以创建自定义的ingressgateway
:
下面的示例展示了一个外部 HTTP 入口流量的网关配置,它根据selector标签,使用了默认的istio-ingressgateway controller
:
这个网关配置让 HTTP 流量从 bookinfo.app
域名通过 80 端口流入网格,但没有为请求指定任何路由规则。为想要工作的网关指定路由,必须把网关绑定到虚拟服务(VirtualService)
上,我们下节将介绍它。
参考: https://istio.io/latest/zh/docs/tasks/traffic-management/ingress/ingress-control/