<p>I’m trying to achieve canary-style traffic management for applications which are not yet part of the Istio service-mesh but still are in the same k8s cluster. For example:</p>
<p><code>Pod</code> A in the namespace <code>non-mesh</code> calls <code>Service</code> B in namespace <code>mesh</code> which is bound to the pods inside the service mesh. A desired state would be when traffic to these pods is distributed by the rules described in related <code>VirtualService</code> object.</p>
<p>Is this possible by Istio’s native facilities?</p>

Dlbas
<p>In Istio a <code>VirtualService</code> Objects inserts a Route rule inside the service mesh sidecars. These routes rules are evaluated on the client-side (In your case that would be the sidecar associated with <code>Service A</code> if there was a sidecar present with it). Due to this, you can't perform traffic management between <code>Service A</code> to <code>Service B</code> ( As there is no client sidecar). One possible method to solve this, in case you don't want to enable mesh for the entire <code>non-mesh</code> namespace is to only insert sidecars for <code>Service A</code>. This will create all the necessary rules in the sidecar and then you can use traffic weights to modify requests between Service A and Service B</p>
