What is Helm and how do Helm Charts template Kubernetes manifests?
ā Interview Prompt: Explain Helm charts structure, values.yaml parameterization, releases, and upgrade/rollback workflows in Kubernetes deployments.
Helm is the package manager for Kubernetes ā it packages, versions, and deploys complex Kubernetes applications as Charts.
Why Helm:
Without Helm, deploying a production app requires managing 5ā15 separate YAML files (Deployment, Service, Ingress, ConfigMap, Secret, HPA, etc.) with hardcoded values. Helm templatizes these manifests and parameterizes them via values.yaml.
Chart Structure:
```
mychart/
āāā Chart.yaml # metadata (name, version, dependencies)
āāā values.yaml # default configuration values
āāā charts/ # sub-chart dependencies
āāā templates/
āāā deployment.yaml
āāā service.yaml
āāā ingress.yaml
āāā _helpers.tpl # reusable template helpers
```
Core Concepts:
values.yaml or --set flags.Code Implementation Example
# Add a Helm repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# Install a chart as a named release
helm install my-postgres bitnami/postgresql \
--namespace db \
--create-namespace \
--set auth.postgresPassword=secret123 \
--set primary.persistence.size=20Gi
# Install from local chart with custom values file
helm install my-api ./mychart \
--values values-production.yaml \
--set image.tag=v1.2.3
# List all releases
helm list -A
# Upgrade a release (rolling update)
helm upgrade my-api ./mychart --set image.tag=v1.3.0
# View upgrade history
helm history my-api
# Rollback to previous revision
helm rollback my-api 2
# Dry-run to preview generated manifests
helm upgrade my-api ./mychart --dry-run --debugHelm packages K8s YAML into versioned, parameterized Charts. Helm releases track upgrade history, enabling one-command rollbacks across all related Kubernetes resources.