入口网关位于使用节点端口的AWS ELB(经典)之后,我想基于客户端ip在虚拟服务中路由TCP通信。
当然,ELB的代理协议已启用。
当我使用HTTP时,它可以工作。配置如下。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: app-vservice
namespace: test
spec:
hosts:
- "app-service"
http:
- match:
- headers:
x-forwarded-for:
exact: 123.123.123.123
route:
- destination:
host: app-service
subset: v2
- route:
- destination:
host: app-service
subset: v1
但是我在官方文档中找不到TCP路由的标头字段。
不可能吗?
谢谢。
答案 0 :(得分:2)
根据docs yes,在Istio中的TCPRoute中没有字段可以传递标头。同样要回答您的问题,每个标头操作都应使用envoy过滤器进行,因为基于envoy构建的Istio支持此操作,并且还降低了复杂性。
使用Istio文档中所述的envoy和lua过滤器。可以实现。请关注使节docs。
在虚拟服务中检出Istio Discussion中的标头。