Helm est un gestionnaire de paquets pour Kubernetes qui simplifie le déploiement et la gestion des applications grâce à des charts reproductibles.
Au lieu de créer et de gérer manuellement des dizaines de fichiers de configuration distincts, Helm regroupe tout ce qui est nécessaire à une application dans un seul paquet réutilisable appelé graphique Helm.
Helm contribue à réduire la complexité du travail avec Kubernetes, la plateforme open source qui automatise le déploiement et le fonctionnement des applications conteneurisées sur plusieurs serveurs. Malgré la puissance de Kubernetes, il nécessite souvent une configuration longue et détaillée écrite dans des fichiers YAML, qui spécifient l’exécution des applications, leur connexion et les ressources dont elles ont besoin.
La gestion manuelle de ces configurations par les développeurs, les administrateurs système et les ingénieurs DevOps, en particulier dans plusieurs environnements tels que le développement, les tests et la production, peut rapidement devenir chronophage et source d’erreurs. Helm relève ce défi en introduisant la standardisation, la réutilisabilité et le contrôle des versions, avec des fonctionnalités telles que la restauration et la personnalisation spécifique à l’environnement.
Avant de découvrir Helm, il faut comprendre la conteneurisation, qui est à la base de Kubernetes et des outils cloud natifs modernes.
La conteneurisation regroupe tout ce dont une application a besoin pour fonctionner (code, bibliothèques et configuration) dans une unité légère et portable appelée conteneur. Cette fonctionnalité permet aux logiciels de fonctionner de manière cohérente dans divers environnements, de l’ordinateur portable d’un développeur à un environnement cloud de production.
Les conteneurs sont généralement basés sur Linux et sont plus rapides et plus efficaces que les machines virtuelles traditionnelles.
Ils sont également bien adaptés aux architectures de microservices, où les applications sont divisées en composants plus petits et déployables indépendamment, qui peuvent être mis à l’échelle selon les besoins. Dans Kubernetes, ces workloads conteneurisés s’exécutent sur un cluster, c’est-à-dire un groupe de machines composé d’un plan de contrôle qui gère le système et de nœuds de travail qui exécutent les applications sur l’infrastructure.
Plateforme open source rendue publique en 2013, Docker est l’outil de conteneurisation le plus utilisé. Aujourd’hui, la conteneurisation est un élément fondamental de l’écosystème cloud natif open source, permettant un développement plus rapide, des déploiements plus fiables et une flexibilité opérationnelle accrue.
Kubernetes orchestre les conteneurs à l’échelle en automatisant le déploiement, la mise à l’échelle et la gestion des ressources. Cependant, la gestion directe des configurations Kubernetes peut s’avérer complexe et source d’erreurs. Helm joue ici un rôle clé en simplifiant, standardisant et rationalisant le déploiement et la maintenance des applications conteneurisées.
Plus tard racheté par Microsoft, Deis a créé Helm en 2016, l’un des premiers outils permettant de simplifier la gestion des applications Kubernetes. En 2018, l’équipe a fait don du projet à la Cloud Native Computing Foundation (CNCF), qui l’a certifié comme projet CNCF à part entière en 2020.
Le développement open source de Helm se poursuit activement sur GitHub, où des contributeurs du monde entier collaborent à son évolution. Le site officiel, helm.sh, fournit une documentation complète (docs), des téléchargements et des ressources pour aider les utilisateurs à se lancer et à rester à jour.
La sortie de Helm 3 fin 2019 a constitué une étape importante. Cette version a supprimé le composant Tiller de Helm 2, améliorant ainsi la sécurité et simplifiant le contrôle d’accès en interagissant directement avec les interfaces de programmation des applications (API) Kubernetes. Helm 3 a également amélioré les processus de mise à niveau, la gestion des dépendances et la prise en charge des graphiques de bibliothèques, le rendant plus sûr, plus flexible et plus convivial dans les entreprises.
Helm a été largement adopté dans l’écosystème cloud natif. Selon de récentes enquêtes de la CNCF, Helm est le gestionnaire de paquets Kubernetes préféré, avec un taux d’adoption de 75 % parmi les entreprises qui utilisent Kubernetes.1
Artifact Hub, qui a remplacé Helm Hub, héberge des milliers de graphiques. Les principaux éditeurs de logiciels fournissent régulièrement des graphiques Helm comme principale méthode de distribution Kubernetes.
Helm simplifie la gestion des applications Kubernetes en regroupant les manifestes Kubernetes (fichiers de configuration), les modèles de configuration et les métadonnées dans des paquets réutilisables appelés graphiques Helm.
Ces graphiques contiennent toutes les spécifications nécessaires pour générer les bons fichiers YAML pour les ressources Kubernetes, telles que les déploiements, les services, les contrôleurs d’entrée, les volumes persistants (persistentVolume), les ressources de configuration (configMap) et les secrets, qui composent une application.
« YAML » est l’acronyme de « YAML Ain’t Markup Language » ou « Yet Another Markup Language ». Il s’agit d’un format de données convivial utilisé pour écrire des fichiers de configuration, offrant un moyen clair et structuré de représenter des informations lisibles à la fois par les humains et les programmes.
Lorsqu’un graphique est installé, Helm applique automatiquement ces ressources au cluster Kubernetes cible, avec prise en charge intégrée de la gestion des versions, des restaurations et des dépendances.
Helm fonctionne principalement comme un outil côté client qui interagit directement avec le serveur API Kubernetes pour gérer les déploiements d’applications :
Un client Helm est un outil de ligne de commande (CLI) qui interagit avec les clusters Kubernetes et gère les graphiques et les instances. Il est utilisé quotidiennement par les développeurs et les opérateurs. Contrairement à kubectl, l’outil de commande natif de Kubernetes, Helm gère des applications entières plutôt que des composants individuels.
Un graphique Helm est un format de paquetage qui contient toutes les définitions de ressources nécessaires pour exécuter une application sur Kubernetes. Les graphiques comprennent des modèles, des valeurs de configuration par défaut et des métadonnées.
Une instance Helm est une instance d’un graphique s’exécutant dans un cluster Kubernetes. Chacune possède un nom unique et peut être gérée indépendamment.
Les référentiels Helm sont des collections de graphiques qui peuvent être partagées et distribuées, à l’instar des boutiques d’applications ou des bibliothèques de paquets dans d’autres écosystèmes.
Un graphique Helm est une collection de fichiers qui décrivent un ensemble de ressources Kubernetes associées. La structure d’un graphique comprend les éléments suivants :
Les développeurs Kubernetes, les administrateurs système et autres professionnels de l’informatique (ITOps) dans les entreprises se servent de Helm pour accomplir des tâches telles que :
Helm réduit considérablement la complexité opérationnelle associée à la gestion des déploiements Kubernetes. En automatisant et en standardisant la gestion de la configuration, Helm rationalise les workflows qui, autrement, impliqueraient une édition manuelle YAML complexe et source d’erreurs.
Cette efficacité devient particulièrement importante à mesure que les entreprises développent leurs environnements cloud natifs et adoptent des technologies émergentes, telles que les workloads d’intelligence artificielle (IA) et de machine learning (ML) et l’edge computing.
Les capacités de restauration intégrées de Helm fournissent des filets de sécurité essentiels pour les déploiements de production. Si une mise à niveau échoue ou provoque des problèmes, les équipes peuvent instantanément revenir à la version opérationnelle précédente en une seule commande. Cette fonctionnalité réduit le temps moyen de récupération (MTTR) pour les incidents liés au déploiement, ce qui est une exigence essentielle pour les applications à haute disponibilité et les services d’inférence de l’IA en temps réel.
Les graphiques et schémas Helm peuvent être contrôlés par version et révisés comme n’importe quel autre artefact logiciel. Cette approche fournit des pistes d’audit pour les déploiements et garantit que les modifications sont soumises à des processus d’approbation adaptés. De nombreuses entreprises utilisent Helm avec des workflows GitOps pour améliorer la gouvernance, ce qui leur permet de répondre aux exigences de conformité des secteurs réglementés qui adoptent des architectures cloud natives.
En éliminant la complexité de Kubernetes, Helm permet aux développeurs de se concentrer sur la logique des applications plutôt que sur la configuration de l’infrastructure. Les équipes peuvent effectuer elles-mêmes les déploiements à l’aide de graphiques préapprouvés, ce qui réduit la dépendance vis-à-vis des équipes de la plateforme et accélère le développement nécessaire à la mise en œuvre d’initiatives compétitives en matière d’IA et de transformation numérique.
Les entreprises emploient fréquemment Helm pour gérer des applications personnalisées dans les environnements de développement, de préproduction et de production. Un seul graphique peut être configuré avec différentes limites de ressources, répliques et indicateurs de fonctionnalités pour chaque environnement.
L’installation et la gestion de logiciels tiers, tels que des bases de données, des outils de surveillance ou des composants CI/CD, sont simplifiées avec Helm. Au lieu de suivre une documentation d’installation complexe, les équipes peuvent installer des configurations prêtes pour la production à l’aide d’une seule commande d’installation Helm.
Helm excelle dans les scénarios où la même application doit être déployée plusieurs fois avec des configurations différentes dans des espaces de noms distincts. Les plateformes SaaS, par exemple, utilisent souvent Helm pour gérer les déploiements spécifiques à leurs clients.
Helm s’intègre de façon fluide aux pipelines d’intégration continue et de déploiement continu, servant de mécanisme de déploiement dans les pipelines de livraison automatisés. Les plateformes de commerce électronique font appel à Helm pour gérer la mise à l’échelle saisonnière, en déployant rapidement d’autres instances d’applications pendant les périodes de fort trafic et en réduisant la mise à l’échelle pendant les périodes creuses, le tout géré via les instances Helm.
Helm est une solution idéale pour gérer les workloads d’intelligence artificielle (IA) et de machine learning (ML), qui nécessitent souvent des configurations complexes, notamment des ressources GPU, un stockage spécialisé, des composants de service de modèles et des systèmes de surveillance. Les entreprises utilisent les graphiques Helm pour standardiser le déploiement des pipelines de ML, garantissant ainsi des environnements cohérents pour les workloads d’entraînement et d’inférence sur les clusters de développement et de production.
Kustomize est une autre solution populaire pour gérer les configurations Kubernetes, bien qu’elle adopte une approche différente de celle de Helm. Alors que Helm s’appuie sur des modèles pour générer des manifestes, Kustomize utilise une approche déclarative avec des correctifs et des superpositions pour modifier les configurations de base.
Kustomize est plus simple et nécessite un temps d’apprentissage moins long, mais cette solution ne dispose pas des capacités de gestion des paquets, des versions et de restauration de Helm. De nombreuses entreprises utilisent les deux outils ensemble, Kustomize gérant les variantes de configuration et Helm gérant le cycle de vie global des applications.
Les opérateurs Kubernetes sont des contrôleurs spécifiques à une application qui étendent les API Kubernetes pour gérer des applications complexes. Tandis que Helm se concentre sur le paquetage et le déploiement, les opérateurs assurent la gestion continue du cycle de vie. Ils peuvent gérer des tâches opérationnelles spécifiques à l’application, telles que les sauvegardes, la mise à l’échelle et les mises à niveau.
Helm est mieux adapté au déploiement d’applications générales et aux workloads plus simples. En parallèle, les opérateurs excellent dans la gestion d’applications avec état et des exigences opérationnelles complexes. De nombreuses entreprises font appel à Helm pour déployer elles-mêmes des opérateurs.
1. CNCF 2023 Annual Survey, Cloud Native Computing Foundation, 2023