如何在 Istio 1.9 中设置单个网关和多个 VirtualService(每个都在不同的命名空间中)。我不能为每个虚拟服务设置一个网关,因为浏览器利用 HTTP/2连接重用来产生 404 错误。
如果我按照这些说明进行操作,它将无法工作,因为网关和虚拟服务不能位于不同的命名空间中。
这些是清单文件:
APP1:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: app1-gateway
namespace: app1
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "app1.example.com"
tls:
httpsRedirect: true # sends 301 redirect for http requests
- port:
number: 443
name: https-app1
protocol: HTTPS
tls:
mode: SIMPLE
credentialName: sslcertificate
hosts:
- "app1.example.com"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: app1
namespace: app1
spec:
hosts:
- "app1.example.com"
gateways:
- app1-gateway
http:
- match:
- uri:
prefix: /
route:
- destination:
host: app1
port:
number: 80
APP2:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: app2-gateway
namespace: app2
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "app2.example.com"
tls:
httpsRedirect: true # sends 301 redirect for http requests
- port:
number: 443
name: https-app2
protocol: HTTPS
tls:
mode: SIMPLE
credentialName: sslcertificate
hosts:
- "app2.example.com"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: app2
namespace: app2
spec:
hosts:
- "app2.example.com"
gateways:
- app2-gateway
http:
- match:
- uri:
prefix: /
route:
- destination:
host: app2
port:
number: 80