开发者社区> 问答> 正文

如何在Istio VirtualService正则表达式中实现逻辑OR?

k8s小能手 2019-01-09 11:19:54 569

管道角色似乎在Istio中不起作用VirtualService。

以下示例旨在根据user-agent标头路由请求。来自移动设备的myapp请求应该转到桌面用户的请求deskt-app,并由下一个匹配块处理。当我使用这个正则表达式时,该字段有效:

^.bMobileb.$
但是需要更复杂的正则表达式以确定移动用户的权力。当我使用这些时,我的路由完全中断:

^.b(iPhone|Pixel)b.$
^.b(iPhone|Pixel)+b.$
^.biPhone|Pixelb.$
预期的行为
使用带管道的正则表达式(逻辑或)我期望myapp在我有一个user-agent包含单词“iPhone”或“Pixel” 的标题时被路由到。

实际行为
我被送到了deskt-app。

这个问题
如何在Istio VirtualService正则表达式模式中实现逻辑OR ?这是我的问题还是我忽略了一些明显的东西?

例 VirtualService
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
...
...
http:

  • match:

    • headers:

      user-agent:
        regex: "<REGEX>"    <------

      uri:

      prefix: /foo/bar

      route:

    • destination:

      host: myapp
      port:
        number: 80
  • match:

    • uri:

      prefix: /foo/bar

      route:

    • destination:

      host: deskt-app
      port:
        number: 80
iOS开发
分享到
取消 提交回答
全部回答(1)
  • k8s小能手
    2019-07-17 23:24:54

    您的配置是正确的,因此问题必须与正则表达式相关,或者用户代理的内容不同,请尝试一下 '^.(iPhone|Pixed).$'

    刚认证下面的配置在头部包含android或iphone时正确路由:

    • match:

      • headers:

        user-agent: 
            regex: '^.*(Android|iPhone).*$'

        并测试:

    [match] curl -H“user-agent:Mozilla / 5.0(Linux; U; iPhone 4.4.2; en-us;)”......

    [no match] curl -H“user-agent:Mozilla / 5.0(Linux; U; Iphne 4.4.2; en-us;)”......

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题