【问题标题】:Multiple exact matches within envoy proxy特使代理中的多个完全匹配
【发布时间】:2020-04-13 00:09:03
【问题描述】:

我想知道是否有办法在 envoy 中执行多个完全匹配? 例如有兴趣根据标头属性将流量引导到两个不同的集群,

- match:
     prefix: "/service/2"
     headers:
     - name: X-SOME-TAG
       exact_match: "SomeString"

这可以按预期工作,但是可以在列表中指定一个字符串列表以在 exact_match 中进行匹配,例如精确匹配:[“some_string”,另一个“]?

我也可以写成,

- match:
     prefix: "/service/2"
     headers:
     - name: X-SOME-TAG
       exact_match: "some_string"
  route:
    cluster: service1
- match:
     prefix: "/service/2"
     headers:
     - name: X-SOME-TAG
       exact_match: "another"
  route:
    cluster: service1

但不确定,这是否是不必要的冗长和正确的方式。

或者我是否必须为此或模式使用 regex_match 之类的东西?

抱歉,我只是无法让它工作,使用 envoy 文档中的前端代理示例进行测试,因此想把它放在那里。谢谢!

【问题讨论】:

    标签: istio envoyproxy


    【解决方案1】:

    根据您的问题,我不确定您是要 AND 匹配还是 OR 匹配。如果您希望两者都必须匹配 (AND),则两个匹配项必须位于同一 - match: 部分下,否则,请将它们放在单独的 - match: 部分中。您在上面提供的第二个示例相当于 OR,即“如果 X-SOME-TAG == "some_string" OR X-SOME-TAG == "another",路由到 service1。

    【讨论】:

      【解决方案2】:

      你可以试试:

      - match:
           prefix: "/service/2"
           headers:
           - name: X-SOME-TAG
             safe_regex_match:
               google_re2: {}
               regex: "some_string|another"
        route:
          cluster: service1
      

      【讨论】:

        猜你喜欢
        • 2021-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-02
        • 2022-11-12
        • 1970-01-01
        相关资源
        最近更新 更多