开发者社区> 问答> 正文

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

管道角色似乎在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

展开
收起
k8s小能手 2019-01-09 11:19:54 4370 0
1 条回答
写回答
取消 提交回答
  • 整合最优质的专家资源和技术资料,问答解疑

    您的配置是正确的,因此问题必须与正则表达式相关,或者用户代理的内容不同,请尝试一下 '^.(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;)”......

    2019-07-17 23:24:54
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载