我们正在尝试在多集群/多主网格配置中设置出口网关,其中出口网关仅位于一个集群中,但同时用于两个集群。
用例是集群位于不同的网络区域,我们希望能够将流量透明地路由到一个区域,以透明地发送到另一个区域中的客户端。
我们在一个集群中遵循了本指南,它运行良好。但是,我们VirtualService
在第二个集群中设置使用第一个集群中的出口网关时遇到了麻烦。
在将以下虚拟服务部署到第二个集群时,我们得到 503 和 cluster_not_found。
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: direct-cnn-through-egress-gateway
spec:
hosts:
- edition.cnn.com
gateways:
- istio-egressgateway
- mesh
http:
- match:
- gateways:
- mesh
port: 80
route:
- destination:
host: istio-egressgateway.istio-system.svc.cluster.local
port:
number: 80
weight: 100
- match:
- gateways:
- istio-egressgateway
port: 80
route:
- destination:
host: edition.cnn.com
port:
number: 80
weight: 100
第二个集群中 pod 上的端点代理配置错过了istio-egressgateway.istio-gateways.svc.cluster.local
端点(所有其他服务都被发现并定向到另一个集群的东西向网关)。我们认为这就是这VirtualService
在第二个集群中不起作用的原因。
作为一种解决方法,我们可以将出口流量重定向到第一个集群的入口网关,但这具有流量离开并重新进入网格的缺点,这可能会对跟踪和监控产生影响。
目前是否可以设置一个可供网格中所有集群使用的单一出口网关,还是我们必须采用解决方法?