问题描述
Istio 入口网关如何针对单个主机名 IP 地址使用多个端口字段选项编号。
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
Metadata:
name: my-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
name: Nginx
port: 80
protocol: TCP
hosts:
- "https://ip-address1"
- port:
name: nodejs
port: 449
protocol: TCP
hosts:
- "https://ip-address1"
解决方法
根据 Gateway documentation,您需要将 port
定义为 servers
列表的单个项目的一部分。在同一个项目中,您指定 hosts
(顾名思义,您可以在此处指定许多不同的主机,实际上是它们的列表,因为每个主机都以单独的 -
符号开头)。
如果您想为同一主机再指定一个 port
,您可以简单地在另一个 - port
项的上下文中重复此主机的名称,如示例 here。它不能以与官方规范中描述的方式不同的方式完成。
...
spec:
selector:
app: my-gateway-controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- uk.bookinfo.com
- eu.bookinfo.com
tls:
httpsRedirect: true # sends 301 redirect for http requests
- port:
number: 443
name: https-443
protocol: HTTPS
hosts:
- uk.bookinfo.com
- eu.bookinfo.com
tls:
mode: SIMPLE # enables HTTPS on this port
serverCertificate: /etc/certs/servercert.pem
privateKey: /etc/certs/privatekey.pem
...
如上所示,相同的主机是 http(端口 80
)和 https(端口 443
)配置的一部分。