Aller au contenu
Conteneurs & Orchestration medium

Maîtriser la commande Helm : référence complète

21 min de lecture

logo helm

Quand vous déployez des applications sur Kubernetes, vous avez besoin d’installer des charts, de mettre à jour des releases, de revenir en arrière en cas de problème, et de déboguer vos déploiements. helm est le gestionnaire de packages de Kubernetes qui orchestre tout cela en une seule commande.

  • Installer et mettre à jour des applications avec helm install et helm upgrade
  • Gérer le cycle de vie complet : rollback, historique, suppression
  • Déboguer avec helm template, helm lint et helm get
  • Gérer les repositories et rechercher des charts
  • Maîtriser les options essentielles pour la production

helm fait partie des outils de déploiement Kubernetes. Chaque outil a sa spécialité :

OutilSpécialitéQuand l’utiliser
helmGérer des packages (charts)Déploiements reproductibles, versionnés
kubectlInteragir avec l’API K8sCommandes directes, debug, inspection
kustomizePersonnaliser des manifestsOverlays sans templating
argocdGitOps continuSynchronisation automatique depuis Git
fluxGitOps continuAlternative à ArgoCD

Combinaisons fréquentes :

Fenêtre de terminal
# helm + kubectl : vérifier le déploiement
helm install myapp ./chart && kubectl get pods -w
# helm template + kubectl diff : prévisualiser les changements
helm template myapp ./chart | kubectl diff -f -
# helm + grep : filtrer les releases
helm list -A | grep -i nginx
Fenêtre de terminal
helm [commande] [arguments] [flags]

Les 5 commandes que vous utiliserez 80% du temps :

CommandeCe qu’elle faitExemple
helm installDéployer un charthelm install myapp bitnami/nginx
helm upgradeMettre à jour une releasehelm upgrade myapp bitnami/nginx
helm listLister les releaseshelm list -n prod
helm uninstallSupprimer une releasehelm uninstall myapp
helm templateGénérer les manifests (debug)helm template myapp ./chart
ObjetQuestionExemples
ChartQuel paquet installer ?bitnami/nginx, ./mon-chart/
ReleaseQuel nom donner à l’instance ?myapp, nginx-prod
ValuesComment personnaliser ?-f values.yaml, --set replicas=3

Fenêtre de terminal
helm install <release-name> <chart> [flags]

Options principales :

OptionDescriptionExemple
-n, --namespaceNamespace cible-n production
-f, --valuesFichier de values-f values-prod.yaml
--setSurcharge inline--set image.tag=v2.0
--create-namespaceCréer le namespace--create-namespace
--dry-runSimuler sans appliquer--dry-run
--waitAttendre que tout soit prêt--wait --timeout 5m
--atomicRollback auto si échec--atomic

Formes courantes :

Fenêtre de terminal
# Depuis un repository
helm install myapp bitnami/nginx
# Depuis un chart local
helm install myapp ./mon-chart/
# Depuis un registry OCI
helm install myapp oci://ghcr.io/org/charts/myapp --version 1.2.3
# Avec personnalisation
helm install myapp bitnami/nginx \
-n production --create-namespace \
-f values-prod.yaml \
--set replicaCount=3
# Mode sécurisé (rollback auto si échec)
helm install myapp ./chart \
--atomic \
--timeout 5m \
--wait
Fenêtre de terminal
helm upgrade <release-name> <chart> [flags]

Options spécifiques à upgrade :

OptionDescriptionExemple
--installCréer si n’existe pas--install (idempotent)
--reuse-valuesGarder les anciennes values--reuse-values
--reset-valuesRevenir aux defaults--reset-values
--forceForcer le remplacement--force

Pattern CI/CD (idempotent) :

Fenêtre de terminal
# Fonctionne que la release existe ou non
helm upgrade --install myapp ./chart \
-n production \
-f values-prod.yaml \
--atomic \
--wait
Fenêtre de terminal
helm uninstall <release-name> [flags]

Options :

OptionDescriptionExemple
-n, --namespaceNamespace de la release-n production
--keep-historyConserver l’historique--keep-history
--dry-runSimuler la suppression--dry-run
Fenêtre de terminal
# Suppression simple
helm uninstall myapp -n production
# Conserver l'historique (permet rollback ultérieur)
helm uninstall myapp --keep-history

Fenêtre de terminal
helm list [flags]

Options de filtrage :

