ConflictingMeshGatewayVirtualServiceHosts
This message occurs when Istio detects an overlap between virtual service resources that conflict with one another. For example, multiple virtual services defined to use the same hostname and attached to a mesh gateway will generate an error message. Note that Istio supports merging of virtual services that are attached to the ingress gateways.
Resolution
To resolve this issue, you can take one of the following actions:
- Merge the conflicting virtual services into a single resource.
- Make the hostnames unique across virtual services attached to a mesh gateway.
- Scope the resource to a specific namespace by setting the
exportTofield.
Examples
The productpage virtual service in namespace team1 conflicts with the custom virtual service in team2 namespace because both of the following are true:
- They are attached to the default “mesh” gateway as no custom gateway is specified.
- They both define the same host
productpage.default.svc.cluster.local.
apiVersion: networking.istio.io/v1 kind: VirtualService metadata: name: productpage namespace: team-1 spec: hosts: - productpage.default.svc.cluster.local http: - route: - destination: host: productpage --- apiVersion: networking.istio.io/v1 kind: VirtualService metadata: name: custom namespace: team-2 spec: hosts: - productpage.default.svc.cluster.local http: - route: - destination: host: productpage.team-2.svc.cluster.local ---You can resolve this issue by setting the exportTo field to . so that each virtual service is scoped only to its own namespace:
apiVersion: networking.istio.io/v1 kind: VirtualService metadata: name: productpage namespace: team-1 spec: exportTo: - "." hosts: - productpage.default.svc.cluster.local http: - route: - destination: host: productpage --- apiVersion: networking.istio.io/v1 kind: VirtualService metadata: name: custom namespace: team-2 spec: exportTo: - "." hosts: - productpage.default.svc.cluster.local http: - route: - destination: host: productpage.team-2.svc.cluster.local ---