管道角色似乎在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
您的配置是正确的,因此问题必须与正则表达式相关,或者用户代理的内容不同,请尝试一下 '^.(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;)”......
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。