OptionDescriptionExemple
-A, --all-namespacesTous les namespaces-A
-n, --namespaceNamespace spécifique-n prod
-a, --allInclure les releases supprimées-a
--deployedSeulement les déployées--deployed
--failedSeulement les échouées--failed
-o, --outputFormat de sortie-o json
Fenêtre de terminal
# Toutes les releases du cluster
helm list -A
# Releases en échec
helm list -A --failed
# Format JSON (scripting)
helm list -n prod -o json | jq '.[].name'
Fenêtre de terminal
helm history <release-name> [flags]
Fenêtre de terminal
# Voir l'historique
helm history myapp -n production

Sortie typique :

REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Mon Jan 15 10:00:00 2026 superseded myapp-1.0.0 1.0.0 Install complete
2 Mon Jan 15 11:30:00 2026 superseded myapp-1.1.0 1.1.0 Upgrade complete
3 Mon Jan 15 14:00:00 2026 deployed myapp-1.1.0 1.1.0 Rollback to 2
Fenêtre de terminal
helm rollback <release-name> <revision> [flags]

Options :

OptionDescriptionExemple
--forceForcer le rollback--force
--waitAttendre la stabilisation--wait
--timeoutDélai maximum--timeout 5m
Fenêtre de terminal
# Rollback à la révision 2
helm rollback myapp 2 -n production
# Rollback avec attente
helm rollback myapp 1 --wait --timeout 3m

Fenêtre de terminal
helm template <release-name> <chart> [flags]

La commande la plus importante pour débugger — elle génère les manifests Kubernetes sans les déployer.

Fenêtre de terminal
# Voir ce que Helm va générer
helm template myapp ./chart -f values.yaml
# Filtrer un type de ressource
helm template myapp ./chart | grep -A 50 "kind: Deployment"
# Sauvegarder pour inspection
helm template myapp ./chart -f values-prod.yaml > manifests.yaml
# Avec validation serveur (dry-run)
helm template myapp ./chart --validate
Fenêtre de terminal
helm lint <chart-path> [flags]
Fenêtre de terminal
# Lint basique
helm lint ./mon-chart
# Mode strict (warnings = erreurs)
helm lint ./mon-chart --strict
# Avec des values spécifiques
helm lint ./mon-chart -f values-test.yaml

Niveaux de messages :

NiveauSignificationAction
[INFO]RecommandationOptionnel
[WARNING]Problème potentielÀ investiguer
[ERROR]Erreur bloquanteDoit être corrigée
Fenêtre de terminal
helm get <subcommand> <release-name> [flags]

Sous-commandes :

Sous-commandeCe qu’elle retourneUsage
manifestManifests déployésVoir ce qui tourne
valuesValues utiliséesComprendre la config
notesNotes post-installInstructions d’accès
allTout combinéDebug complet
Fenêtre de terminal
# Manifests actuellement déployés
helm get manifest myapp -n production
# Values utilisées (surcharges uniquement)
helm get values myapp -n production
# Toutes les values (défauts + surcharges)
helm get values myapp -n production --all
# Notes d'installation
helm get notes myapp -n production
Fenêtre de terminal
helm status <release-name> [flags]
Fenêtre de terminal
# État actuel
helm status myapp -n production
# Format JSON (scripting)
helm status myapp -o json | jq '.info.status'

Fenêtre de terminal
helm repo <subcommand> [flags]

Sous-commandes :

Sous-commandeCe qu’elle faitExemple
addAjouter un repohelm repo add bitnami https://...
listLister les reposhelm repo list
updateMettre à jour l’indexhelm repo update
removeSupprimer un repohelm repo remove bitnami
Fenêtre de terminal
# Ajouter les repos essentiels
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# Mettre à jour l'index local
helm repo update
# Lister les repos configurés
helm repo list
Fenêtre de terminal
helm search <subcommand> <keyword> [flags]

Deux modes de recherche :

ModeCe qu’il chercheExemple
repoDans vos repos locauxhelm search repo nginx
hubSur Artifact Hubhelm search hub postgresql
Fenêtre de terminal
# Dans les repos configurés
helm search repo nginx
# Toutes les versions disponibles
helm search repo nginx --versions
# Sur Artifact Hub (internet)
helm search hub postgresql --max-col-width 50
Fenêtre de terminal
helm show <subcommand> <chart> [flags]

Sous-commandes :

Sous-commandeCe qu’elle montreExemple
chartMétadonnées (Chart.yaml)helm show chart bitnami/nginx
valuesValues par défauthelm show values bitnami/nginx
readmeDocumentationhelm show readme bitnami/nginx
allTouthelm show all bitnami/nginx
Fenêtre de terminal
# Voir les values par défaut AVANT d'installer
helm show values bitnami/nginx > nginx-defaults.yaml
# Vérifier la version de l'application
helm show chart bitnami/nginx | grep appVersion

