- Chart: packaged K8s manifests + default values
- Release: named chart installation in cluster
- Exam: consume charts only: building/publishing out of scope
- Artifact Hub: discover charts; install from repo URL, not Hub directly
Workflow
helm repo add <name> <url>helm repo updatehelm search repo <name>helm install <release> <repo/chart> --version Xhelm list / kubectl get allhelm upgrade <release> <repo/chart> --set key=valhelm uninstall <release>
Key commands
helm repo list
helm search repo jenkinsci --versions
helm template jenkinsci/jenkins --version 4.6.4
helm install my-jenkins jenkinsci/jenkins --version 4.6.4 -n prod --create-namespace --dry-run
helm install my-jenkins jenkinsci/jenkins --set persistence.size=8Gi
helm upgrade my-jenkins jenkinsci/jenkins --reuse-values --set image.tag=2.414.3
helm history my-jenkins
Inspecting charts before install
helm show values jenkinsci/jenkins
helm show values jenkinsci/jenkins --version 4.6.4
helm show chart jenkinsci/jenkins
helm template my-jenkins jenkinsci/jenkins --values my-values.yaml
Inspecting installed releases
helm get values my-jenkins
helm get values my-jenkins --all
helm get manifest my-jenkins
Helm chart debugging (lint + local install)
helm lint ./mychart/
Fix-and-install workflow
ls ./mychart/
cat ./mychart/Chart.yaml
cat ./mychart/values.yaml
ls ./mychart/templates/
vim ./mychart/values.yaml
vim ./mychart/Chart.yaml
vim ./mychart/templates/deployment.yaml
helm lint ./mychart/
kubectl get ns mynamespace || kubectl create ns mynamespace
helm install my-release ./mychart/ -n mynamespace
helm ls -n mynamespace
kubectl get all -n mynamespace
Common chart template bugs
Exam gotchas
- Fresh Helm has no repos: must
helm repo add first helm repo update if repo not found- Chart name format:
<repo>/<chart> helm show values before --set to get correct key nameshelm get values shows only user-supplied overrides; --all for full picturehelm lint before helm install; tells exact file + lineappVersion = application version; version = chart version- Namespace must exist before
helm install unless --create-namespace