我最近进入Istio,并试图绕过网关概念。
所以从根本上讲,我得到的是:进入服务网格的入口。
但是我不了解的是如何最好地使用网关。
我已经通过头盔将istio安装在我的k8s集群上,并运行了bookinfo教程。
我创建了bookinfo-gateway
:
spec:
servers:
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP
selector:
istio: ingressgateway
并可以通过istio
创建的入口网关访问服务(通过kubectl get svc -n istio-system
找到)。
似乎我创建的网关与istio通过LOADBALANCER
创建的网关selector
绑定在一起。
我创建了一个虚拟服务,并将其指向bookinfo网关:
spec:
hosts:
- '*'
gateways:
- bookinfo-gateway
http:
- match:
....
我不了解的是何时/为什么要创建另一个网关。我还可以创建另一个虚拟服务,并将其也指向bookinfo-gateway
。
那么我什么时候创建另一个网关?难道只有当我创建另一个istio-ingress-gateway(一个具有不同IP的网关)时?
答案 0 :(得分:1)
我也是Istio的新手。这里有几件事要记住。
1)默认情况下,Istio Ingress Gateway不允许任何内容进入群集。 2)您定义一个网关,以允许流量通过您指定的端口和协议进入。网关不以流量为目标。它只是允许它进入。 3)要将流量从网关定义定向到实际的Kubernetes服务,请使用虚拟服务(这实际上是路由)。这是一种虚拟服务,将网关连接到kubernetes服务,并针对满足特定条件的流量进行通信。特别是某些标签。或某些来自流量的主机。
4)该服务是Kubernetes稳定的ip负载平衡器,它实际部署在一个或多个Pod上。
因此请澄清。 Istio Ingress Gateway是单点进入群集。除非您提供网关,否则什么都不会进来。在网关中,指定端口和协议。就像http,80。这允许该流量进入,但不会到任何地方。
尽量不要将网关视为沿着流量的另一条路径。它更多地是对实际网关的指令,该网关始终是Istio Ingress Gateway。它只是说让这种流量进入该端口。
现在,如果您注意到虚拟服务会检查标签,并且基于标签的服务也会基于标签定向到服务。因此,您可能有多个虚拟服务使用同一网关连接到不同的服务。
因此,我认为它是网关通过端口和协议来细分Istio Ingress网关的流量。同样,它们允许某些类型的流量进入,但没有针对性。虚拟服务(路由)始终根据标签将网关定义的流量路由到一个或多个服务。
我不知道您是否可以有两个使用相同端口和协议的网关。