Helm est le gestionnaire de packages de Kubernetes. Vous définissez vos déploiements dans des charts (templates YAML + values), et Helm génère les manifests, gère les versions, et permet les rollbacks en une commande. Résultat : des déploiements reproductibles, versionnables, et automatisables en CI/CD, au lieu de kubectl apply manuel avec des fichiers éparpillés.
Ce parcours vous rend autonome en 3 étapes progressives : utiliser des charts existants, créer vos propres charts, puis publier et automatiser en production. Chaque module combine théorie, commandes commentées et labs pratiques.
Au terme de ce parcours, vous serez capable de
Section intitulée « Au terme de ce parcours, vous serez capable de »- Installer des applications via
helm installavec des values personnalisés - Gérer le lifecycle : upgrade, rollback, historique des révisions
- Déboguer les problèmes de charts avec
helm lint,helm template,--debug - Créer un chart maintenable avec helpers, schema et documentation
- Composer des stacks avec dépendances et charts umbrella
- Publier sur un registry OCI (Harbor, GHCR, ECR)
- Automatiser le packaging et la promotion via CI/CD
Prérequis : Kubernetes (Pods, Deployments, Services, namespaces), YAML (syntaxe), accès à un cluster (kind, k3d, minikube).
Qu'est-ce que Helm ?
Section intitulée « Qu'est-ce que Helm ? »Pourquoi Helm plutôt que kubectl apply ?
Section intitulée « Pourquoi Helm plutôt que kubectl apply ? »| Sans Helm | Avec Helm |
|---|---|
| Fichiers YAML éparpillés, copiés-collés | Un chart versionné, un helm install |
| "Quelle version est en prod ?" → grep dans les logs | helm list → version, date, statut |
| Rollback = retrouver les anciens fichiers, les réappliquer | helm rollback myapp 2 |
| Config dev/prod = dupliquer tous les YAML | Un chart + values-dev.yaml / values-prod.yaml |
| Mise à jour = modifier 10 fichiers, risque d'oubli | helm upgrade avec les nouveaux values |
Helm en une phrase
Section intitulée « Helm en une phrase »Helm est un gestionnaire de packages pour Kubernetes : vous installez des applications complexes en une commande, vous les configurez via des fichiers values, et vous gérez leur cycle de vie (upgrade, rollback) de manière reproductible.
Parcours A, Utiliser Helm (Débutant → Intermédiaire)
Section intitulée « Parcours A, Utiliser Helm (Débutant → Intermédiaire) »Objectif : installer, configurer et mettre à jour des charts existants avec confiance.
Parcours B, Écrire des charts (Intermédiaire)
Section intitulée « Parcours B, Écrire des charts (Intermédiaire) »Objectif : créer des charts maintenables, testés et documentés.
Parcours C, Helm en production (Avancé)
Section intitulée « Parcours C, Helm en production (Avancé) »Objectif : publier, signer et automatiser les charts en CI/CD.
Labs pratiques
Section intitulée « Labs pratiques »Chaque module inclut un lab guidé. Voici les compétences validées :
| Lab | Module | Ce que vous pratiquez | Durée |
|---|---|---|---|
| A1 | H1-01 | Install/uninstall d'un chart public | 15 min |
| A2 | H1-02 | Ajouter des repos, pinner une version | 20 min |
| A3 | H1-03 | Multi-env avec fichiers values | 25 min |
| A4 | H1-04 | Upgrade, history, rollback | 30 min |
| A5 | H1-05 | Diagnostiquer 3 erreurs injectées | 30 min |
| B1 | H2-01 | Créer un chart minimal | 30 min |
| B2 | H2-02 | Chart prod-ready (probes, security) | 45 min |
| B3 | H2-03 | Chart umbrella avec dépendances | 45 min |
| C1 | H3-01 | Publish/pull sur registry OCI | 30 min |
| C2 | H3-02 | Signer et vérifier un chart | 30 min |
| C3 | H3-03 | Pipeline CI/CD complète | 45 min |
Durée totale des labs : ~5h30
Erreurs fréquentes et dépannage
Section intitulée « Erreurs fréquentes et dépannage »| Erreur | Symptôme | Solution rapide |
|---|---|---|
| Chart introuvable | Error: chart not found | helm repo update |
| Release existe déjà | cannot re-use a name | Changer le nom ou helm upgrade --install |
| Values ignorés | Config non appliquée | Vérifier le chemin YAML, utiliser -f |
| Pods en Pending | Conteneurs ne démarrent pas | Vérifier resources, PVC, nodeSelector |
| Template error | nil pointer | Ajouter required ou default |
Pour un diagnostic complet, consultez le module Debug et validation.
À retenir
Section intitulée « À retenir »- Helm = gestionnaire de packages Kubernetes (chart + values → release)
- Chart = template réutilisable de déploiement
- Values = paramètres personnalisables (un fichier par environnement)
- Release = instance déployée, versionnée, avec historique
- Workflow de base :
repo add→install→upgrade→rollback - Création de chart :
helm create→ nettoyer → templater → tester aveclint+template - Production : publier sur OCI, signer, automatiser en CI/CD
FAQ : questions fréquentes
Section intitulée « FAQ : questions fréquentes »helm rollback) en cas de problème.values.yaml par défaut). Une release est une instance installée de ce chart sur un cluster, avec ses propres valeurs et son numéro de révision. Un même chart peut donner plusieurs releases (ex. app-prod et app-staging), chacune suivie indépendamment par Helm.helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm upgrade --install mon-app bitnami/nginx -f values.yaml
Préférez helm upgrade --install à helm install : la commande devient idempotente (rejouable en CI). Personnalisez avec -f values.yaml ou --set cle=valeur.values.yaml contient les valeurs de configuration par défaut d'un chart (image, réplicas, ressources, ingress). Les templates du chart s'y réfèrent via {{ .Values.xxx }}. À l'installation, on surcharge ces valeurs avec son propre fichier (-f mes-values.yaml) ou en ligne (--set replicas=3), sans modifier le chart : c'est ce qui rend un même chart réutilisable d'un environnement à l'autre.helm, les charts publics et les registries OCI compatibles s'utilisent sans licence payante, aussi bien en local qu'en CI/CD. Les seuls coûts éventuels viennent de l'infrastructure qui héberge vos charts privés (registry OCI type Harbor, GHCR ou ECR).helm create mon-app
helm lint mon-app
helm template mon-app
helm create crée la structure standard : Chart.yaml (métadonnées), values.yaml (valeurs par défaut) et le dossier templates/. Nettoyez les templates générés, écrivez les vôtres, validez avec helm lint et helm template (rendu sans déployer), puis helm package avant de publier sur un registry OCI. Le détail : Anatomie d'un chart.helm history mon-app
helm rollback mon-app 2
helm history affiche les révisions (numéro, date, statut, version du chart). helm rollback mon-app 2 redéploie l'état exact de la révision 2. Chaque rollback crée lui-même une nouvelle révision, ce qui préserve la traçabilité. C'est l'un des principaux avantages de Helm face à un kubectl apply manuel.