Aller au contenu
Conteneurs & Orchestration medium

Helm install : déployer et gérer vos releases

16 min de lecture

logo helm

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.

Vérifiez votre environnement :

Fenêtre de terminal
# Vérifier la connexion au cluster
kubectl cluster-info
# Vérifier que Helm communique avec le cluster
helm list --all-namespaces

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)

Helm stocke les métadonnées des releases directement dans Kubernetes, sous forme de Secrets dans le namespace de la release :

Fenêtre de terminal
kubectl get secrets -n helm-demo -l "owner=helm"
NAME TYPE DATA AGE
sh.helm.release.v1.podinfo.v1 helm.sh/release.v1 1 5m
sh.helm.release.v1.podinfo.v2 helm.sh/release.v1 1 2m

Chaque 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.

Fenêtre de terminal
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/chart ou chemin local)

Préparons un namespace de test et déployons une application :

Fenêtre de terminal
# Créer un namespace dédié
kubectl create namespace helm-demo
# Installer kube-state-metrics depuis prometheus-community
helm install my-metrics prometheus-community/kube-state-metrics --namespace helm-demo

Résultat :

NAME: my-metrics
LAST DEPLOYED: Sun Feb 1 17:48:21 2026
NAMESPACE: helm-demo
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
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.

Chaque ligne de la sortie vous donne une information importante. Décortiquons :

LigneSignificationÀ retenir
NAME: my-metricsNom de la release que vous avez choisiC’est l’identifiant pour toutes les commandes futures (helm upgrade my-metrics, helm uninstall my-metrics)
LAST DEPLOYED: Sun Feb 1 17:48:21 2026Horodatage du déploiementUtile pour le debugging (“quand a été déployée cette version ?”)
NAMESPACE: helm-demoNamespace Kubernetes cibleTous les objets créés (Pods, Services, etc.) sont dans ce namespace
STATUS: deployedÉtat actuel de la releasedeployed = succès. Autres valeurs possibles : failed, pending-install, pending-upgrade
REVISION: 1Numéro de version de la releaseCommence à 1, s’incrémente à chaque helm upgrade. Utilisé pour les rollbacks
TEST SUITE: NoneRésultat des tests Helm (si définis)Certains charts incluent des tests de validation post-installation
NOTES:Instructions post-installationLisez toujours cette section ! Elle contient les informations spécifiques au chart
StatutSignificationAction
deployedInstallation réussie, ressources créées✅ Tout va bien
failedInstallation échouéeVérifier les logs, corriger, réessayer
pending-installInstallation en coursAttendre ou investiguer si bloqué
pending-upgradeMise à jour en coursAttendre
pending-rollbackRollback en coursAttendre
supersededAncienne révision remplacéeNormal après un upgrade
uninstallingSuppression en coursAttendre

Après un helm install, vérifiez que les ressources Kubernetes sont bien créées :

Fenêtre de terminal
# Voir les ressources créées par la release
kubectl get all -n helm-demo -l "app.kubernetes.io/instance=my-metrics"
NAME READY STATUS RESTARTS AGE
pod/my-metrics-kube-state-metrics-7b8d5c4f87-xj2kp 1/1 Running 0 2m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/my-metrics-kube-state-metrics ClusterIP 10.96.xxx.xxx <none> 8080/TCP 2m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/my-metrics-kube-state-metrics 1/1 1 1 2m
Fenêtre de terminal
helm list -n helm-demo
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
my-metrics helm-demo 1 2026-02-01 17:48:21.123456789 +0100 CET deployed kube-state-metrics-5.27.0 2.14.0

Lecture du tableau :

ColonneSignification
NAMENom de la release
NAMESPACENamespace Kubernetes
REVISIONNuméro de révision actuel
UPDATEDDate/heure de la dernière modification
STATUSÉtat actuel
CHARTNom et version du chart
APP VERSIONVersion de l’application déployée
Fenêtre de terminal
helm list --all-namespaces
# ou
helm list -A
Fenêtre de terminal
# Voir les releases en échec
helm list --failed
# Voir les releases en cours de déploiement
helm list --pending

La commande helm upgrade met à jour une release existante :

Fenêtre de terminal
# Mettre à jour vers la dernière version du chart
helm upgrade my-metrics prometheus-community/kube-state-metrics -n helm-demo
# Mettre à jour vers une version spécifique
helm upgrade my-metrics prometheus-community/kube-state-metrics --version 5.26.0 -n helm-demo
# Mettre à jour avec de nouvelles values
helm upgrade my-metrics prometheus-community/kube-state-metrics -n helm-demo --set replicas=2

Résultat :

Release "my-metrics" has been upgraded. Happy Helming!
NAME: my-metrics
LAST DEPLOYED: Sun Feb 1 18:15:42 2026
NAMESPACE: helm-demo
STATUS: deployed
REVISION: 2
...

Notez que REVISION est passé de 1 à 2.

Pour les scripts CI/CD, utilisez --install avec upgrade pour une commande idempotente :

