特使代理内的多个完全匹配

时间:2019-08-14 23:45:21

标签: istio envoyproxy

我想知道是否有一种方法可以在特使中执行多次完全匹配? 例如有兴趣根据标题属性将流量引导到两个不同的集群,

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

这可以按预期工作,但是可以在精确匹配中指定要在列表中匹配的字符串列表,例如完全匹配:[“ 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之类的样式?

对不起,我只是无法使它正常工作,请使用使节文档中的示例进行前端代理测试,因此得出结论。谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以尝试:

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