I'm encountering a warning message about duplicate/overlapping matches in my Istio VirtualService configuration, and I'm seeking assistance in resolving it. Here's the warning message:
Warning: virtualService rule #1 match #0 of prefix /apparchived/ is not used (duplicate/overlapping match in rule #1 of prefix /app on #0)
I have a VirtualService configuration where I need to route requests for paths /app and /apparchived to different services while preserving the URI paths. However, I'm facing issues with overlapping matches in my configuration.
Here's my current VirtualService configuration:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: app
namespace: ingress-routes
spec:
hosts:
- "*"
gateways:
- dev-app-gateway
http:
- match:
- uri:
prefix: "/app/"
- uri:
prefix: "/app"
rewrite:
uri: "/"
route:
- destination:
host: app.app.svc.cluster.local
port:
number: 80
- match:
- uri:
prefix: "/apparchived/"
- uri:
prefix: "/apparchived"
rewrite:
uri: "/"
route:
- destination:
host: apparchived.app.svc.cluster.locala
number: 80
I'd like to achieve the following routing behavior:
Thank you!
Please use "exact" and "prefix" attributes combination to achieve desired routing you are looking for. Please use below virtual service definition to avoid "duplicate/overlapping match in rule warning"
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: app
namespace: ingress-routes
spec:
hosts:
- "*"
gateways:
- dev-app-gateway
http:
- match:
- uri:
prefix: "/app/"
- uri:
exact: "/app"
rewrite:
uri: "/"
route:
- destination:
host: app.app.svc.cluster.local
port:
number: 80
- match:
- uri:
prefix: "/apparchived/"
- uri:
exact: "/apparchived"
rewrite:
uri: "/"
route:
- destination:
host: apparchived.app.svc.cluster.local
number: 80