Skip to content
Rahul Shishodiaon GitHub LinkedIn profile

Helm

  • 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

  1. helm repo add <name> <url>
  2. helm repo update (optional)
  3. helm search repo <name>
  4. helm install <release> <repo/chart> --version X
  5. helm list / kubectl get all
  6. helm upgrade <release> <repo/chart> --set key=val / --values file.yaml
  7. helm uninstall <release>

Key commands

helm repo list / helm repo add jenkinsci https://charts.jenkins.io/
helm search repo jenkinsci --versions
helm template jenkinsci/jenkins --version 4.6.4          # render locally, no install
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 list -n prod
helm upgrade my-jenkins jenkinsci/jenkins --reuse-values --set image.tag=2.414.3
helm history my-jenkins
helm rollback my-jenkins 1
helm uninstall my-jenkins
  • Default namespace = current kubectl context unless -n is set

Inspecting charts before install

# Show default values (essential before overriding)
helm show values jenkinsci/jenkins
helm show values jenkinsci/jenkins --version 4.6.4

# Show chart metadata
helm show chart jenkinsci/jenkins

# Show rendered templates without installing
helm template my-jenkins jenkinsci/jenkins --values my-values.yaml

Inspecting installed releases

# What values are currently set on a release
helm get values my-jenkins

# All values including defaults
helm get values my-jenkins --all

# Get the rendered manifest of a deployed release
helm get manifest my-jenkins

Overrides

  • --set key=value: CLI
  • --set a=b,c=d: multiple CLI values
  • --values values.yaml / -f: file
  • -n <ns> --create-namespace: target namespace
helm install api bitnami/nginx --set replicaCount=2,service.type=ClusterIP
helm upgrade api bitnami/nginx --reuse-values --set image.tag=1.25
helm diff upgrade api bitnami/nginx -f values.yaml   # if plugin exists

Exam tips

  • Fresh Helm has no repos: must helm repo add first
  • Chart name format: <repo>/<chart> (e.g. jenkinsci/jenkins)
  • helm install creates many K8s objects: verify with kubectl get
  • Use helm show values before --set to know the correct key names
  • helm get values shows only user-supplied overrides; add --all for full picture
  • In 2026 feedback, Helm showed up mostly as values overrides and upgrades, not chart authoring