您知道为什么将以下两个istio yaml前缀配置路由到同一容器吗?
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-one-virtualservice
spec:
hosts:
- "*"
gateways:
- my-gateway
http:
- match:
- uri:
prefix: /one
route:
- destination:
host: my-one-service
以下内容击中了相同的容器/服务(只是更改了前缀和主机服务):
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-two-virtualservice
spec:
hosts:
- "*"
gateways:
- my-gateway
http:
- match:
- uri:
prefix: /one/two
route:
- destination:
host: my-two-service
答案 0 :(得分:1)
问题是因为同一主机有2个虚拟服务。在这种情况下,规则将按照here中所述的未定义顺序进行合并。
在您的情况下,由于第二个前缀是第一个前缀的更具体子集,因此您需要确保第二个规则具有更高的优先级(即先排序)。
您可以通过将两个规则都放在一个虚拟服务中来解决此问题,如下所示:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-one-virtualservice
spec:
hosts:
- "*"
gateways:
- my-gateway
http:
- match:
- uri:
prefix: /one/two
route:
- destination:
host: my-two-service
- match:
- uri:
prefix: /one
route:
- destination:
host: my-one-service
有关规则排序的更多信息,请参见here。