Fenêtre de terminal
# Installe si n'existe pas, upgrade si existe
helm upgrade --install my-metrics prometheus-community/kube-state-metrics -n helm-demo
Fenêtre de terminal
helm history my-metrics -n helm-demo
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Sun Feb 1 17:48:21 2026 superseded kube-state-metrics-5.27.0 2.14.0 Install complete
2 Sun Feb 1 18:15:42 2026 deployed kube-state-metrics-5.27.0 2.14.0 Upgrade complete
Fenêtre de terminal
# Rollback à la révision 1
helm rollback my-metrics 1 -n helm-demo
Rollback was a success! Happy Helming!

Vérifiez l’historique après le rollback :

Fenêtre de terminal
helm history my-metrics -n helm-demo
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Sun Feb 1 17:48:21 2026 superseded kube-state-metrics-5.27.0 2.14.0 Install complete
2 Sun Feb 1 18:15:42 2026 superseded kube-state-metrics-5.27.0 2.14.0 Upgrade complete
3 Sun Feb 1 18:30:15 2026 deployed kube-state-metrics-5.27.0 2.14.0 Rollback to 1
Fenêtre de terminal
helm uninstall my-metrics -n helm-demo
release "my-metrics" uninstalled

Par défaut, helm uninstall :

  • Supprime tous les objets Kubernetes créés par la release
  • Supprime l’historique des révisions
Fenêtre de terminal
helm uninstall my-metrics -n helm-demo --keep-history

Avec --keep-history, vous pouvez voir les releases supprimées :

Fenêtre de terminal
helm list -n helm-demo --uninstalled
OptionDescriptionExemple
--namespace / -nNamespace cible-n production
--create-namespaceCrée le namespace s’il n’existe pas--create-namespace
--versionVersion spécifique du chart--version 5.26.0
--values / -fFichier de values personnalisées-f my-values.yaml
--setSurcharge une value en ligne de commande--set replicas=3
--dry-runSimule sans appliquer--dry-run
--waitAttend que les Pods soient Ready--wait
--timeoutTimeout pour --wait--timeout 5m
--atomicRollback automatique si échec--atomic
Fenêtre de terminal
helm install prometheus prometheus-community/prometheus \
--namespace monitoring \
--create-namespace \
--version 25.27.0 \
-f custom-values.yaml \
--set server.retention=30d \
--wait \
--timeout 10m
Fenêtre de terminal
helm install my-app podinfo/podinfo -n helm-demo --dry-run

Cela affiche :

  1. Les métadonnées de la release (comme un install normal)
  2. Le manifeste YAML complet qui serait appliqué
  3. Les NOTES qui seraient affichées
Fenêtre de terminal
# 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.

Objectif : Pratiquer le cycle install → upgrade → rollback → uninstall.

  1. Créez un namespace et installez podinfo

    Fenêtre de terminal
    kubectl create namespace lab-helm
    helm install demo podinfo/podinfo --namespace lab-helm --version 6.7.0

    Lisez attentivement les NOTES affichées.

  2. Vérifiez le déploiement

    Fenêtre de terminal
    kubectl get all -n lab-helm
    helm list -n lab-helm
  3. Mettez à jour vers une version plus récente

    Fenêtre de terminal
    helm upgrade demo podinfo/podinfo --namespace lab-helm --version 6.9.0
  4. Consultez l’historique

    Fenêtre de terminal
    helm history demo -n lab-helm
  5. Effectuez un rollback

    Fenêtre de terminal
    helm rollback demo 1 -n lab-helm
    helm history demo -n lab-helm
  6. Nettoyez

    Fenêtre de terminal
    helm uninstall demo -n lab-helm
    kubectl delete namespace lab-helm

Résultat attendu : Vous maîtrisez le cycle de vie complet d’une release Helm.

SymptômeCause probableSolution
STATUS: failedErreur dans les templates ou ressources invalideshelm status <release> puis kubectl describe sur les ressources
Error: cannot re-use a name that is still in useRelease existe déjàUtiliser helm upgrade --install ou supprimer d’abord
Error: INSTALLATION FAILED: timed outPods ne démarrent pasAugmenter --timeout ou investiguer avec kubectl describe pod
Pods en CrashLoopBackOffConfiguration incorrecteVérifier les values, les secrets, les ressources
Error: release not foundMauvais namespaceAjouter -n <namespace> à la commande
Fenêtre de terminal
# Voir le statut détaillé
helm status my-release -n my-namespace
# Voir les manifestes qui ont été appliqués
helm get manifest my-release -n my-namespace
# Voir les values utilisées
helm get values my-release -n my-namespace
  • Release = instance déployée d’un chart. Nom unique + numéro de révision + historique.
  • helm install crée une nouvelle release. Lisez toujours les NOTES affichées !
  • La sortie de helm install contient : NAME, NAMESPACE, STATUS, REVISION — informations essentielles pour le debugging.
  • helm upgrade --install est idempotent — préférez-le en CI/CD.
  • helm history + helm rollback permettent de revenir à un état antérieur.
  • --dry-run simule 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).

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.