Cheatsheets

Helm

Aide-mémoire Helm complet - commandes repositories, releases, valeurs, upgrade, rollback, templates et debug. Référence rapide Kubernetes pour DevOps.

Helm est le gestionnaire de packages Kubernetes. Un chart = ensemble de templates. Une release = chart déployé dans le cluster.


Installation

DescriptionCommande
Linux / macOS (script officiel)curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
macOS (Homebrew)brew install helm
Vérifier la versionhelm version

Repositories

DescriptionCommande
Ajouter un repohelm repo add bitnami https://charts.bitnami.com/bitnami
Lister les reposhelm repo list
Mettre à jour tous les reposhelm repo update
Supprimer un repohelm repo remove bitnami
Chercher un chart dans les reposhelm search repo nginx
Chercher sur Artifact Hubhelm search hub wordpress
Lister toutes les versions d'un charthelm search repo bitnami/redis --versions

Repos utiles

NomURL
Bitnamihttps://charts.bitnami.com/bitnami
ingress-nginxhttps://kubernetes.github.io/ingress-nginx
cert-managerhttps://charts.jetstack.io
Prometheus Communityhttps://prometheus-community.github.io/helm-charts
Grafanahttps://grafana.github.io/helm-charts
Longhornhttps://charts.longhorn.io
Argohttps://argoproj.github.io/argo-helm
Rancherhttps://releases.rancher.com/server-charts/stable

Releases - opérations de base

DescriptionCommande
Installer un charthelm install ma-release bitnami/redis
Installer dans un namespacehelm install ma-release bitnami/redis -n mon-ns --create-namespace
Installer une version précisehelm install ma-release bitnami/redis --version 18.0.0
Lister les releaseshelm list
Lister dans tous les namespaceshelm list -A
Statut d'une releasehelm status ma-release
Historique des révisionshelm history ma-release
Désinstallerhelm uninstall ma-release
Désinstaller en gardant l'historiquehelm uninstall ma-release --keep-history

Configurer une release

DescriptionCommande
Voir les valeurs disponibles d'un charthelm show values bitnami/redis
Exporter les valeurs par défauthelm show values bitnami/redis > values.yaml
Installer avec valeurs inlinehelm install ma-release bitnami/redis --set auth.enabled=false
Installer avec un fichier de valeurshelm install ma-release bitnami/redis -f my-values.yaml
Combiner fichier + overridehelm install ma-release bitnami/redis -f values.yaml --set auth.password=secret

Exemple de fichier values.yaml

# values.yaml - exemple Redis
auth:
  enabled: true
  password: "supersecret"

master:
  persistence:
    enabled: true
    size: 10Gi
  resources:
    limits:
      memory: 256Mi
      cpu: 250m

replica:
  replicaCount: 2

metrics:
  enabled: true

Upgrade et rollback

DescriptionCommande
Mettre à jour une releasehelm upgrade ma-release bitnami/redis -f my-values.yaml
Installer ou upgrader (idempotent)helm upgrade --install ma-release bitnami/redis -f my-values.yaml
Upgrade avec rollback auto si échechelm upgrade --install ma-release bitnami/redis -f my-values.yaml --atomic --timeout 5m
Voir diff avant d'appliquerhelm diff upgrade ma-release bitnami/redis -f values.yaml
Rollback à la révision précédentehelm rollback ma-release
Rollback à une révision précisehelm rollback ma-release 2

Inspecter et débugger

DescriptionCommande
Voir les valeurs effectives d'une releasehelm get values ma-release
Valeurs effectives + défautshelm get values ma-release --all
Voir les manifestes déployéshelm get manifest ma-release
Voir les notes post-installhelm get notes ma-release
Tout afficher (values + manifest + notes)helm get all ma-release
Simuler un install (dry-run)helm install ma-release bitnami/redis --dry-run --debug
Voir les manifestes générés (sans install)helm template ma-release bitnami/redis -f values.yaml
Exporter les manifestes en fichierhelm template ma-release bitnami/redis -f values.yaml > manifests.yaml
Tester une release (test hooks)helm test ma-release --logs

Créer et développer un chart

DescriptionCommande
Créer la structure d'un charthelm create mon-chart
Valider la syntaxehelm lint mon-chart
Valider avec des valeurs customhelm lint mon-chart -f prod-values.yaml
Télécharger les dépendanceshelm dependency update mon-chart
Lister les dépendanceshelm dependency list mon-chart
Packager en archive .tgzhelm package mon-chart
Pousser vers un OCI registryhelm push mon-chart-1.0.0.tgz oci://registry.io/charts

Structure d'un chart

mon-chart/
├── Chart.yaml          # Métadonnées (nom, version, dépendances)
├── values.yaml         # Valeurs par défaut
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── ingress.yaml
│   ├── _helpers.tpl    # Fonctions partagées ({{ define }})
│   └── NOTES.txt       # Message affiché après install
└── charts/             # Dépendances packagées

Chart.yaml

apiVersion: v2
name: mon-chart
description: Mon application
type: application
version: 0.1.0        # Version du chart
appVersion: "1.0.0"   # Version de l'app déployée
dependencies:
  - name: redis
    version: "~18.0.0"
    repository: https://charts.bitnami.com/bitnami
    condition: redis.enabled

Fonctions de template fréquentes

FonctionUsage
{{ .Values.replicaCount }}Lire une valeur du values.yaml
{{ .Release.Name }}Nom de la release
{{ .Chart.Version }}Version du chart
{{ include "chart.fullname" . }}Appeler un helper
{{ toYaml .Values.resources | nindent 10 }}Injecter un bloc YAML indenté
{{ .Values.tag | default .Chart.AppVersion }}Valeur par défaut
{{ if .Values.ingress.enabled }}Condition
{{ range .Values.env }}Boucle
{{ quote .Values.name }}Échapper une string

Plugins utiles

PluginUsageInstallation
helm-diffVoir les différences avant upgradehelm plugin install https://github.com/databus23/helm-diff
helm-secretsSecrets chiffrés avec SOPShelm plugin install https://github.com/jkroepke/helm-secrets
helm-unittestTests unitaires de templateshelm plugin install https://github.com/helm-unittest/helm-unittest

Ressources

Newsletter · 2 000+ abonnés

Reste au courant de ce qui bouge en prod

RudeOps veille devops hebdo, droit au but.

Gratuit · Sans spam · Désinscription en un clic