Helm Package Management

Kubernetes package manager — Charts, Repos, Releases

Concept

Helm is the package manager for Kubernetes — it bundles Kubernetes manifests into versioned charts, manages releases, and supports rollback. Works identically across Azure/AWS/GCP since it operates at the Kubernetes API level.

Helm Architecture

ComponentDescription
ChartPackage of Kubernetes manifests (YAML templates + values)
RepositoryHTTP server hosting packaged charts (.tgz)
ReleaseA running instance of a chart in a Kubernetes cluster
ValuesConfiguration overrides (values.yaml / --set)
TemplatesGo-templated Kubernetes manifests (with {{ .Values.x }})
HooksLifecycle events (pre-install, post-upgrade, etc.)
Library ChartReusable chart components (no deployable templates)

Helm Commands Cheat Sheet

# Create a new chart
helm create my-app

# Lint the chart (validate syntax)
helm lint ./my-app

# Dry-run (render templates locally)
helm template ./my-app --values values-prod.yaml

# Install release
helm install my-release ./my-app -n prod --create-namespace

# List releases
helm list -n prod

# Upgrade release (new image tag)
helm upgrade my-release ./my-app -n prod --set image.tag=v2.0.0

# Rollback to previous revision
helm rollback my-release 1 -n prod

# View release history
helm history my-release -n prod

# Uninstall
helm uninstall my-release -n prod

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

Sample values.yaml

appName: payments-api
replicaCount: 3

image:
  repository: us-central1-docker.pkg.dev/PROJECT/repo/payments
  tag: v1.0.0
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 80
  targetPort: 8080

ingress:
  enabled: true
  className: gce
  host: api.example.com

resources:
  requests:
    cpu: 250m
    memory: 256Mi
  limits:
    cpu: 1000m
    memory: 512Mi

autoscaling:
  enabled: true
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70

Chart Publishing

○ Azure — Azure (ACR Helm Repo)

Azure Container Registry supports Helm repositories natively.

az acr helm push ./my-app-1.0.0.tgz --name myacr

○ AWS — AWS (ECR OCI)

ECR supports OCI artifacts. Push Helm chart as OCI artifact.

helm push ./my-app-1.0.0.tgz oci://account.dkr.ecr.region.amazonaws.com/

○ GCP — GCP (Artifact Registry)

Artifact Registry supports Helm repositories natively.

helm push ./my-app-1.0.0.tgz oci://us-central1-docker.pkg.dev/PROJECT/helm-repo