我在 minikube 上运行了两个服务,Foo
并且Bar
. 当我访问该Foo
服务时,它会请求Bar
服务以检索一些数据。Bar
服务有 2 个版本"1.0"
和"2.0"
. 我已经设置了默认RouteRule
配置,istio
将所有请求路由到"1.0"
:
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
name: bar-default
spec:
destination:
name: bar-server
precedence: 1
route:
- labels:
version: "1.0"
它工作正常,我可以看到所有请求都转发到"1.0"
. 现在我想RouteRule
根据标题添加另一个,所以来自Chrome
浏览器的所有请求都将被转发到"2.0"
:
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
name: bar-v2
spec:
destination:
name: bar-server
precedence: 2
match:
request:
headers:
user-agent:
regex: ".*Chrome.*"
route:
- labels:
version: "2.0"
它不起作用。所有请求仍然路由到"1.0"
. 我可以看到RouteRule
已创建:
> istioctl get routerules
NAME KIND NAMESPACE
bar-default RouteRule.v1alpha2.config.istio.io default
bar-v2 RouteRule.v1alpha2.config.istio.io default
我可以在浏览器的开发人员工具中看到UserAgent
标题存在。如何调试请求以查看为什么不转发到"2.0"
?