After this lesson, you will be able to: Understand Helm charts: install community charts, parametrize via values.yaml, and write a basic chart for your own app.
Helm is the package manager for Kubernetes. Instead of dozens of raw YAMLs, you install a 'chart' with one command. Real K8s teams use Helm for almost everything.
A directory of templated K8s YAML + a values.yaml + a Chart.yaml. Templates use Go templating: `{{ .Values.replicaCount }}` interpolates from values.yaml. `helm install` renders the templates + applies them. `helm upgrade` re-renders + applies the diff. Community charts (postgres, redis, ingress-nginx, cert-manager) are the standard way to install anything serious on K8s.
Install ingress-nginx in one command.
# Install Helm CLImacOS: brew install helmLinux: curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash# Add a repo (where charts live)helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginxhelm repo update# Installhelm install nginx ingress-nginx/ingress-nginx \--namespace ingress-nginx --create-namespace \--set controller.service.type=LoadBalancer# See what's installedhelm list -A# Upgradehelm upgrade nginx ingress-nginx/ingress-nginx -n ingress-nginx --set controller.replicaCount=3# Uninstallhelm uninstall nginx -n ingress-nginx
helm create scaffolds a working template.
helm create myapp# Generates myapp/ with templates/, values.yaml, Chart.yaml# Customize values.yamlreplicaCount: 3image:repository: ghcr.io/me/myapptag: 1.0resources:requests: { cpu: 100m, memory: 128Mi }limits: { cpu: 500m, memory: 256Mi }# Install locallyhelm install myapp ./myapp# Per-environment valueshelm install myapp ./myapp -f values-prod.yamlhelm install myapp ./myapp -f values-staging.yaml --set image.tag=1.1# Render without installing (debug)helm template ./myapp -f values-prod.yaml
Helm gives you: parameterized YAML (one chart, many envs), versioned releases (rollback to a previous Helm release), atomic upgrades (rollback on failure), templating (loops + conditionals in YAML). Raw kubectl apply works for tiny projects. For anything larger, Helm pays for itself the first time you need a different value in prod vs staging. Alternative: Kustomize (patch-style overrides). Less powerful but no templating. Stick with Helm unless you have a reason.
Hardcoding values in templates instead of values.yaml. Defeats the point of Helm. `helm install` instead of `helm upgrade --install`. The latter creates-or-updates idempotently. Forking community charts. Re-test, re-merge, re-deploy on every upstream change. Brittle. Skipping `--atomic`. Without it, a failed upgrade leaves resources mid-state. Forgetting `helm history myapp`; you can rollback to any prior release.
Pick the most senior answer.
Sign in and purchase access to unlock this lesson.