Compendium of Kubernetes Application Deployment Tools

Deploying applications to Kubernetes can be as simple as writing a few resource definitions in yaml or json and applying them with kubectl, but it can also be a whole lot more automated (and complicated).

A popular meme in application deployment is the combination of Continuous Deployment and GitOps: the automatic deployment of resources after each change to the source code. In order to for you to use GitOps to deploy applications to Kubernetes, you need several things:

  • Container Image Building to build your source code and local dependencies into container images.

In this article, I have listed many tools (both popular and obscure) for each of these stages in application lifecycle management. Since it’s hard to judge popularity or success objectively, I’ve tried to annotate these tools in a way that makes it easy to see which big corporate backers have invested in these projects. Keep in mind, a large cloud backer may have multiple competing investments, so just because it has a known investor doesn’t mean it will survive and thrive in the long term.

Hopefully this list will give you a place to start when searching for solutions to your application deployment problems.

Container Image Building

  • Moby / buildkit (Docker) — A toolkit for converting source code to build artifacts.

Resource Templating

  • Helm (Microsoft, Google) — A Kubernetes Package Manager

Package Management

Continuous Deployment

  • Spinnaker (Netflix, Google) — A multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.

Imperative Deployment

  • Kubebuilder (CNCF, Google, Apple, IBM/Red Hat) — An SDK for building Kubernetes APIs (and controllers and operators) using CRDs.

Autoscaling

  • Horizontal Pod Autoscaler (built-in) — A Kubernetes controller that automatically scales the number of pods in a replication controller, deployment, replica set or stateful set based on a configured metric.

In The End…

As any DevOps advocate will tell you, it’s not about the tools but about the mindset. No one tool will give you an end to end application lifecycle management experience that delights you, because everyone uses their own permutation of tools, glued together with scripts and integration code.

You can look for tools that do one thing well, being easily replaceable and extensible, or tools that provide the most value, being less to manage, cheaper to integrate, and the best end to end user experience. There’s not really a wrong answer.

Because of those tradeoffs, it pays to look at who is behind each project, how many companies are investing, and how popular the tool is. Popular tools with large, diverse investors are more likely to keep growing as you use them, rather than stagnate and become abandoned, requiring you to replace the tool or replace the investment with your own time and energy.

Hopefully, this taxonomy will be useful and provide you with a starting place as you consider your options. Good luck!

Did I forget your favorite tool? Leave a comment or let me know on Twitter!

--

--

Cloud Guy. Anthos Solutions Architect at Google (opinions my own). X-Cruise, X-Mesosphere, & X-Pivotal.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Karl Isenberg

Cloud Guy. Anthos Solutions Architect at Google (opinions my own). X-Cruise, X-Mesosphere, & X-Pivotal.