What is Helm?

Learn what Helm is, the Kubernetes package manager. Understand charts, releases, architecture, and how Helm simplifies Kubernetes application deployment.

Helm Charts Releases
What is Helm?

Helm is the package manager for Kubernetes. It helps you define, install, and upgrade complex Kubernetes applications. Helm charts are packages of pre-configured Kubernetes resources that can be versioned, shared, and reused.

Helm solves the challenge of deploying complex microservices applications that consist of multiple interdependent Kubernetes resources. Instead of managing dozens of YAML files manually, you can use a single chart with configurable parameters.

Key Concept: Helm is often described as the "apt-get" or "yum" for Kubernetes. It provides a way to package, version, and deploy applications consistently across environments.
Why Use Helm?

Helm addresses several challenges in Kubernetes application management:

Complexity Management

Helm packages complex applications with multiple resources into a single, manageable unit. No more managing dozens of YAML files individually.

Version Control

Charts are versioned, allowing you to track changes, rollback to previous versions, and manage application lifecycle.

Reusability

Create reusable charts that can be shared across teams and projects. Use parameterization to adapt charts to different environments.

Configuration Management

Separate configuration from application code using values.yaml files. Easily override values for different environments.

Release Management

Helm tracks releases, providing history, rollback capabilities, and easy upgrades. Know exactly what's deployed and when.

Sharing

Share charts through Helm repositories (ArtifactHub, OCI registries). Benefit from the community's extensive chart library.
Helm Architecture

Helm consists of two main components: the Helm client and the chart repository. In Helm v3, the server-side Tiller component was removed for better security and simplicity.

Helm CLI

The command-line interface for interacting with Helm. Used for chart creation, installation, upgrades, and repository management. Communicates directly with the Kubernetes API.

Chart Storage

Helm v3 stores release information as Kubernetes Secrets in the cluster namespace. This eliminates the need for Tiller and improves security.

Render Engine

Helm uses Go templates with custom functions and pipelines to render Kubernetes manifests from chart templates and values files.

Chart Repository

OCI-compliant repositories for storing and sharing charts. Supports HTTP/HTTPS and OCI registry protocols.
# Install Helm v3 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 # Verify installation helm version # Add Helm repositories helm repo add stable https://charts.helm.sh/stable helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update # Install a chart helm install my-nginx bitnami/nginx --namespace default # List releases helm list helm list --all-namespaces # Uninstall a release helm uninstall my-nginx
Helm v2 vs v3: Helm v3 removed Tiller for better security and simplicity. Always use Helm v3 for new projects. The command syntax is similar, but the architecture is significantly different.
Key Helm Concepts

Chart

A Helm package containing all Kubernetes resources needed to run an application. Includes templates, default values, and metadata.

Release

An instance of a chart running in a Kubernetes cluster. Each release has a unique name and tracks its own history and state.

Values

Configuration parameters that customize chart deployment. Values can be defined in values.yaml files or overridden during installation.

Template

Go template files that define Kubernetes resources. Templates use values and helper functions to generate the final manifests.

Repository

A collection of packaged charts. Charts can be stored in HTTP servers, OCI registries, or local filesystems.

Dependency

A subchart that a chart depends on. Dependencies are managed in the Chart.yaml file and can be versioned and updated.
# Example: Installing a chart with custom values helm install my-release bitnami/nginx \ --set replicaCount=3 \ --set service.type=LoadBalancer \ --set image.tag=1.25 # Example: Using a values file helm install my-release bitnami/nginx -f custom-values.yaml # Example: Upgrading a release helm upgrade my-release bitnami/nginx --set replicaCount=5 # Example: Rolling back a release helm rollback my-release 2 # Example: Viewing release history helm history my-release
Helm v2 vs Helm v3: Key Differences

Tiller Removal

Helm v3 removed Tiller, the server-side component. Helm now communicates directly with the Kubernetes API, improving security and simplifying operations.

Security

With no Tiller, there's no cluster-wide service account. Releases are stored as Secrets in the namespace, providing better RBAC and isolation.

OCI Registry Support

Helm v3 supports OCI registries for storing and distributing charts. This provides better integration with container registries.

JSON Schema Validation

Helm v3 supports values.schema.json for validating values files, preventing misconfigurations before installation.
Helm v2 Deprecation: Helm v2 is deprecated and no longer receives security updates. Always use Helm v3 for new projects and migrate existing Helm v2 deployments.
Common Helm Use Cases

Application Deployment

Deploy complex microservices applications with a single command. Manage the entire application lifecycle with upgrades and rollbacks.

Configuration Management

Use Helm to manage environment-specific configurations. Override values for dev, staging, and production using values files.

Chart Sharing

Share reusable charts with your team or the community. Use ArtifactHub to discover and use public charts.

CI/CD Integration

Integrate Helm with CI/CD pipelines (GitHub Actions, GitLab CI, Jenkins) for automated deployments and rollbacks.

Security

Use Helm with sealed secrets, chart signing, and provenance for secure deployments. Manage secrets separately from configuration.

GitOps

Use Helm with ArgoCD or Flux for GitOps workflows. Store charts in Git and automatically sync to clusters.
Frequently Asked Questions
What is the difference between Helm and Kubernetes?
Kubernetes is a container orchestration platform. Helm is a package manager for Kubernetes. Helm helps you deploy, upgrade, and manage applications on Kubernetes. You use Helm to package Kubernetes resources, and Kubernetes to run them.
What is a Helm chart?
A Helm chart is a package of pre-configured Kubernetes resources. It contains templates, default values, and metadata. Charts can be versioned, shared, and reused across different environments.
What is the difference between Helm v2 and v3?
Helm v3 removed Tiller, the server-side component, for better security. It also added support for OCI registries, JSON Schema validation, and improved release management. Always use Helm v3.
How do I install a chart from a repository?
Add the repository with helm repo add, then install with helm install. For example: helm repo add bitnami https://charts.bitnami.com/bitnami and helm install my-nginx bitnami/nginx.
What is a Helm release?
A release is an instance of a chart running in a Kubernetes cluster. Each release has a unique name, version, and tracks its own history. You can have multiple releases of the same chart with different configurations.
How do I rollback a Helm release?
Use helm history <release-name> to see revisions, then helm rollback <release-name> <revision> to rollback. Helm stores release history in Kubernetes Secrets.
Can I use Helm with GitOps?
Yes! ArgoCD and Flux both support Helm charts natively. You can store charts in Git and use ArgoCD or Flux to automatically sync and deploy them to your clusters.
What are the alternatives to Helm?
Alternatives include Kustomize (configuration management), YAML manifests (manual), and operators (automation). Helm is the most popular package manager for Kubernetes.
Back to Helm Charts Next: Helm vs Kustomize

Helm is the industry standard for Kubernetes package management. Master Helm to simplify your Kubernetes deployments and enable reusable infrastructure patterns.