我在 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"?