Architecture
Helm Architecture
Understand how Helm works, chart structure, and the release lifecycle.
Helm Architecture Overview
┌─────────────────────────────────────────────────────────────────────────────┐ │ HELM ARCHITECTURE │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌────────────────┐ │ │ │ User Commands │ helm install, upgrade, rollback, uninstall... │ │ └───────┬────────┘ │ │ │ │ │ ▼ │ │ ┌────────────────┐ ┌────────────────┐ ┌────────────────────┐ │ │ │ Helm Client │───────►│ Chart Archive │─────►│ K8s API Server │ │ │ │ (helm CLI) │ │ (templates) │ │ (deployment) │ │ │ └────────────────┘ └────────────────┘ └────────────────────┘ │ │ │ │ │ │ │ │ │ │ ▼ ▼ │ │ ┌────────────────┐ ┌────────────────────┐ │ │ │ Chart Repo │ │ K8s Cluster │ │ │ │ (bitnami, etc) │ │ ┌──────────────┐ │ │ │ └────────────────┘ │ │ Secrets │ │ │ │ │ │ (release v1) │ │ │ │ ┌────────────────┐ │ ├──────────────┤ │ │ │ │ Local Charts │ │ │ Secrets │ │ │ │ │ ./mychart │ │ │ (release v2) │ │ │ │ └────────────────┘ │ └──────────────┘ │ │ │ └────────────────────┘ │ │ │ │ Helm stores release info in │ │ Kubernetes Secrets │ │ │ └─────────────────────────────────────────────────────────────────────────────┘
Chart Structure
Anatomy of a Helm chart
mychart/ ├── Chart.yaml # Metadata ├── values.yaml # Default values ├── charts/ # Dependencies ├── templates/ │ ├── deployment.yaml │ ├── service.yaml │ ├── ingress.yaml │ ├── configmap.yaml │ ├── _helpers.tpl │ └── notes.txt ├── .helmignore # Exclude files ├── LICENSE └── README.md
Chart.yaml
Chart name, version, dependencies, maintainers
values.yaml
Default configuration values
templates/
Go templates generating K8s manifests
charts/
Packed dependency charts