Ce guide vous apprend à déployer des applications sur Kubernetes avec helm install et à gérer leur cycle de vie complet : mises à jour, rollbacks et suppression. Vous allez comprendre ce qu’est une release, comment Helm stocke son historique, et surtout comment lire et interpréter chaque ligne de sortie des commandes Helm. En 20 minutes, vous saurez déployer, mettre à jour et dépanner vos applications.
Prérequis
Section intitulée « Prérequis »- Helm installé et au moins un repo configuré (voir module H1-02)
- Un cluster Kubernetes fonctionnel (minikube, kind, k3d ou distant)
kubectlconfiguré et connecté au cluster
Vérifiez votre environnement :
# Vérifier la connexion au clusterkubectl cluster-info
# Vérifier que Helm communique avec le clusterhelm list --all-namespacesComprendre les releases Helm
Section intitulée « Comprendre les releases Helm »Qu’est-ce qu’une release ?
Section intitulée « Qu’est-ce qu’une release ? »Une release est une instance déployée d’un chart Helm. Chaque release possède :
- Un nom unique dans le namespace (choisi par vous)
- Un numéro de révision (commence à 1, incrémenté à chaque upgrade)
- Un statut (deployed, failed, pending-install, etc.)
- Un historique des révisions précédentes (pour les rollbacks)
Où Helm stocke-t-il les releases ?
Section intitulée « Où Helm stocke-t-il les releases ? »Helm stocke les métadonnées des releases directement dans Kubernetes, sous forme de Secrets dans le namespace de la release :
kubectl get secrets -n helm-demo -l "owner=helm"NAME TYPE DATA AGEsh.helm.release.v1.podinfo.v1 helm.sh/release.v1 1 5msh.helm.release.v1.podinfo.v2 helm.sh/release.v1 1 2mChaque Secret sh.helm.release.v1.<release>.<revision> contient l’état complet de cette révision : les values utilisées, le manifeste généré, les métadonnées.
Installer une application
Section intitulée « Installer une application »Syntaxe de base
Section intitulée « Syntaxe de base »helm install <nom-release> <chart> [options]- nom-release : identifiant unique de votre choix (ex:
my-app,prometheus-prod) - chart : référence du chart (
repo/chartou chemin local)
Premier déploiement
Section intitulée « Premier déploiement »Préparons un namespace de test et déployons une application :
# Créer un namespace dédiékubectl create namespace helm-demo
# Installer kube-state-metrics depuis prometheus-communityhelm install my-metrics prometheus-community/kube-state-metrics --namespace helm-demoRésultat :
NAME: my-metricsLAST DEPLOYED: Sun Feb 1 17:48:21 2026NAMESPACE: helm-demoSTATUS: deployedREVISION: 1TEST SUITE: NoneNOTES:kube-state-metrics is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects.The exposed metrics can be found here:https://github.com/kubernetes/kube-state-metrics/blob/master/docs/README.md#exposed-metrics
The metrics are exported on the HTTP endpoint /metrics on the listening port.In your case, my-metrics-kube-state-metrics.helm-demo.svc.cluster.local:8080/metrics
They are served either as plaintext or protobuf depending on the Accept header.They are designed to be consumed either by Prometheus itself or by a scraper that is compatible with scraping a Prometheus client endpoint.Comprendre la sortie de helm install (crucial !)
Section intitulée « Comprendre la sortie de helm install (crucial !) »Chaque ligne de la sortie vous donne une information importante. Décortiquons :
| Ligne | Signification | À retenir |
|---|---|---|
NAME: my-metrics | Nom de la release que vous avez choisi | C’est l’identifiant pour toutes les commandes futures (helm upgrade my-metrics, helm uninstall my-metrics) |
LAST DEPLOYED: Sun Feb 1 17:48:21 2026 | Horodatage du déploiement | Utile pour le debugging (“quand a été déployée cette version ?”) |
NAMESPACE: helm-demo | Namespace Kubernetes cible | Tous les objets créés (Pods, Services, etc.) sont dans ce namespace |
STATUS: deployed | État actuel de la release | deployed = succès. Autres valeurs possibles : failed, pending-install, pending-upgrade |
REVISION: 1 | Numéro de version de la release | Commence à 1, s’incrémente à chaque helm upgrade. Utilisé pour les rollbacks |
TEST SUITE: None | Résultat des tests Helm (si définis) | Certains charts incluent des tests de validation post-installation |
NOTES: | Instructions post-installation | Lisez toujours cette section ! Elle contient les informations spécifiques au chart |
Les différents statuts de release
Section intitulée « Les différents statuts de release »| Statut | Signification | Action |
|---|---|---|
deployed | Installation réussie, ressources créées | ✅ Tout va bien |
failed | Installation échouée | Vérifier les logs, corriger, réessayer |
pending-install | Installation en cours | Attendre ou investiguer si bloqué |
pending-upgrade | Mise à jour en cours | Attendre |
pending-rollback | Rollback en cours | Attendre |
superseded | Ancienne révision remplacée | Normal après un upgrade |
uninstalling | Suppression en cours | Attendre |
Vérifier le déploiement
Section intitulée « Vérifier le déploiement »Après un helm install, vérifiez que les ressources Kubernetes sont bien créées :
# Voir les ressources créées par la releasekubectl get all -n helm-demo -l "app.kubernetes.io/instance=my-metrics"NAME READY STATUS RESTARTS AGEpod/my-metrics-kube-state-metrics-7b8d5c4f87-xj2kp 1/1 Running 0 2m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/my-metrics-kube-state-metrics ClusterIP 10.96.xxx.xxx <none> 8080/TCP 2m
NAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/my-metrics-kube-state-metrics 1/1 1 1 2mLister les releases
Section intitulée « Lister les releases »Voir les releases du namespace courant
Section intitulée « Voir les releases du namespace courant »helm list -n helm-demoNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSIONmy-metrics helm-demo 1 2026-02-01 17:48:21.123456789 +0100 CET deployed kube-state-metrics-5.27.0 2.14.0Lecture du tableau :
| Colonne | Signification |
|---|---|
NAME | Nom de la release |
NAMESPACE | Namespace Kubernetes |
REVISION | Numéro de révision actuel |
UPDATED | Date/heure de la dernière modification |
STATUS | État actuel |
CHART | Nom et version du chart |
APP VERSION | Version de l’application déployée |
Voir toutes les releases (tous namespaces)
Section intitulée « Voir toutes les releases (tous namespaces) »helm list --all-namespaces# ouhelm list -AFiltrer par statut
Section intitulée « Filtrer par statut »# Voir les releases en échechelm list --failed
# Voir les releases en cours de déploiementhelm list --pendingMettre à jour une release
Section intitulée « Mettre à jour une release »helm upgrade
Section intitulée « helm upgrade »La commande helm upgrade met à jour une release existante :
# Mettre à jour vers la dernière version du charthelm upgrade my-metrics prometheus-community/kube-state-metrics -n helm-demo
# Mettre à jour vers une version spécifiquehelm upgrade my-metrics prometheus-community/kube-state-metrics --version 5.26.0 -n helm-demo
# Mettre à jour avec de nouvelles valueshelm upgrade my-metrics prometheus-community/kube-state-metrics -n helm-demo --set replicas=2Résultat :
Release "my-metrics" has been upgraded. Happy Helming!NAME: my-metricsLAST DEPLOYED: Sun Feb 1 18:15:42 2026NAMESPACE: helm-demoSTATUS: deployedREVISION: 2...Notez que REVISION est passé de 1 à 2.
install —upgrade (idempotent)
Section intitulée « install —upgrade (idempotent) »Pour les scripts CI/CD, utilisez --install avec upgrade pour une commande idempotente :
# Installe si n'existe pas, upgrade si existehelm upgrade --install my-metrics prometheus-community/kube-state-metrics -n helm-demoVoir l’historique et rollback
Section intitulée « Voir l’historique et rollback »Historique des révisions
Section intitulée « Historique des révisions »helm history my-metrics -n helm-demoREVISION UPDATED STATUS CHART APP VERSION DESCRIPTION1 Sun Feb 1 17:48:21 2026 superseded kube-state-metrics-5.27.0 2.14.0 Install complete2 Sun Feb 1 18:15:42 2026 deployed kube-state-metrics-5.27.0 2.14.0 Upgrade completeRevenir à une révision précédente
Section intitulée « Revenir à une révision précédente »# Rollback à la révision 1helm rollback my-metrics 1 -n helm-demoRollback was a success! Happy Helming!Vérifiez l’historique après le rollback :
helm history my-metrics -n helm-demoREVISION UPDATED STATUS CHART APP VERSION DESCRIPTION1 Sun Feb 1 17:48:21 2026 superseded kube-state-metrics-5.27.0 2.14.0 Install complete2 Sun Feb 1 18:15:42 2026 superseded kube-state-metrics-5.27.0 2.14.0 Upgrade complete3 Sun Feb 1 18:30:15 2026 deployed kube-state-metrics-5.27.0 2.14.0 Rollback to 1Supprimer une release
Section intitulée « Supprimer une release »helm uninstall
Section intitulée « helm uninstall »helm uninstall my-metrics -n helm-demorelease "my-metrics" uninstalledPar défaut, helm uninstall :
- Supprime tous les objets Kubernetes créés par la release
- Supprime l’historique des révisions
Conserver l’historique
Section intitulée « Conserver l’historique »helm uninstall my-metrics -n helm-demo --keep-historyAvec --keep-history, vous pouvez voir les releases supprimées :
helm list -n helm-demo --uninstalledOptions importantes de helm install
Section intitulée « Options importantes de helm install »| Option | Description | Exemple |
|---|---|---|
--namespace / -n | Namespace cible | -n production |
--create-namespace | Crée le namespace s’il n’existe pas | --create-namespace |
--version | Version spécifique du chart | --version 5.26.0 |
--values / -f | Fichier de values personnalisées | -f my-values.yaml |
--set | Surcharge une value en ligne de commande | --set replicas=3 |
--dry-run | Simule sans appliquer | --dry-run |
--wait | Attend que les Pods soient Ready | --wait |
--timeout | Timeout pour --wait | --timeout 5m |
--atomic | Rollback automatique si échec | --atomic |
Exemple avec plusieurs options
Section intitulée « Exemple avec plusieurs options »helm install prometheus prometheus-community/prometheus \ --namespace monitoring \ --create-namespace \ --version 25.27.0 \ -f custom-values.yaml \ --set server.retention=30d \ --wait \ --timeout 10mSimuler avant de déployer (dry-run)
Section intitulée « Simuler avant de déployer (dry-run) »helm install my-app podinfo/podinfo -n helm-demo --dry-runCela affiche :
- Les métadonnées de la release (comme un install normal)
- Le manifeste YAML complet qui serait appliqué
- Les NOTES qui seraient affichées
Dry-run côté client vs serveur
Section intitulée « Dry-run côté client vs serveur »# Côté client (ne contacte pas le cluster)helm install my-app podinfo/podinfo --dry-run=client
# Côté serveur (valide avec l'API Kubernetes)helm install my-app podinfo/podinfo --dry-run=server--dry-run=server est plus précis car il valide que les manifestes sont acceptés par l’API Kubernetes.
Lab A3 : Cycle de vie complet d’une release
Section intitulée « Lab A3 : Cycle de vie complet d’une release »Objectif : Pratiquer le cycle install → upgrade → rollback → uninstall.
-
Créez un namespace et installez podinfo
Fenêtre de terminal kubectl create namespace lab-helmhelm install demo podinfo/podinfo --namespace lab-helm --version 6.7.0Lisez attentivement les NOTES affichées.
-
Vérifiez le déploiement
Fenêtre de terminal kubectl get all -n lab-helmhelm list -n lab-helm -
Mettez à jour vers une version plus récente
Fenêtre de terminal helm upgrade demo podinfo/podinfo --namespace lab-helm --version 6.9.0 -
Consultez l’historique
Fenêtre de terminal helm history demo -n lab-helm -
Effectuez un rollback
Fenêtre de terminal helm rollback demo 1 -n lab-helmhelm history demo -n lab-helm -
Nettoyez
Fenêtre de terminal helm uninstall demo -n lab-helmkubectl delete namespace lab-helm
Résultat attendu : Vous maîtrisez le cycle de vie complet d’une release Helm.
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
STATUS: failed | Erreur dans les templates ou ressources invalides | helm status <release> puis kubectl describe sur les ressources |
Error: cannot re-use a name that is still in use | Release existe déjà | Utiliser helm upgrade --install ou supprimer d’abord |
Error: INSTALLATION FAILED: timed out | Pods ne démarrent pas | Augmenter --timeout ou investiguer avec kubectl describe pod |
Pods en CrashLoopBackOff | Configuration incorrecte | Vérifier les values, les secrets, les ressources |
Error: release not found | Mauvais namespace | Ajouter -n <namespace> à la commande |
Investiguer une release en échec
Section intitulée « Investiguer une release en échec »# Voir le statut détailléhelm status my-release -n my-namespace
# Voir les manifestes qui ont été appliquéshelm get manifest my-release -n my-namespace
# Voir les values utiliséeshelm get values my-release -n my-namespaceÀ retenir
Section intitulée « À retenir »- Release = instance déployée d’un chart. Nom unique + numéro de révision + historique.
helm installcrée une nouvelle release. Lisez toujours les NOTES affichées !- La sortie de
helm installcontient : NAME, NAMESPACE, STATUS, REVISION — informations essentielles pour le debugging. helm upgrade --installest idempotent — préférez-le en CI/CD.helm history+helm rollbackpermettent de revenir à un état antérieur.--dry-runsimule le déploiement — utilisez-le systématiquement avant la production.- Helm stocke les releases dans des Secrets Kubernetes (pas de base de données externe).