有没有一种方法可以在istio-virtual服务中为单个上下文路径指定两个服务



我有两个不同的微服务在同一名称空间中运行,它们都有相同的上下文路径(例如-my/context/path(,另外两个控制器也不同,例如服务一支持-my/context/path/service1,服务二支持my/context/path/service2现在,当我这样定义vs时,它总是重定向到service1,有可能实现这一点的方法吗?下面是我的VS:


apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: test-service
namespace: ns-ns
spec:
gateways:
- gateway.ns-ns
hosts:
- '*'
http:
- match:
- uri:
prefix: /my/context/path
route:
- destination:
host: service1.ns-ns.svc.cluster.local
port:
number: 9000
- route:
- destination:
host: service2.ns-ns.svc.cluster.local
port:
number: 9000

我也试过在VS下面,但这似乎也重定向到了第一个服务。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: test-service
namespace: ns-ns
spec:
gateways:
- gateway.ns-ns
hosts:
- '*'
http:
- match:
- uri:
prefix: /my/context/path
route:
- destination:
host: service1.ns-ns.svc.cluster.local
port:
number: 9000
- match:        
- uri:
prefix: /my/context/path/service2
route:
- destination:
host: service2.ns-ns.svc.cluster.local
port:
number: 9000

我不确定这是否可以实现,或者我是否需要将两种服务的上下文部分分开?

路由按顺序匹配。因此,您需要从最具体的开始到最通用的。例如

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: test-service
namespace: ns-ns
spec:
gateways:
- gateway.ns-ns
hosts:
- '*'
http:
- match:        
- uri:
prefix: /my/context/path/service2
route:
- destination:
host: service2.ns-ns.svc.cluster.local
port:
number: 9000
- match:
- uri:
prefix: /my/context/path
route:
- destination:
host: service1.ns-ns.svc.cluster.local
port:
number: 9000

相关内容

  • 没有找到相关文章

最新更新