Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何在Istio VirtualService正则表达式中实现逻辑OR? 问题_Kubernetes_Istio - Fatal编程技术网

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

Kubernetes 如何在Istio VirtualService正则表达式中实现逻辑OR? 问题,kubernetes,istio,Kubernetes,Istio,管道字符在Istio的VirtualService中似乎不起作用 下面的示例旨在基于用户代理头路由请求。来自移动设备的请求应转到myapp,来自桌面用户的请求应转到deskt app,由下一个匹配块处理。使用此正则表达式时,字段起作用: ^.*\b移动设备\b.*$ 但这种能力需要更复杂的正则表达式来识别移动用户。当我使用这些时,我的路线完全中断: ^.*\b(iPhone |像素)\b.*$ ^.*\b(iPhone像素)+\b.*$ ^.*\biPhone | Pixel\b.*$

管道字符在Istio的
VirtualService
中似乎不起作用

下面的示例旨在基于
用户代理
头路由请求。来自移动设备的请求应转到
myapp
,来自桌面用户的请求应转到
deskt app
,由下一个匹配块处理。使用此正则表达式时,
字段起作用:

  • ^.*\b移动设备\b.*$
但这种能力需要更复杂的正则表达式来识别移动用户。当我使用这些时,我的路线完全中断:

  • ^.*\b(iPhone |像素)\b.*$
  • ^.*\b(iPhone像素)+\b.*$
  • ^.*\biPhone | Pixel\b.*$
预期行为 使用带有管道(逻辑OR)的正则表达式,当我有一个包含单词“iPhone”或“Pixel”的
用户代理
头时,我希望将其路由到
myapp

实际行为 我被路由到
桌面应用程序

问题 如何在Istio
VirtualService
regex模式中实现逻辑OR?这是我的问题还是我忽略了一些显而易见的事情


示例
VirtualService
apiVersion:networking.istio.io/v1alpha3 种类:虚拟服务 ... ... http: -匹配: -标题: 用户代理:
regex:“您的配置是正确的,因此问题必须出在regex上,或者用户代理的内容不同,请尝试一下
”^.*(iPhone | Pixel)。*$”

刚刚验证了当标题包含android或iphone时,以下配置是否正确路由:

  - match:
    - headers: 
        user-agent: 
            regex: '^.*(Android|iPhone).*$'
并通过以下方式进行测试:

[match]curl-H“用户代理:Mozilla/5.0(Linux;U;iPhone 4.4.2;en-us;)”


[不匹配]curl-H“用户代理:Mozilla/5.0(Linux;U;iPhone 4.4.2;en-us;)”…

感谢您的回答!当我今天有机会的时候,我会尝试一下。不幸的是,在我能够验证这一点之前,这个项目就被否决了。谢谢@rinormaloku!这非常好。我用Firefox用户代理切换器和真实设备测试了这一点……它可以工作。
  - match:
    - headers: 
        user-agent: 
            regex: '^.*(Android|iPhone).*$'