HELM 101: An Introduction to Package Manager for Kubernetes
Helm is a Kubernetes package manager. it helps in streamlining the application management by using "Charts" to package the Kubernetes resources. It facilitates simplifying the deployment, upgrades, and dependency resolution within Kubernetes clusters. Helm includes a server component called "Tiller" and supports customization through values files and templates, making it easier to deploy applications with consistent configurations across different environments.
Table of Content
What is Helm?
Helm is a package manager for Kubernetes. It facilitates the deployment and management of the applications and their dependencies in the Kubernetes cluster. It simplifies the process of deploying complex applications by using "Charts" which are bundles of predefined Kubernetes resources. Helm allows the users to define, install and upgrade the applications with ease through its command line interface CLI. It also supports the versioning, rollback capabilities and integration with helm repositories for sharing and discovering the charts.
.png)
How Helm Works?
Helm has a server component – ‘Tiller’, which is deployed in the same Kubernetes cluster as other deployments. Tiller essentially listens and acts on the commands administered through the ‘Helm’ CLI tool and convert those to Kubernetes manifests. Helm packages are managed through an abstraction called ‘Charts’. There is an official chart repository maintained by the Helm Community which hosts packages for the commonly used applications. Other than the already existing charts, users have the flexibility to create new charts for their unique use-case and push them to a public/private repository.

A typical helm chart consists of templates, values.yaml, and chart.yaml. Chart.yaml consists of all the metadata related to the deployment like an owner, email, version, etc. Values.yaml have all the default configurations needed for the application to function. The fields in values.yaml can be overridden to custom values based on the requirements. A simple use case for this is the deployment of an application in a tiered environment like development, staging, and production with different configurations and keys. The template file uses the Golang templating format to assemble the configurations from values.yaml or command line and convert the complete configuration into a Kubernetes manifest. Helm manages the installation of a chart through the notion of ‘Releases’. A combination of deployment, configuration, and the defaults in values.yaml creates a unique release.
A single chart can be used to create multiple releases based on varied configurations. A specific use case for this is a messaging queue or a broker. If we need to deploy a cluster of brokers such that it follows the conception of ‘High Availability’, we may deploy 1 queue as active and another queue as a mirror of the active queue. Another use case would be having 2-3 queues out of which 1 is used for writing data and, the others are used for reading the mirrored data. In-case the application is read-heavy rather than write-heavy, this configuration can benefit application performance.
Helm terminologies and core components
- Chart: It is a package of containing pre-configured kubernetes resources.
- Release: It is an instance of runnning charts in a kubernetes resource.
- Repository: It is a collection of charts that can be shared and stored.
- Values: It is useful for configuration settings that can help in customizing chart deployments.
- Helm Chart: It is a helm package manager that contains a collection of kubernetes resource defintions.
Basic Commands of Helm
The following are the some of the basic commands of Helm:
1. Install a Helm Chart
- The following command is used for installing a Helm Chart:
helm install <release-name> <chart-name>
2. List All Helm Releases
- The following command is used for listing all releases in the current namespace:
helm list
3. Upgrade a Helm Release
- The following command is used for upgrading a Helm Release:
helm upgrade <release-name> <chart-name>
4. Uninstall a Helm
- The following is the command used to uninstall a helm release, deleting of all associated kubernetes resources.
helm uninstall <release-name>
Difference between Helm and Kubernetes
The following are the difference between helm and kubernetes:
Feature | Helm | Kubernetes |
---|---|---|
Purpose | It is package manager for Kubernetes applications | It is a Container orchestration platform |
Main Components | Charts, Tiller are the main components of helm. | Pods, Services, Deployments, ReplicaSets |
Deployment | It manages deployment of applications | It orchestrates containers across nodes |
Abstraction | Uses Charts to abstract Kubernetes resources | Directly manages container orchestration |
Customization | Supports values files and templates for configuration | Configuration through YAML manifests |
Updates | Simplifies application upgrades through Charts and releases | Manages rolling updates and scaling |
Usage | Ideal for packaging, distributing, and managing Kubernetes applications | Used for deploying, scaling, and managing containerized applications |
Difference between Helm and Docker
The following are the difference between helm and docker:
Feature | Helm | Docker |
---|---|---|
Purpose | It is package manager for Kubernetes applications | It is platform for building, shipping, and running containers |
Main Components | Charts, Tiller | Docker Engine, Dockerfile, Docker Compose |
Abstraction Level | Abstracts Kubernetes resources with Charts | Virtualizes operating system-level containers |
Usage | It manages the application deployment and lifecycle within Kubernetes clusters | it builds, runs, and distributes containerized applications across environments |
Community | It maintained by Helm community and CNCF | It is developed and maintained by Docker, Inc. |
Why use Helm Charts in Kubernetes?
The following are the some of the reasons and insights on using of helm charts in kubernetes:
- Standardized Packaging: It provides a standardized way of packaging the kubernetes applications with their dependencies.
- Reusability and Modularity: Charts will encapsulates the kubernetes resources into as reusable components. Its modularity allows for easier sharing and deployment of applications, promoting the efficiency over the effort.
- Community and Ecosystem: Helm has a strong community and centrailized repository of official and community maintained charts. Its ecosystem helps the users to discover, share and contribute the charts for common applications.
- Customization and Flexibility: Charts supports the parameterization through the values and templates. It allows the users to customize the deployments based on the specific requirements.
Advantages and Disadvantages of Helm
The following are the advantages and disadvantages of Helm:
Advantages
- Simplifies Deployment: The following command is used to streamline the deployment and management of kubernetes applications through packaged charts.
- Version Control: The facilitates with providing the version control for application releases, making it easy to roll back to previous versions.
- Reusable and Shareable Charts: It facilitates with promotes reusability and sharing of helm charts across different projects and teams.
Disadvantages
- Learning Curve: It requires a learning curve for new uers to understand the helm concepts and YAML syntax.
- Complexity with Customization: It can become complex when their are heavily customizing charts and requires careful management of values and templates.
- Dependency Management: Management of dependencies can be challenging, especially with nested charts and version mismatches.
Best Practices of using Helm
The following are the best practices of using Helm:
1. Use Version Control: It is used for storing the helm charts in a version control systems like Git for tracking the changes and collaborations.
2. Implement Chart Testing: It is useful for tools like Helm Test and automated CI/CD pipelines for testing charts before deploying to production.
3. Follow Security Best Practices: It helps in audit and review of helm charts for security vulnerabilities and use secure credentials and access controls.