我想用Istio创建自己的入口网关。这是我的意图:
traffic on 4000 > my-gateway > my-virtualservice > web service (listening on 4000)
我已经部署了以下YAML:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: my-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 4000
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-virtualservice
spec:
hosts:
- "*"
gateways:
- my-gateway
http:
- route:
- destination:
host: web
port:
number: 4000
此操作不起作用,但是将网关端口number: 4000
更改为number: 80
却有效。
大概是因为istio-ingressgateway
于80打开。
这使我相信该链实际上是:
traffic on 4000 > my-gateway > my-virtualservice > istio-ingressgateway > web service
我想我可以通过在istio-ingressgateway
上打开4000来解决此问题,但这不会破坏创建自定义网关的意义吗?
我认为创建my-gateway
的全部目的是避免使用istio-ingressgateway
?
帮我理解! :D
答案 0 :(得分:1)
交通流量:Clent-> LoadBalancer(Ingress网关服务)-> Ingress网关Envoy->您的应用程序的Sidecar Envoy->您的应用程序。
入口网关是部署在Kubernetes集群边缘的特使。群集内部服务的所有传入请求(HTTP,TCP)都到达入口网关。“网关和虚拟服务”类型使您可以配置入口网关的Envoy代理。
创建网关对象并不会真正部署新的网关,它只是配置与入口网关相同的特使代理。