Helm, le gestionnaire de paquets Kubernetes : guide complet

Helm est le gestionnaire de paquets officiel qui empaquette et déploie les applications Kubernetes via des charts.

  • Charts : ensembles de fichiers prêts à l’emploi pour une application complète.
  • Une commande remplace des dizaines de kubectl apply.
  • Projet diplômé CNCF avec plus de 400 développeurs actifs.
  • Gère les releases et permet de revenir en arrière en cas de problème.
  • Helm 3 : architecture client-only, le serveur Tiller est supprimé.

Qu’est-ce que Helm et pourquoi l’utiliser ?

Si vous avez déjà déployé une application sur Kubernetes avec de simples fichiers YAML, vous avez probablement rapidement ressenti le besoin d’un outil plus structuré. C’est exactement le vide que vient combler Helm, le gestionnaire de paquets officiel pour Kubernetes. Véritable projet diplômé de la Cloud Native Computing Foundation (CNCF), il s’est imposé comme la référence pour empaqueter, déployer et gérer le cycle de vie des applications conteneurisées.

Concrètement, Helm fonctionne avec des « charts » : des ensembles de fichiers prêts à l’emploi qui décrivent une application complète. Plutôt que de jongler avec des dizaines de manifestes YAML, vous utilisez une seule commande pour installer une application complexe, la mettre à jour ou la supprimer proprement. C’est l’équivalent du apt-get ou du brew, mais pensé pour l’orchestrateur de conteneurs, tout comme l’installation et les concepts Docker reposent sur des images et des conteneurs.

  • Package manager : centralise et standardise la distribution des applications Kubernetes.
  • Définit et installe : décrit l’état souhaité d’une application et l’applique dans le cluster.
  • Met à jour : applique les nouvelles versions d’un chart sans effort manuel.
  • Simplifie les déploiements : une seule commande remplace des dizaines de kubectl apply.
  • Alternatives : Swarm ou Kustomize existent, mais Helm offre la plus riche bibliothèque de templates, avec plus de 50+ add-on template functions issues de la bibliothèque Sprig.
  • Projet diplômé CNCF : une gouvernance open-source mature et une communauté active de plus de 400 développeurs.

Là où kubectl exécute des commandes isolées, Helm orchestre l’ensemble, tout comme les composants Kubernetes (pods, services, deployments) structurent le cluster. Il gère les releases (versions installées), permet de revenir en arrière en cas de problème et garantit une certaine reproductibilité entre les environnements, à l’image de la supervision avec Prometheus qui assure le suivi des métriques. C’est un véritable atout pour les équipes qui souhaitent industrialiser leurs déploiements.

Installation de Helm et configuration

helm charts pour kubernetes

Avec Helm 3, l’architecture est devenue client-only : le serveur Tiller, autrefois indispensable dans le cluster, a été complètement supprimé. Cette simplification majeure (la dernière version de Helm 2 était la v2.16.7) facilite grandement l’installation et la sécurisation de l’outil. Vous n’avez désormais qu’un seul binaire à installer sur votre machine.

Installer Helm sur macOS, Linux et Windows

L’installation de Helm se décline en plusieurs méthodes selon votre système d’exploitation. Toutes mènent au même résultat : un binaire helm prêt à l’emploi dans votre environnement.

  • Via package manager (brew) : brew install helm sur macOS ou Linux avec Homebrew.
  • Via package manager (choco) : choco install kubernetes-helm pour les utilisateurs Windows.
  • Via binaire officiel GitHub : téléchargez l’archive pour votre OS depuis la page des releases officielles.
  • Téléchargement depuis helm.sh : le site officiel propose un script d’installation automatisé pour Linux et macOS.
  • Vérifier avec helm version : confirme que l’installation est fonctionnelle et affiche la version installée.

Une fois le binaire en place, la vérification est immédiate. La commande helm version affiche la version du client et vous assure que tout est correctement configuré. Contrairement à Kubernetes, aucune configuration supplémentaire n’est requise pour l’outil lui-même avant son utilisation.

Configuration initiale et ajout de dépôts

