我正在尝试使用 v1alpha3 路由打开到 Istio 服务网格的 TCP 连接。我可以成功打开与外部负载均衡器的连接。该流量按预期进入默认 IngressGateway;我已经tcpdump
在 IngressGateway pod 上验证了这一点。
不幸的是,流量永远不会转发到服务网格中;它似乎死在了 IngressGateway 中。
以下是我的配置示例:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: echo-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 31400
protocol: TCP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: echo-gateway
spec:
hosts:
- "*"
gateways:
- echo-gateway
tcp:
- match:
- port: 31400
route:
- destination:
host: echo.default.svc.cluster.local
port:
number: 6060
我已经验证 IngressGateway 可以通过netcat
指定端口访问服务。使用 envoy 在 Service pod 上运行tcpdump
表明永远不会尝试与 pod 或代理进行通信。
我已经多次阅读文档,但我不知道如何继续。文档中的这一行对我来说是可疑的:
虽然 Istio 将配置代理以侦听这些端口,但用户有责任确保允许到这些端口的外部流量进入网格。
有什么想法吗?