RMS Meta

RMS Meta

Code to cloud for people & nature

Blog · Dec 25, 2025

Helm 101: A Gentle Intro to Kubernetes Package Management

Helm is the package manager for Kubernetes. It bundles Kubernetes manifests into versioned charts so you can install, upgrade, and roll back applications with a few commands.

Why Helm?

  • Simpler installs: One command to deploy complex apps (ingress, services, deployments, config).
  • Versioned releases: Track which version of an app is running and roll back if needed.
  • Reusability: Share charts across teams; keep values separate from templates.
  • Customization: Override values to fit your cluster (domains, images, resources).

Key concepts

  • Chart: A package of Kubernetes manifests plus templates and default values.
  • Release: A chart instance running in a cluster (e.g., my-app).
  • Repository: A server hosting versioned charts (e.g., https://charts.bitnami.com/bitnami).
  • Values: Configuration inputs that parameterize the chart.

Basic workflow

# add a repo
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

# install a chart
helm install my-nginx bitnami/nginx

# list releases
helm list

# upgrade with custom values
helm upgrade my-nginx bitnami/nginx -f values.yaml

# rollback to a previous version
helm rollback my-nginx 1

# uninstall
helm uninstall my-nginx

Customizing with values

Create a values.yaml to override defaults, then apply:

helm upgrade --install my-app myrepo/mychart -f values.yaml

Typical overrides: image tags, resources, ingress hosts/TLS, environment variables, autoscaling, and persistence.

Templates and charts

  • Templates: Go templating renders manifests from values.
  • Charts structure: Chart.yaml (metadata), values.yaml (defaults), templates/ (manifests), charts/ (dependencies).
  • Packaging: helm package . creates a .tgz you can publish to a repo.

Best practices

  • Pin chart versions; avoid auto-latest surprises.
  • Keep secrets out of plain values; use external secrets or encrypted stores.
  • Use --atomic on installs/upgrades to auto-rollback on failure.
  • Lint charts with helm lint and test templates with helm template.
  • Separate env configs (dev/stage/prod) via values files.

When not to use Helm?

If you need full GitOps with pull-based sync (e.g., Argo CD/Flux), Helm still fits—but you may let the GitOps tool render Helm charts. If you have very simple static manifests, Helm may be overkill.

Helm makes installing and managing Kubernetes apps predictable: add a repo, install a chart, tweak values, and roll forward or back with confidence.