Helm, often referred to as the package manager for Kubernetes, allows developers and operators to easily package, configure, and deploy applications and services onto Kubernetes clusters. Helm achieves this using a packaging format called charts, which are collections of pre-configured Kubernetes resources.
Intro to Helm
Helm, often dubbed the “package manager for Kubernetes,” was jointly developed by Google and Deis (later acquired by Microsoft) to streamline the deployment and management of applications on Kubernetes clusters. By utilizing packages termed as “charts,” Helm simplifies the definition, storage, and sharing of Kubernetes applications, enabling consistent and reproducible deployments. Combining pre-configured Kubernetes resources in charts, Helm not only eases application distribution but also offers versioning and rollbacks, fostering agility and reliability in Kubernetes-based environments.
Helm Quick Facts
- Origins: Helm was originally conceived during a hackathon at Deis, a company that Microsoft later acquired, and it was developed in collaboration with Google Cloud.
- Package Format: Helm uses a packaging format known as charts, which are essentially bundled Kubernetes applications. A single chart can define, version, and package Kubernetes resources.
- Tiller-less: With the release of Helm v3, the Tiller component, which managed releases in Helm v2, was removed, enhancing security and simplifying the architecture.
- CNCF: Helm is a top-level project under the Cloud Native Computing Foundation (CNCF), cementing its central role in the Kubernetes ecosystem.
- Community Strength: As of 2021, the Helm project had received contributions from over 1,500 individual contributors, and the central Helm chart repository hosted over 300 stable charts for common software applications.
- Chart: This is a Helm package. It contains all the necessary resource definitions required to run an application, tool, or service inside a Kubernetes cluster.
- Release: After installing a chart onto a Kubernetes cluster, the instance of the chart running is called a release.
- Repository: A collection of charts that can be added, listed, and fetched to streamline the installation process.
Benefits of Using Helm
- Simplicity: Helm abstracts the complexity of Kubernetes manifests, making deployments consistent and reproducible.
- Versioning: Helm charts are versioned, allowing for easy rollbacks and upgrades.
- Shared Configurations: Charts can be shared, promoting consistent setups and configurations.
- Rollbacks: Helm supports rolling back to any version of a deployed chart, making it safer to deploy and update applications.
- Community: A significant number of stable charts are available for popular software, maintained and contributed by the community.
How Helm Works
Helm has a client-server architecture:
- Helm (Client): The CLI tool that users interact with. It can be used to develop charts or manage releases.
- Tiller (Server): Used in Helm v2, Tiller interacted with the Kubernetes API server to install, upgrade, query, and remove Kubernetes resources. Note: Helm v3 removed the Tiller component, and the Helm client now interacts directly with the Kubernetes API.
Helm Versus Alternatives
There are several other tools that perform functions similar to what Helm does, including Kustomize, Skaffold, and Kapitan. The chart below compares Helm with each of those Kubernetes configuration tools.
Getting Started with Helm
1. Installing Helm:
First, you need to install the Helm CLI.
- For macOS:bashCopy code
brew install helm
- For Linux:bashCopy code
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
2. Initialize Helm:
For Helm v2, you’d typically initialize Helm to set up Tiller in the cluster:
But for Helm v3 and onwards, this step is no longer required.
3. Adding Chart Repositories:
Add the Helm stable repository to get started with community charts:
helm repo add stable https://charts.helm.sh/stable helm repo update
4. Installing a Chart:
Use a simple
helm install command followed by a release name and the name of the chart.
helm install [RELEASE_NAME] stable/[CHART_NAME]
For example, to install the
helm install my-nginx-release stable/nginx
5. Managing Releases:
- List all releases:bashCopy code
- Uninstall a release:bashCopy code
helm uninstall [RELEASE_NAME]
- Upgrade a release:bashCopy code
helm upgrade [RELEASE_NAME] [CHART]
6. Developing Custom Charts:
- Create a new chart:bashCopy code
helm create [CHART_NAME]
This command generates a directory with the basic chart structure, which you can then customize.
Helm simplifies Kubernetes application management, providing the tools needed to develop, install, and manage applications with ease. By leveraging Helm charts and the vast community-driven repositories, operators can deploy consistent and reproducible environments, making the software lifecycle more efficient and resilient. Whether you’re a developer or an operations professional, Helm can streamline your Kubernetes deployments, making it an essential tool in modern cloud-native environments.