Le cœur de l’expérience Helm repose sur les dépôts de charts. Ce sont des bibliothèques publiques ou privées qui hébergent des applications pré-packagées. Pour commencer, ajoutez le dépôt officiel Bitnami, l’un des plus complets et maintenus par une communauté de 400+ développeurs :

helm repo add bitnami https://charts.bitnami.com/bitnami

Vous pouvez ensuite mettre à jour la liste des charts disponibles avec helm repo update. Cette étape est cruciale : elle télécharge les métadonnées nécessaires pour rechercher et installer les charts. Notez que le dépôt officiel historique helm/charts a été abandonné le Nov. 13, 2020 privilégiez donc les dépôts maintenus comme Bitnami, ou les dépôts spécifiques fournis par les éditeurs de logiciels.

Enfin, pour une prise en main immédiate, la commande helm search hub vous permet d’explorer les charts disponibles sur Artifact Hub. Cet annuaire centralise les dépôts du monde entier et vous évite de connaître l’URL exacte de chaque source. C’est le point de départ idéal pour trouver une application pré-packagée et l’installer en quelques minutes. Il faut également savoir que Helm intègre plus de 50+ add-on template functions issues de la bibliothèque Sprig, ce qui offre une grande flexibilité pour personnaliser vos déploiements sans écrire de code complexe. La configuration initiale se limite à ces quelques commandes, et vous voilà paré pour gérer vos premières releases Kubernetes.

Cette recherche de charts s’apparente à une recherche sémantique, où la similarité entre les besoins et les offres peut être évaluée par une métrique de similarité comme la similarité cosinus.

Commandes Helm essentielles à connaître

Maîtriser les commandes Helm, c’est comme apprendre à conduire : une fois les bases acquises, tout devient fluide. Ces commandes gravitent toutes autour d’un concept central : la release. Une release est une instance d’un chart déployée dans votre cluster. Chaque fois que vous installez un chart, vous créez une nouvelle release, identifiable par un nom unique.

Voici les six commandes fondamentales qui couvrent l’essentiel du cycle de vie d’une application :

  • helm install : déploie un chart dans votre cluster et crée une nouvelle release. C’est le point de départ de toute application.
  • helm upgrade : met à jour une release existante avec une nouvelle version du chart ou des valeurs modifiées.
  • helm rollback : restaure une release à une version antérieure. Une bouée de sauvetage en cas de déploiement problématique.
  • helm uninstall : supprime une release et toutes les ressources Kubernetes associées, libérant ainsi les ressources du cluster.
  • helm list : affiche toutes les releases actuellement actives dans votre cluster.
  • helm repo add : ajoute un nouveau dépôt de charts, comme Bitnami ou le dépôt officiel, pour élargir votre catalogue.

Ces commandes fonctionnent en symbiose. Par exemple, pour corriger un bug après un helm install, vous lancerez un helm upgrade. Si la mise à jour échoue, un helm rollback vous ramènera à l’état stable. La gestion des releases par Helm remplace avantageusement les multiples fichiers YAML et commandes kubectl apply nécessaires pour des applications complexes.

La transition de Helm 2 à Helm 3, dont la dernière version est la v2.16.7, a marqué un tournant majeur : la suppression de Tiller a considérablement simplifié cette gestion, la rendant plus directe et plus sûre. Avec ces commandes en main, vous avez déjà une base solide pour gérer vos déploiements Kubernetes.

Exemples d’utilisation concrets de Helm

Application Commande type Personnalisation
Serveur web léger helm install my-nginx bitnami/nginx Modifier values.yaml pour la réplique
Base de données helm install my-mysql bitnami/mysql Définir mot de passe et volume
CMS complet helm install my-wp bitnami/wordpress Activer le service LoadBalancer

Le déploiement d’une application complexe se résume souvent à une seule ligne. Avec Helm, un serveur NGINX se lance via helm install my-nginx bitnami/nginx. En quelques secondes, le chart télécharge les manifests, crée le Deployment, le Service et expose le port 80. La commande retourne l’état de la release, et helm list confirme que l’application tourne.

