Introducing KubeSquash: Remotely Debug your Kubernetes Pods

The absence of debuggers for microservice applications has made debugging them a daunting task. Instead, typical “debug” workflow of microservices applications boils down to changing a few lines of code (e.g. by adding some print statements), recompiling, rebuilding images, redeploying, and then scanning through log lines over and over again. It often takes many iterations of this process in order to achieve the same effect that a debugger gives in one step. This cycle of rebuild-repush-redeploy is time consuming, inefficient, and frustrating for developers.

Late last year we introduced Squash, the microservices debugger. Squash is a tool that allows attaching any modern debugger to any microservices platform, bringing live debugging to microservices applications, including getting/setting the value of variables, adding pauses and sleeps in certain portions of the code, forcing the execution of specific code paths, and more.

While Squash is a powerful and flexible platform, we realized that one of its most frequent uses — debugging microservices deployed on Kubernetes — can benefit from a dedicated tool, which can be launched in seconds with no overhead. Today we are announcing the release of KubeSquash, the kubernetes remote debugger.

KubeSquash is a simple command-line tool. We’ve designed its user interface to be dead simple: invoke with a single command “kubesquash”, target the desired pod, and the debugging session is initiated automatically with nothing to configure or deploy. KubeSquash can also leverage Skaffold to determine exactly which pod to debug. KubeSquash can also be used via our extension for VSCode.

We at Solo use KubeSquash on a daily basis to debug our Go applications (like Gloo, our function gateway) as well as C++ applications (including Envoy), as they run live on Kubernetes. This gives us much deeper introspection into what’s going on than we have available using any other means. It becomes just as easy to debug something running live on kubernetes as it is when running on a local developer workstation.

We invite you to try KubeSquash. We hope it will improve your velocity and coding experience like it has for us at Solo. Please join us on our slack channel or contribute to our issues in our GitHub to help us improve. Happy squashing!