<p>Here is how my <strong>virtual service</strong> currently looks like -</p>
<pre><code>apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: example-route
spec:
  hosts:
 - example.com
  http:
 - match:
    - port: 443
    - uri:
        prefix: &quot;/catalog&quot; 
   route:
    - destination:
        host: catalog-server.ns.svc.cluster.local
 - match:
    - port: 443
   route:
    - destination:
        host: general-server.ns.svc.cluster.local
</code></pre>
<p>What I want is to set a fallback or default host for the destination host (catalog-server.ns.svc.cluster.local) in virtual service/istio?</p>
<p>I expect something like this</p>
<pre><code>apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: example-route
spec:
  hosts:
 - example.com
  http:
 - match:
    - port: 443
    - uri:
        prefix: &quot;/catalog&quot; 
   route:
    - destination:
        host: catalog-server.ns.svc.cluster.local
      fallback:
        host: general-server.ns.svc.cluster.local

 - match:
    - port: 443
   route:
    - destination:
        host: general-server.ns.svc.cluster.local
</code></pre>
<p><strong>use case:</strong>
When there is heavy traffic in &quot;/catalog&quot;, I turn up a catalog server, which is the same as general server but exclusive for the request type.
So when catalog server is up, the &quot;/catalog&quot; requests must be forwarded to catalog-servers, and when down, it must be forwarded to general servers. And I cannot update virtual service every time I launch or remove catalog-servers.</p>

<p>Istio does provide some support for circuit breaking as described in <a href="https://istio.io/latest/docs/tasks/traffic-management/circuit-breaking/" rel="nofollow noreferrer">https://istio.io/latest/docs/tasks/traffic-management/circuit-breaking/</a></p>
<p>However, afaik there is no support for fallbacks. This probably means that the application would have to call the fallback if the main service is down.</p>
