Search code examples
istiokongservicemeshkuma

How to connect a local service being developed to a hosted service mesh?


I currently have a hosted (GCP) microservice environment that is under development. When working on a service I currently run the environment locally. I run all the services that the service I am working on needs to communicate to.

This provides a bad developer experience because:

  • I have to spin up every service; there can be a lot
  • running so many services can use a lot of my system resources
  • If any of those services need a DB, I have to set that up too

I'm looking for a soution to this. Idealy, I will run just the single service locally and connect to the rest of the services in the hosted environment.

Do any of the popular service meshes offer this as an option? I'm looking at Istio and Kuma primarily. Are there any alternatives solutions that come to mind?


Solution

  • For remote development/debugging I would suggest to have a look at Telepresence.

    https://www.telepresence.io/

    It is even recommended by Kubernetes docs:

    Using telepresence allows you to use custom tools, such as a debugger and IDE, for a local service and provides the service full access to ConfigMap, secrets, and the services running on the remote cluster.

    https://kubernetes.io/docs/tasks/debug-application-cluster/local-debugging/

    Istio on the other hand enables you to do shadow deployment and canary or blue/green deployment. You can e.g. run a service and send certain user (based on the header) to a new version. You can mirror traffic to a service or shift traffic from 0 to 100 % step by step. I'd say it's more for testing your new service under load or gradually releasing a new version.