Earlier in the month, the Cloud Native Computing Foundation (CNCF) Technical Monitoring Committee (TOC) voted to accept Rod as a hosted project at the incubation level. Helm is a package manager that provides an “easy way to find, share, and use software designed for Kubernetes”.
Helm has existed as a sub-project under the Kubernetes CNCF-hosted project, the container orchestrator, since February 2016. The project was started by Deis (acquired by Microsoft in 2017) and merged with Kubernetes Deployment Manager from Google to become Kubernetes Helm. The CNCF blog announcing Helm hosting as standalone project states that “as Kubernetes focuses on its own core to better manage this growth, CNCF is an excellent home for Helm to continue to help streamline Kubernetes deployments for developers and operators.”
Conceptually, Helm is similar to operating system (OS) package managers such as Debian APTs, The yum of the red hatand macOS Homebrew, in that it copies files to the correct file system locations, sets permissions appropriately, and configures how an application should be initialized and run. Helm’s packaging format, called graphics, is a collection of files that describe a related set of Kubernetes resources. Graphs are created as files arranged in a particular directory tree, which can then be packaged into versioned archives for deployment.
Matt Floursenior engineer at Samsung SDS and co-founder of the application-focused Kubernetes Special Interest Group (GIS applications), created an informative blog post explaining where the package manager Helm integrates into the Kubernetes ecosystem of tooling. Drawing on an operating system analogy, Farina states that Helm is “a package manager in the same vein as apt”, which conceptually sits above other abstractions such as ELF binaries and the configuration stored with operating system specific directories like “/etc” and “/opt”. He goes on to explain that in the same way that operating system configuration management tools such as Chef, Puppet, and Ansible are used to manage higher-level applications, there are analogous projects that sit conceptually above Helm, notably helm file, armada, landscaperand others.
Farina also writes that many operators wonder why they would need to use a package manager like Helm to manage Kubernetes applications. A big part of why package management is desirable comes down to shared reusable expertise targeted around applications.
If you’re a typical person running an app, you’re concerned with your app, not the platform it’s running on or your app’s dependencies.
He cites three things to consider:
- Distributed application specific business expertise management – a developer can depend on a package from someone expert so you don’t need to have it and can focus on your specific business needs
- Reusable organization packages – Custom packages, which a company’s operational experts have put in place, which can be run locally, in test and in production under various reusable circumstances
- Application specific configuration – Operating applications are application specific and applications have varying needs which can be configured
It should be noted that Helm is only a solution to the problem of managing Kubernetes packages and installing applications, and Shahidh K Mohammed created a full blog post, “Draft vs Gitkube vs Helm vs Ksonnet vs Metaparticle vs Skaffold“, which explores alternatives.
It is also recommended that readers interested in this space familiarize themselves with the Operator model, originally defined by the CoreOS team (now acquired by Red Hat), which define a mechanism to “create, configure, and reliably manage complex application instances on Kubernetes”. The operators consist of Kubernetes custom resources — sometimes called custom resource definitions (CRDs) — and Custom controllers. Shopify, a large e-commerce platform, makes extensive use of custom controllers, and Niko Kurtti will explore this in depth in his upcoming QCon New York conference.”Forced Evolution: Shopify’s Journey to Kubernetes“.
Additional information about Helm is available at https://helm.sh/. A video from the KubeCon / CloudNativeCon 2017 conference, “Build Helm charts from scratch” by Amy Chenexplains how to create Helm charts and can be found on the CNCF YouTube channel.