Open-source tool made to simplify Kubernetes package maintenance and oversight with consistency in mind.
Helm is like any other convenient command-line package manager tool, but with one major exception – It's for Kubernetes. Using an accessible package description format called a chart, Helm lets devs deploy apps and projects uniformly, making it tailored to fast-paced CI and distributed workflows.
Helm is an open-source tool made to simplify Kubernetes package maintenance and oversight with consistency in mind. It describes packages using a custom format called a chart – essentially a directory of specification and template files – so getting started is straightforward for anyone familiar with Kubernetes, YAML, and their shell of choice. Its platform-agnostic CLI makes it essentially like a dnf, apt, or npm for cloud deployments.
Helm's chart-centric architecture offers a few decided benefits. Most importantly, it promotes release consistency: Each package configuration is a logical, no-frills affair that's extremely readable, facilitating simple duplication.
The format is flexible enough to run complex apps, but you can also use it for simpler tasks – like spinning up a MongoDB database or setting up autoscaling Kubernetes worker nodes. Charts also make it possible to accomplish different CI tasks, like creating tests that verify how a chart works after an install, using secrets securely with hooks, and backing up vital data before upgrading.
Helm takes a distinctly unopinionated approach to Kubernetes management that may appeal more to devs than project managers. Users can interact with charts, chart repositories, or releases (charts running in active clusters), via a highly-featured CLI tool. Although the lack of a UI might not be everyone's cuppa, there's something to be said for a simple, non-distracting workflow.
Consistency is the name of the game with Helm. By packaging all resources needed for a deployment, it can help devs get clusters operating smoothly and uniformly – without the high barriers to entry associated with some alternatives.
Helm has been around since the early days of Kubernetes itself: It was notably present at the inaugural KubeCon conference in 2015, and it joined the Cloud Native Computing Foundation (CNCF) the same year. Originally a product of a Deis (now a part of Microsoft) hackathon prior to being open-sourced, Helm's popularity grew alongside that of Kubernetes, attracting major contributions from Google and hundreds of other organizations. Today, it's among the most widely used, community-supported package managers for clusters.
As of early 2022, Helm was on its third major release, and the project had just over 21K stars on Github – not bad compared to Kubernetes' 86K. It features an Apache 2.0 License, and it's a good example of the Go programming language in a highly-used app. Interestingly, it's become such a de-facto standard that you'll often find Helm chart support in other Kubernetes package and configuration management tools.
Teams can get the ball rolling without learning new formats or investing heavily in training. Most people can master basic setups in a few minutes, and it's fairly easy to customize more advanced behaviors using ordinary Go Templating.
The official distributed charts at ArtifactHub – which is itself powered by a Helm chart – serve as good sources of inspiration for those learning the ropes. Setting up a repo is also simple since it only needs to serve files and accept GET requests, so you can get going with an Amazon server or roll your own.
Helm's popularity has resulted in a lot of helpful tooling for getting work done. Widespread adoption also helps keep this tool from becoming opinionated: Although they've historically been some of the biggest backers, companies like Microsoft and Google are just a small slice of the overall contributor pie.