Why Telepresence?

Let's assume you have a web service which listens on port 8080, and has a Dockerfile which gets built to an image called examplecom/servicename. Your service depends on other Kubernetes Service instances (thing1 and thing2), and on a cloud database.

The Kubernetes staging environment looks like this:

Loading diagram...

The slow status quo

If you need that cloud database and those two services to directly test your software, you will need to do the following to test a change:

  1. Change your code.
  2. Build a Docker image.
  3. Push the Docker image to a Docker registry in the cloud.
  4. Update the staging Kubernetes cluster to use your new image.
  5. Wait for the image to download.

This is slow.

Loading diagram...

A fast development cycle with Telepresence

Telepresence works by running your code locally, as a normal local process, and then forwarding requests to/from the Kubernetes cluster.

Loading diagram...

This means development is fast: you only have to change your code and restart your process. Many web frameworks also do automatic code reload, in which case you won't even need to restart.

Other options

For more discussion of the solution space for local development see the article Development Environments for Microservices.