有没有办法在 istio 虚拟服务中为单个上下文路径指定两个服务?
Is there a way were we can specify two services for single context path in istio virtual service?
我有两个不同的微服务 运行 同名 space,它们都有相同的上下文路径(ex - my/context/path),它们的进一步控制器不同,例如服务一支持 - my/context/path/service1 和 service2 支持 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
我有两个不同的微服务 运行 同名 space,它们都有相同的上下文路径(ex - my/context/path),它们的进一步控制器不同,例如服务一支持 - my/context/path/service1 和 service2 支持 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