glossaire

Helm chart (paquet d'application Kubernetes)

Un chart Helm est un paquet qui décrit une application Kubernetes complète : ses manifests sous forme de templates, les valeurs qui les paramètrent et des métadonnées de version. Helm, l’outil qui les consomme, joue pour Kubernetes le rôle qu’un gestionnaire de paquets joue pour un système d’exploitation — installer, mettre à jour, revenir en arrière.

Structure d’un chart

Un chart est un répertoire avec une convention stricte : Chart.yaml porte le nom, la version du chart et celle de l’application ; values.yaml déclare les valeurs par défaut ; templates/ contient les manifests Kubernetes écrits avec le moteur de templates de Go. À l’installation, Helm fusionne les valeurs fournies avec les défauts, rend les templates et applique le résultat au cluster. Chaque installation est une release, dont Helm conserve l’historique — c’est ce qui permet helm rollback vers une révision antérieure.

Un chart peut déclarer des dépendances vers d’autres charts (une application et sa base de données, par exemple), résolues depuis des dépôts de charts, qui sont de simples serveurs HTTP ou des registres OCI.

Ce que Helm apporte en production

L’intérêt principal n’est pas d’écrire ses propres charts, mais de consommer ceux de l’écosystème : la quasi-totalité des composants d’infrastructure (ingress controllers, Prometheus, cert-manager) sont distribués sous cette forme, avec des valeurs par défaut raisonnables et des options documentées. Pour ses applications internes, un chart bien tenu donne un déploiement paramétrable par environnement — mêmes templates, values différentes pour la préproduction et la production — versionné et rejouable depuis la CI.

Limites et alternatives

Le templating texte de Go est le reproche récurrent : indentation significative de YAML générée par des directives {{ include }} et nindent, difficile à lire et à déboguer au-delà d’une certaine taille. Kustomize, intégré à kubectl, prend l’approche inverse — des manifests complets surchargés par patchs, sans templates — et suffit souvent pour des applications internes simples. Les deux ne s’excluent pas : consommer les charts tiers avec Helm et gérer ses propres manifests en Kustomize est une combinaison courante. Dans une démarche GitOps, c’est l’outil de réconciliation (Argo CD, Flux) qui rend les charts, et l’historique de release de Helm perd de son importance au profit de l’historique Git.

Un chart reste du code : il se revoit, se versionne et se teste (helm template rend les manifests sans cluster, helm lint attrape les erreurs de structure) comme n’importe quel autre livrable.