Definition
Helm est le gestionnaire de packages pour Kubernetes. Il permet de definir, installer et mettre a jour des applications Kubernetes complexes a l'aide de "charts" — des packages preconfigures et parametrables.
Helm est au Kubernetes ce que apt est a Debian ou npm a Node.js.
Concepts cles
Chart
Un package Helm contenant tous les manifestes Kubernetes (Deployments, Services, ConfigMaps, etc.) avec des templates parametrables.
Release
Une instance d'un chart deployee dans un cluster Kubernetes. Chaque installation cree une release distincte.
Values
Les parametres de configuration qui personnalisent un chart. Definis dans values.yaml.
Repository
Un depot de charts Helm (comme un registry npm). Exemples : Bitnami, Artifact Hub.
Utilisation
# Ajouter un repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# Rechercher un chart
helm search repo postgresql
# Installer un chart
helm install ma-db bitnami/postgresql \
--set auth.postgresPassword=secret \
--set primary.persistence.size=20Gi
# Voir les releases
helm list
# Mettre a jour
helm upgrade ma-db bitnami/postgresql --set primary.replicas=2
# Desinstaller
helm uninstall ma-db
Structure d'un chart
mon-chart/
Chart.yaml # Metadata (nom, version, description)
values.yaml # Valeurs par defaut
templates/
deployment.yaml # Template de Deployment
service.yaml # Template de Service
ingress.yaml # Template d'Ingress
_helpers.tpl # Fonctions utilitaires
charts/ # Dependances (sub-charts)
Templates
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-app
spec:
replicas: {{ .Values.replicas | default 1 }}
template:
spec:
containers:
- name: app
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
ports:
- containerPort: {{ .Values.service.port }}
Helm vs Kustomize
| Helm | Kustomize | |
|---|---|---|
| Approche | Templates + values | Patches sur des bases |
| Complexite | Moyenne | Faible |
| Packaging | Charts (reutilisables) | Overlays |
| Ecosystem | Artifact Hub (milliers de charts) | Pas de registry |
| Cas ideal | Apps complexes, distribution | Petites variations d'env |