Aller au contenu

Helm

200 Pratiquer ⏱ 13 h 30 helmkubernetesoci

À la fin, vous saurez

  • Expliquer ce que fait Helm et ce qu'il ne fait pas
  • Installer et configurer un chart de la communauté en maîtrisant ses valeurs
  • Gérer le cycle de vie d'une release : mise à jour, historique, retour arrière
  • Écrire un chart lisible et réutilisable pour une application
  • Utiliser les modèles, les fonctions, les dépendances, les hooks et les tests
  • Publier un chart dans un registre OCI, le signer, et le déployer avec Argo CD

Prérequis

Ce cours prolonge Kubernetes : les fondamentaux. Les manifestes de Signalements y étaient écrits à la main et rassemblés par une kustomization ; dès qu'il faut les décliner par environnement, les paramétrer pour d'autres clients, ou installer des logiciels tiers (Traefik, cert-manager, Argo CD), on rencontre Helm, le gestionnaire de paquets de Kubernetes. Le cours s'adresse à celles et ceux qui installent des charts et à celles et ceux qui en écrivent.

L'approche

La première moitié du cours utilise Helm comme un client : installer un chart, lire et surcharger ses valeurs, mettre à jour et revenir en arrière, comprendre ce qu'est une release. La seconde moitié écrit le chart de Signalements, de helm create à sa publication signée dans un registre OCI, puis le confie à Argo CD, comme le fait Lyneko pour ses applications.

Helm 4, sorti fin 2025, est la version actuelle ; Helm 3 reste très répandu. Les commandes de ce cours sont les mêmes pour l'essentiel, et chaque leçon signale les différences. Les sorties montrées pour les commandes qui ne demandent pas de cluster (helm create, helm template, helm lint, helm show values) ont été produites localement et sont réelles ; celles qui demandent un cluster sont décrites sans sortie inventée.

Ce qu'il faut

  • Helm 3.16 ou plus récent (Helm 4 recommandé), kubectl 1.36, et le cluster kind formation du cours Kubernetes ou un cluster Kapsule.
  • Pour les leçons 9 et 10 : un registre OCI (Container Registry de Scaleway, GitHub Container Registry, ou Harbor) et Argo CD (cours GitOps avec Argo CD).

Les leçons

  1. Ce que fait Helm
  2. Installer et configurer un chart
  3. Les releases et leur cycle de vie
  4. Écrire un chart
  5. Les modèles en profondeur
  6. Valeurs, schéma et fonctions d'aide
  7. Dépendances et bibliothèques
  8. Hooks et tests
  9. Publier et signer un chart
  10. Helm et GitOps

Pour valider : le quiz (niveau 100) et le lab (niveau 200).

Plan du cours

  1. Ce que fait Helm 1 h 10 200 Pratiquer
    Le problème que Helm résout (décliner des manifestes, installer des logiciels tiers), le vocabulaire (chart, valeurs, release, dépôt, registre), l'architecture sans serveur de Helm 3 et 4, ce que Helm 4 change, la comparaison avec Kustomize, et ce que Helm ne fait pas : réconcilier en continu.
  2. Installer et configurer un chart 1 h 15 200 Pratiquer
    Trouver un chart sur Artifact Hub, dépôts HTTP et registres OCI, lire les valeurs avant d'installer, les surcharger par fichier ou par --set sans tomber dans les pièges de typage, l'ordre de priorité des valeurs, installer Traefik avec une version épinglée, et les options --create-namespace, --wait et --atomic (renommée --rollback-on-failure dans Helm 4).
  3. Les releases et leur cycle de vie 1 h 20 200 Pratiquer
    Lister et inspecter une release, la mettre à jour avec upgrade --install, lire l'historique, revenir en arrière, désinstaller en gardant l'historique, comprendre où et comment Helm stocke les releases, la fusion à trois voies face aux modifications manuelles, les pièges de --reuse-values, et l'application côté serveur de Helm 4.
  4. Écrire un chart 1 h 25 200 Pratiquer
    Transformer les manifestes de Signalements en chart : Chart.yaml (apiVersion v2, version et appVersion), values.yaml comme interface publique, modèles, fonctions d'aide dans _helpers.tpl, étiquettes standard, NOTES.txt et .helmignore, puis vérification avec helm lint, helm template et helm install --dry-run=server.
  5. Les modèles en profondeur 1 h 25 200 Pratiquer
    Le langage des modèles de Helm : objets intégrés (.Values, .Release, .Chart, .Capabilities, .Files), pipelines et fonctions courantes (default, required, quote, toYaml, nindent, include, tpl), contrôle de flux (if, with, range) et portée du point, variables, gestion des espaces, lookup et ses limites, et les pièges d'indentation.
  6. Valeurs, schéma et fonctions d'aide 1 h 30 300 Concevoir
    Concevoir l'interface d'un chart : structure et nommage de values.yaml, valeurs par défaut sûres, validation par values.schema.json (types, required, additionalProperties, conditions), fonctions d'aide dans _helpers.tpl pour les noms, les étiquettes, les sélecteurs et l'image, valeurs globales, documentation des valeurs et compatibilité entre versions du chart.
  7. Dépendances et bibliothèques 1 h 20 300 Concevoir
    Déclarer des dépendances dans Chart.yaml (version, repository, condition, tags, alias, import-values), figer avec Chart.lock, utiliser helm dependency update et build, passer des valeurs aux sous-charts et partager des modèles entre charts de Lyneko avec un chart de bibliothèque, sans faire d'une base de données un sous-chart.
  8. Hooks et tests 1 h 15 200 Pratiquer
    Exécuter des actions à des moments précis du cycle de vie d'une release avec les hooks Helm (phases, poids, politiques de suppression), écrire le Job de migration de Signalements et ses pièges, comprendre ce que deviennent les hooks sous Argo CD, tester un chart avec helm test, helm lint --strict et des outils hors cluster.
  9. Publier et signer un chart 1 h 30 300 Concevoir
    Versionner un chart, l'empaqueter avec helm package, le publier dans un registre OCI (Scaleway Container Registry), comprendre la fin des dépôts HTTP, signer par provenance GPG ou par cosign sur l'artefact OCI, vérifier avant d'installer, et automatiser la publication dans GitHub Actions.
  10. Helm et GitOps 1 h 20 300 Concevoir
    Déployer un chart Helm avec Argo CD : le rendu côté Argo CD sans release Helm, les valeurs inline, par fichiers et multi-sources, la source OCI, la comparaison avec le HelmRelease de Flux, la promotion d'une version de chart entre environnements, la mise à jour automatique avec Renovate, la dérive, l'adoption d'une release existante et une liste de contrôle.

Sources