Pour MySQL, l’installation suit le même schéma. La commande helm install my-mysql bitnami/mysql déploie la base avec des valeurs par défaut. Pour personnaliser l’installation, passez des options avec --set ou créez un fichier values.yaml surchargé. Par exemple, définir un mot de passe root ou activer la persistance des données via un PersistentVolumeClaim ne demande que quelques lignes de configuration.

Personnaliser une installation WordPress

Le cas de WordPress illustre parfaitement la puissance des charts. La commande helm install my-wp bitnami/wordpress déploie le CMS, mais aussi sa base MySQL, les secrets et les services. Pour exposer WordPress sur Internet, il suffit de passer le paramètre --set service.type=LoadBalancer. Les 50+ add-on template functions de la bibliothèque Sprig permettent de raffiner ces paramètres sans écrire de YAML supplémentaire.

Cette simplicité repose sur la séparation entre la logique du chart et ses valeurs. Le fichier values.yaml fournit des réglages par défaut, surchargeables au moment de l’installation. Si un paramètre devient obsolète lors d’une mise à jour, helm upgrade conserve la configuration et applique les nouveaux standards. La communauté de 400+ développeurs maintient des charts prêts à l’emploi pour des centaines d’applications, ce qui évite de réinventer chaque déploiement à la main avec kubectl.

Structure et création d’un Helm chart

Un Helm chart n’est rien d’autre qu’un répertoire de fichiers conventionné qui décrit une application Kubernetes complète. Cette organisation standardisée est ce qui rend les charts si faciles à partager, versionner et réutiliser. Comprendre cette structure est la clé pour passer d’utilisateur à créateur.

Les fichiers qui composent un chart

Chaque chart repose sur une ossature précise, où chaque fichier a un rôle défini. Voici les éléments indispensables que vous retrouverez systématiquement.

– Chart.yaml : fichier obligatoire contenant les métadonnées (nom, version, description). La version doit suivre la spécification SemVer 2, indispensable pour gérer les compatibilités.
– values.yaml : définit les valeurs par défaut des paramètres (réplicas, ports, images). Ces valeurs sont surchargeables lors de l’installation avec `–set` ou un fichier dédié.
– templates/ : contient les modèles de manifestes Kubernetes (Deployment, Service, ConfigMap). Ces fichiers utilisent la syntaxe Go template avec plus de 50+ fonctions supplémentaires issues de la librairie Sprig pour un rendu dynamique.
– charts/ : optionnel, héberge les charts dépendants (sous-composants) que votre application nécessite.
– README.md : documentation pratique pour guider les utilisateurs du chart.

Ces fichiers ne sont pas figés. La communauté de plus de 400 développeurs contribue constamment à enrichir les fonctionnalités et les bonnes pratiques autour de cette structure.

Créer son premier chart avec `helm create`

La manière la plus rapide d’appréhender cette architecture est d’utiliser la commande `helm create`. Elle génère automatiquement une structure de chart complète et fonctionnelle en quelques secondes.

– Génération automatique : exécutez `helm create mon-application` pour créer un répertoire avec les fichiers `Chart.yaml`, `values.yaml` et un dossier `templates/` prêt à l’emploi.
– Chart.yaml : le fichier généré contient des métadonnées de base. Vous pouvez le personnaliser, mais attention, à partir de la version v3.3.2, les champs supplémentaires non déclarés dans le schéma officiel ne sont plus autorisés.
– Modèles pré-remplis : le chart généré inclut des templates pour un Deployment, un Service et un Ingress, parfaits pour comprendre la logique de templating.
– Test immédiat : lancez `helm install mon-app./mon-application` pour déployer votre chart et vérifier son fonctionnement.

Notez que cette structure moderne diffère radicalement de l’époque de Helm 2 (dont la dernière version est la v2.16.7). L’architecture client-only de Helm 3 a supprimé Tiller, et l’ancien dépôt officiel a été définitivement arrêté le 13 novembre 2020, au profit de dépôts communautaires comme Bitnami. Cette simplification rend la création et le déploiement de charts beaucoup plus directs.