Istio自定义入口网关仅适用于80

时间:2020-01-08 04:52:23

标签: kubernetes istio

我想用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

1 个答案:

答案 0 :(得分:1)

交通流量:Clent-> LoadBalancer(Ingress网关服务)-> Ingress网关Envoy->您的应用程序的Sidecar Envoy->您的应用程序。

入口网关是部署在Kubernetes集群边缘的特使。群集内部服务的所有传入请求(HTTP,TCP)都到达入口网关。“网关和虚拟服务”类型使您可以配置入口网关的Envoy代理。

创建网关对象并不会真正部署新的网关,它只是配置与入口网关相同的特使代理。

reference