14.06.2023
Gefyra’s number one competitor evaluated
Exploring Telepresence’s Docker Desktop Extension
Robert tried out Telepresence’s Docker Desktop extension and drew comparisons to Blueshoe’s own cloud-native development tool Gefyra. This post is the result of a live video exploring session on the first time use of the extension.
For the past couple of years Blueshoe has been working intensely on an alternative solution to Telepresence - called Gefyra. Since the good folks of Ambassador Labs have released Telepresence v2, which was a massive rewrite, fixed some issues, added new features as well as a Docker Desktop Extension.
Since then Gefyra also came a long way, we released Gefyra v1 as well as a Docker Desktop Extension. This blog post is a summary of the exploration session video I did in the beginning of May 2023.
Installation of Telepresence Docker Desktop Extension
Docker’s marketplace makes it super easy to install new extensions. Same with Telepresence. Just look it up in the marketplace and hit “Install”.
The screenshot shows an already installed extension state.
After the installation has finished the Telepresence extension shows up in Docker Desktop’s sidebar. A nice graphic as well as some explanations are displayed when opening the extension for the first time.
Oops - you first have to create an account - before actually you can get started with Telepresence Docker Desktop. Fair enough - let’s set up an account and continue. The process was a bit flaky, after creating the account its page redirects to a localhost port which simply does not respond. After trying again the registration seems to have worked.
Back to Docker Desktop!
Simple Intercept with Telepresence on Docker Desktop
After the account setup we can now actually start working with Telepresence’s Docker Desktop extension. The home screen now looks like this:
Docker Desktop’s Kubernetes context is preselected. One thing I noticed (also in the video) is that you cannot change your kubeconfig to select different contexts. It seems Telepresence assumes all your relevant clusters are available in your default kubeconfig file.
Make sure to tick “Install Telepresence on this cluster” since it - same as Gefyra - needs to install a few components the first time it is used on a cluster.
After a short loading time everything is available. In the video I am trying out the demo case and struggle a bit, since there have been other components installed in the cluster. I leave it out here for the sake of the reader 🙂
On the following screen Telepresence displays the “services” for a given namespace. In case you watch the video - I was a bit confused since my service did not show up here. Turns out Telepresence does not allow to intercept pods - rather it wants to work with deployments.
I rewrote my frontend pod’s manifest to be a deployment. It showed up afterwards - let’s intercept! The intercept options are fairly limited which makes it easier for the user to finish the intercept setup:
The ports come prefilled - I only have to choose a “Target docker image”. The dropdown allows me to choose any of the available images on my machine. The image then will be used to start a container which then can receive the traffic from Telepresence’s intercept.
After setting up the intercept the Docker Desktop Extension displays the log of the container. In the past we did this with Gefyra as well - however, there is a built-in log viewer in Docker Desktop, which basically does the job.
Surely the way Telepresence solved displaying the logs allows the user to stay within the extension. However for longer log output this seems a bit messy. Furthermore I am not sure (from a user’s perspective) why this is the time and place to manage my subscriptions. Let’s close that overlay.
Alright! The traffic is intercepted! And there is even a preview url - which allows me to share my running container with my team. That’s indeed an amazing feature. There are some information displayed about the currently running intercepts.
Below the intercept overview are two more buttons to create another intercept. It seems they have a standardized file format to share intercept request parameters within your development team. That’s amazing.
However - as a developer I am missing especially one particular feature here - hot code reloading. In case anyone reading this knows how to do it - feel free the contact us - we will update the blog post asap!
With Gefyra’s Docker Desktop Extension you can just mount your code into your running container. This way the code within the container is continuously updated which is a huge advantage to Telepresence’s implementation of running containers locally. Also Telepresence’s CLI actually supports intercepting traffic and sending it to a specified process on your machine - it’s Docker Desktop Extension does not (yet).
After stopping the intercept we are redirected to the home screen:
One thing I also noticed during the exploration of this Docker Desktop Extension was that it is not open source (8 May 2023). All of Gefyra’s components and extensions are fully open source - this way developers can actually check what happens on their machine and in their clusters.
Summary
Telepresence currently only implements few of their capabilities in their Docker Desktop Extension. I am sure they will upgrade it in the future, especially since they announced a partnership with Docker itself. The extension brings some value to the user, however some of the really important core features for cloud native software development are missing. We developed Gefyra’s Docker Desktop Extension based on Blueshoe’s needs as a cloud native software development company.
We’re super excited to see how Telepresence has evolved and even though Gefyra and Telepresence are competing tools for similar use-cases it gives us a lot of motivation and inspiration to push Gefyra further!
OUR PODCAST: TOOLS FOR THE CRAFT
E3: Deep dive into Getdeck
Michael and Robert are introducing and demonstrating Getdeck as well as comparing local and remote Kubernetes and preproduction clusters
More editions of our podcast can be found here: