DevOps
Helm

Regrouper ses manifestes dans un chart Helm

Helm est le gestionnaire de packages de Kubernetes. Il permet de regrouper, paramétrer et déployer facilement des manifestes Kubernetes sous forme de "charts" réutilisables et versionnés.

Installer Helm

Sous Linux :

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Vérifiez l’installation :
helm version

Créer un chart Helm

Pour générer la structure d’un nouveau chart :

helm create mon-chart
Cela crée un dossier mon-chart/ avec la structure suivante : - Chart.yaml : métadonnées du chart - values.yaml : valeurs par défaut - templates/ : manifestes Kubernetes templates

Ajouter des manifestes

Placez vos fichiers YAML Kubernetes dans le dossier templates/ du chart. Exemple : - deployment.yaml - service.yaml

Vous pouvez utiliser la syntaxe Go templating pour rendre les manifestes dynamiques.

Ajouter des valeurs

Définissez les variables dans values.yaml :

replicaCount: 2
image:
  repository: nginx
  tag: latest
Dans vos templates :
spec:
  replicas: {{ .Values.replicaCount }}
  containers:
    - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

Ajouter des templates

Utilisez la syntaxe Helm ({{ ... }}) pour paramétrer vos manifestes. Exemple :

metadata:
  name: {{ include "mon-chart.fullname" . }}
Vous pouvez créer des helpers dans _helpers.tpl pour factoriser du code.

Ajouter des dépendances

Déclarez les dépendances dans Chart.yaml :

dependencies:
  - name: redis
    version: 18.0.0
    repository: https://charts.bitnami.com/bitnami
Installez les dépendances :
helm dependency update mon-chart

Installer un chart Helm

helm install mon-app ./mon-chart -n mon-namespace
Pour passer des valeurs personnalisées :
helm install mon-app ./mon-chart -f valeurs-persos.yaml

Mettre à jour un chart Helm

helm upgrade mon-app ./mon-chart

Supprimer un chart Helm

helm uninstall mon-app

Ajouter des hooks

Les hooks permettent d’exécuter des jobs avant/après certaines étapes (pre-install, post-upgrade, etc). Exemple dans un template :

apiVersion: batch/v1
kind: Job
metadata:
  name: migration-job
  annotations:
    "helm.sh/hook": pre-install
spec:
  ...

Ajouter des tests

Helm permet d’ajouter des tests automatisés (pods qui doivent réussir). Placez-les dans templates/tests/ :

apiVersion: v1
kind: Pod
metadata:
  name: "test-connection"
  annotations:
    "helm.sh/hook": test
spec:
  containers:
    - name: curl
      image: curlimages/curl
      command: ['curl', '--fail', 'http://mon-service:80']
  restartPolicy: Never
Lancez les tests :
helm test mon-app

Bonnes pratiques

  • Versionnez vos charts et documentez les valeurs dans values.yaml.
  • Utilisez des helpers pour factoriser les noms et labels.
  • Testez vos charts en local avec helm template.
  • Utilisez des schémas de validation (values.schema.json).
  • Publiez vos charts sur un repository Helm pour les partager.

Ressources utiles