Fenêtre de terminal
helm package <chart-path> [flags]
Fenêtre de terminal
# Packager un chart
helm package ./mon-chart
# Avec une version spécifique
helm package ./mon-chart --version 1.2.3
# Dans un dossier spécifique
helm package ./mon-chart -d ./releases/
Fenêtre de terminal
helm push <chart.tgz> <registry-url>
Fenêtre de terminal
# Login au registry
helm registry login ghcr.io
# Push du chart
helm push mon-chart-1.2.3.tgz oci://ghcr.io/myorg/charts
Fenêtre de terminal
helm pull <chart> [flags]
Fenêtre de terminal
# Télécharger le .tgz
helm pull bitnami/nginx
# Télécharger et extraire
helm pull bitnami/nginx --untar
# Version spécifique
helm pull bitnami/nginx --version 15.0.0 --untar

Fenêtre de terminal
helm upgrade --install myapp ./chart \
-n production \
--create-namespace \
-f values-prod.yaml \
--atomic \
--wait \
--timeout 5m

Pourquoi ce pattern ?

  • --install : crée si n’existe pas (idempotent)
  • --atomic : rollback auto si échec
  • --wait : attend que les pods soient Ready
  • --timeout : évite les blocages infinis
Fenêtre de terminal
# Voir les changements
helm diff upgrade myapp ./chart -f values.yaml
# Ou sans le plugin diff
helm template myapp ./chart -f values.yaml | kubectl diff -f -
Fenêtre de terminal
# 1. Lint le chart
helm lint ./chart --strict
# 2. Vérifier les manifests générés
helm template myapp ./chart -f values.yaml > /tmp/manifests.yaml
# 3. Valider contre le cluster
helm install myapp ./chart --dry-run --debug
# 4. Si déjà installé, inspecter
helm status myapp
helm get manifest myapp
kubectl get events -n production --sort-by='.lastTimestamp'
Fenêtre de terminal
# Voir l'historique
helm history myapp -n production
# Rollback à la dernière version stable
helm rollback myapp <revision> -n production --wait
# Vérifier
helm status myapp -n production
kubectl get pods -n production
Fenêtre de terminal
# Dev
helm upgrade --install myapp ./chart \
-n dev -f values-base.yaml -f values-dev.yaml
# Staging
helm upgrade --install myapp ./chart \
-n staging -f values-base.yaml -f values-staging.yaml
# Production
helm upgrade --install myapp ./chart \
-n production -f values-base.yaml -f values-prod.yaml \
--atomic --wait

ErreurCauseSolution
cannot re-use a nameRelease existe déjàUtiliser helm upgrade --install
release not foundMauvais namespaceAjouter -n namespace
UPGRADE FAILED: another operation in progressOpération interrompuehelm rollback ou attendre
Values non appliquées--reuse-values utiliséFournir explicitement -f values.yaml
nil pointer evaluatingValue manquante dans templateAjouter valeur ou default dans template
Timeout dépasséPods ne démarrent pasVérifier kubectl describe pod

Fenêtre de terminal
helm install myapp ./chart -n prod -f values.yaml # Installer
helm upgrade --install myapp ./chart -n prod -f values.yaml # Install/upgrade idempotent
helm upgrade myapp ./chart -n prod -f values.yaml # Mettre à jour
helm uninstall myapp -n prod # Supprimer
Fenêtre de terminal
helm list -A # Toutes les releases
helm status myapp -n prod # État d'une release
helm history myapp -n prod # Historique
helm get values myapp -n prod --all # Values utilisées
helm get manifest myapp -n prod # Manifests déployés
Fenêtre de terminal
helm lint ./chart --strict # Valider le chart
helm template myapp ./chart -f values.yaml # Générer manifests
helm install myapp ./chart --dry-run --debug # Simuler avec debug
Fenêtre de terminal
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm search repo nginx
helm show values bitnami/nginx > defaults.yaml
Fenêtre de terminal
helm history myapp -n prod # Voir les révisions
helm rollback myapp 2 -n prod --wait # Revenir à la révision 2

CommandeUsage principal
helm upgrade --installDéploiement CI/CD idempotent
helm templateDébugger les manifests générés
helm lint --strictValider un chart avant déploiement
helm get values --allComprendre la config d’une release
helm rollbackRevenir en arrière en cas de problème
helm diff upgradePrévisualiser les changements (plugin)

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.