【问题标题】:Service Mesh: Using Istio to route TCP traffic based on Client IP in Virtual ServiceService Mesh:在虚拟服务中使用 Istio 根据客户端 IP 路由 TCP 流量
【发布时间】:2020-06-05 15:16:25
【问题描述】:

Ingress 网关位于 AWS ELB(classic) 后面,使用 nodeport,我想根据客户端 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 路由的 headers 字段。

不可能吗?

谢谢。

【问题讨论】:

    标签: kubernetes istio


    【解决方案1】:

    根据文档,是的,Istio 中的 TCPRoute 中没有传递标头的字段。另外,为了回答您的问题,每个标头操作都应该使用 envoy 过滤器来完成,因为基于 envoy 构建的 Istio 支持这一点并且还降低了复杂性。

    使用 Istio 文档中所述的 envoy 和 lua 过滤器。这是可以实现的。请关注特使docs

    检查 Istio Discussion 以获取虚拟服务中的标头。

    使用Lua 来实现相同的功能。还有一个 blog 展示了如何在 envoy 上实现过滤器的示例。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2021-07-12
    相关资源
    最近更新 更多