Helm
| Fiche express | |
|---|---|
| Type | Gestionnaire de paquets pour Kubernetes |
| Unité de packaging | Chart (modèle de manifestes + values.yaml)
|
| Instance déployée | Release (versionnée, rollback possible) |
| Voir aussi | Kustomize · Kompose |
Helm est le gestionnaire de paquets de référence pour Kubernetes : il joue, pour un cluster, un rôle comparable à celui d'apt ou yum pour une distribution Linux, mais pour des applications décrites en manifestes Kubernetes. Un ensemble de manifestes est packagé sous forme de chart — des templates Go paramétrables plutôt que du YAML figé — accompagné d'un fichier values.yaml qui expose les paramètres modifiables (nombre de réplicas, image, ressources, activation de fonctionnalités...) sans toucher aux templates eux-mêmes.
Chaque installation d'un chart dans un cluster constitue une release : un nom, un historique de révisions, et la possibilité de faire upgrade ou rollback vers une révision antérieure sans avoir à reconstruire manuellement l'état précédent. Depuis Helm 3, ces releases sont suivies via des Secrets stockés directement dans le cluster (l'architecture à composant serveur Tiller des versions 2.x a disparu, à vérifier selon la version exacte utilisée).
Commandes de base
# Ajouter un dépôt de charts et le mettre à jour
helm repo add <nom-repo> <url-du-repo>
helm repo update
# Chercher un chart
helm search repo <mot-clé>
# Voir les valeurs par défaut d'un chart avant de les personnaliser
helm show values <repo>/<chart>
# Installer (ou générer un nom aléatoire avec --generate-name)
helm install <nom-release> <repo>/<chart> \
--namespace <namespace> --create-namespace \
--values values.yaml \
--version <version>
# Idempotent : installe si absent, met à jour sinon
helm upgrade --install <nom-release> <repo>/<chart> --values values.yaml
# Revenir à la révision précédente en cas de problème
helm rollback <nom-release> <révision>
# Désinstaller
helm uninstall <nom-release>
# Voir le rendu final sans rien appliquer au cluster (debug)
helm template <repo>/<chart> --values values.yaml
Exemple : installation d'un chart avec valeurs personnalisées
helm repo add example-charts https://charts.example.org
helm repo update
kubectl create namespace apps
helm install mon-app example-charts/mon-app \
--namespace apps \
--values values.yaml \
--version 1.15.1
kubectl get pods -n apps -w
Une fois les pods en Running, l'application est accessible selon la façon dont le chart expose son service (NodePort, Ingress...) — un détail propre à chaque chart, documenté dans son values.yaml.
Face à Kustomize
Helm et Kustomize répondent au même besoin général (gérer des manifestes Kubernetes à travers plusieurs environnements) avec des philosophies opposées : Helm package, templatise et versionne des releases installables en une commande, quitte à devoir apprendre la syntaxe de templating Go et gérer un values.yaml par chart ; Kustomize ne fait que composer et patcher des manifestes YAML bruts, sans templating ni notion de release, en s'appuyant sur la structure native de kubectl. Les deux approches se combinent d'ailleurs parfois : Kustomize pour patcher la sortie helm template d'un chart tiers non modifiable directement.