🎁 New User? Get 20% off your first purchase with code NEWUSER20 Register Now →
Menu

Categories

helm Command

Intermediate Containers man(1)

Kubernetes package manager

👁 2 views 📅 Updated: Mar 16, 2026
SYNTAX
helm [COMMAND] [FLAGS]

What Does helm Do?

The helm command is the package manager for Kubernetes, equivalent to apt for Debian or dnf for Fedora. Helm uses a packaging format called Charts — collections of templated Kubernetes manifests that can be versioned, shared, and deployed with customizable values.

Helm simplifies deploying complex Kubernetes applications by abstracting the management of multiple Kubernetes resources (Deployments, Services, ConfigMaps, Secrets, Ingresses, etc.) into a single versioned package. Instead of managing dozens of YAML files, you install or upgrade a chart with one command, customizing it with values specific to your environment.

Helm 3 (current version) removed the controversial server-side Tiller component from Helm 2, making it simpler, more secure, and easier to use. Release information is now stored as Kubernetes Secrets in the target namespace, and Helm works with standard Kubernetes RBAC — no additional server-side components needed.

As a graduated CNCF project, Helm is the industry standard for Kubernetes application packaging. The Artifact Hub (artifacthub.io) hosts thousands of community-maintained charts for databases, monitoring tools, CI/CD systems, and more.

Options & Flags

OptionDescriptionExample
install NAME CHART Install a chart as a named release helm install mydb bitnami/postgresql
upgrade NAME CHART Upgrade an existing release helm upgrade mydb bitnami/postgresql --set primary.resources.limits.memory=1Gi
uninstall NAME Remove a release from the cluster helm uninstall mydb
list List all releases in the current namespace helm list --all-namespaces
rollback NAME REVISION Rollback a release to a previous revision helm rollback mydb 2
repo add/update Add or update chart repositories helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update
search repo/hub Search for charts in repos or Artifact Hub helm search repo nginx
template Render chart templates locally without installing helm template myapp ./mychart --debug
package Package a chart directory into a .tgz archive helm package ./mychart
lint Check a chart for issues helm lint ./mychart

Practical Examples

#1 Install PostgreSQL from Bitnami

Add the Bitnami repo and install PostgreSQL with a custom password in the database namespace.
$ helm repo add bitnami https://charts.bitnami.com/bitnami && helm install mydb bitnami/postgresql --set auth.postgresPassword=secret -n database --create-namespace

#2 Install with custom values file

Install a local chart with environment-specific values. Values file overrides defaults in values.yaml.
$ helm install myapp ./mychart -f values-production.yaml -n production

#3 Upgrade a release

Upgrade with new image tag and replica count. Creates a new revision for rollback.
$ helm upgrade myapp ./mychart --set image.tag=v2.0 --set replicaCount=3

#4 Rollback after failed upgrade

View release history and rollback to revision 2. Kubernetes recreates the previous state.
$ helm history myapp && helm rollback myapp 2

#5 Preview templates before install

Render all Kubernetes manifests locally without installing. Essential for validating templates.
$ helm template myapp ./mychart -f values-prod.yaml --debug

#6 Create a new chart

Scaffold a new chart with templates, values.yaml, Chart.yaml, and helpers. Includes a default Nginx deployment.
$ helm create mychart && ls mychart/

#7 Get release values and manifests

Inspect the user-supplied values and rendered manifests of an installed release.
$ helm get values myapp -n production && helm get manifest myapp -n production

#8 Push chart to OCI registry

Package and push a chart to an OCI-compatible registry (GitHub Container Registry, Docker Hub, Harbor).
$ helm package ./mychart && helm push mychart-1.0.0.tgz oci://ghcr.io/myorg/charts

Tips & Best Practices

Use --dry-run for safety: Before installing or upgrading, use helm install --dry-run to simulate the operation and see what would be applied without making changes.
Pin chart versions: Always specify --version when installing charts in production: helm install mydb bitnami/postgresql --version 15.2.5. Without it, you get the latest version which may include breaking changes.
upgrade --install is idempotent: Use helm upgrade --install to either install (if not present) or upgrade (if present). This is the recommended pattern for CI/CD pipelines.
Use helm diff plugin: Install the helm-diff plugin to see exactly what would change before upgrading: helm diff upgrade myapp ./mychart -f values.yaml
Release data in Secrets: Helm 3 stores release data as Kubernetes Secrets in the target namespace (sh.helm.release.v1.*). This means release history persists in the cluster.

Frequently Asked Questions

What is a Helm chart?
A Helm chart is a package of pre-configured Kubernetes resources. It contains templates (Go template YAML), default values (values.yaml), metadata (Chart.yaml), and optionally dependencies. Think of it as an apt package for Kubernetes.
How do I update chart dependencies?
Run helm dependency update ./mychart to download dependencies listed in Chart.yaml. Dependencies are stored in the charts/ subdirectory as .tgz archives.
How do I see what Helm would deploy?
Use helm template to render manifests locally, or helm install --dry-run to simulate an install against the cluster (validates against the API server).
Where do I find community charts?
Artifact Hub (artifacthub.io) indexes thousands of charts from various repositories. Popular repos include Bitnami, JetStack (cert-manager), and ingress-nginx.
Can I use Helm with ArgoCD?
Yes. ArgoCD natively supports Helm charts as an application source. Define a Helm chart in your ArgoCD Application manifest, and ArgoCD manages the deployment lifecycle via GitOps.

Master Linux with Professional eBooks

Curated IT eBooks covering Linux, DevOps, Cloud, and more

Browse Books →