Service mesh of VMs with Istio in K8s


Hi Everyone,
Current setup in our org:
Services are registered to consul and contact each other using the DNS provided by consul. Consul also does the load balancing for us

Desired setup
Our idea is is to have a service mesh of vms running docker containers initially and eventually transition to a full k8s implementation of the service mesh. In our projected setup, we ll have istio-deployed in K8s. The VM would have the app and as well the pilot-agent(sidecar) deployed as separate containers.

  1. The apps will still register to consul.
  2. Envoy Sidecars running on VMs would be connected to the istio-pilot running in k8s
  3. For a particular service, Istio-pilot would fetch the service catalog from consul.
  4. The service configuration(instance Ips etc) would be distributed to the sidecars.

My questions are:
Does this look like a feasible idea ? If no why not ?
If yes, What are some of the approaches I can follow to enable routing of traffic from envoy to envoy in this setup? Can I use the existing init container image somehow to achieve this ?


It would be nice if anyone can provide opinions on this.