In a recent survey of over 5,000 enterprise companies, 58% responded that they were using Kubernetes — the open-source container-orchestration system for automating app deployment, scaling, and management — in production, while 42% said they were evaluating it for future use. The momentum was a motivating force behind Google’s Skaffold, a command line tool that facilitates continuous development for Kubernetes-native apps. It launched in preview and subsequently in beta in products on Google Cloud Platform in 2017, and as of today, it’s generally available for eligible customers.
“[We] noticed that developers creating Kubernetes-native applications spent a long time building and managing container images across registries, manually updating their Kubernetes manifests, and redeploying their applications every time they made even the smallest code changes,” wrote software engineer Nick Kubala and product manager Russell Wolf in a blog post, who noted that there have been more than 5,000 commits from nearly 150 contributors over the course of two years and 40 releases. “We set out to create a tool to automate these tasks, helping them focus on writing and maintaining code rather than managing the repetitive steps required during the edit-debug-deploy ‘inner loop’. From this observation, Skaffold was born.”
For the uninitiated, Skaffold’s central command — skaffold dev — watches local source code for changes and rebuilds and redeploys apps to clusters in real time. It natively supports common image-building and app deployment strategies, making it compatible with a wide variety of both new and pre-existing projects. And it operates on the client-side, conferring performance advantages.
Skaffold’s dev loop automates tasks like tailing logs from deployed workloads and port-forwarding remote apps to local machines, so that they can be iterated against endpoints. Its utilities can build images and deploy apps to production, reusing much of the same tooling leveraged locally, and its profiles enable the use of a single configuration across environments (even staging and production) that can be tailored using the current Kubernetes context.
Helpfully, Skaffold fields configuration changes dynamically, which is presumably why Google tapped it to power the debugging features in Cloud Code for IntelliJ and Cloud Code for Visual Studio Code. Plus, it natively supports direct debugging of apps programmed in a range of languages — including Golang, NodeJS, Java, and Python code — running on clusters.
“Our goal with Skaffold and Cloud Code is to offer industry-leading tools for Kubernetes development, and since Skaffold’s inception, we’ve engaged the broader community to ensure that Skaffold evolves in line with what users want,” wrote Kubala and Wolf. “There are some amazing ideas from external contributors that we’d love to see come to fruition, and with the Kubernetes development ecosystem still in a state of flux, we’ll prioritize features that will have the most impact on Skaffold’s usefulness and usability. We’re also working closely with the Cloud Code team to surface Skaffold’s capabilities inside your IDE.”