Content slides
Introduction à Helm¶
Helm est le gestionnaire de paquets (Package Manager) et le moteur de templating de référence pour Kubernetes
Avantages clés - Simplification : Déploiement d'applications complexes en une seule commande - Templating : Éviter la duplication de YAML (principe DRY) - Multi-environnement : Gestion facile des configurations (dev, staging, prod) - Stabilité : Historique des versions et capacité de Rollback immédiat
Concepts fondamentaux¶
- Chart : Package contenant tous les fichiers de ressources (YAML) et de logique (Templates)
- Values : Fichier de configuration permettant de personnaliser le comportement du Chart
- Release : Une instance spécifique d'un Chart déployée dans le cluster
- Repository : Serveur hébergeant des Charts (ex : Artifact Hub)
Commandes de survie¶
# Ajouter un dépôt et mettre à jour
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# Simuler et débugger le rendu (Indispensable)
helm template ./my-chart
helm install --dry-run --debug my-release ./my-chart
# Gérer le cycle de vie
helm list
helm upgrade my-release ./my-chart -f values-prod.yaml
helm rollback my-release 1
helm uninstall my-release
Anatomie d'un Chart¶
my-chart/
Chart.yaml # Métadonnées (nom, version, description)
values.yaml # Valeurs par défaut des variables
charts/ # Dépendances (autres charts)
templates/ # Moteur de logique YAML
│ ├── deployment.yaml
│ ├── service.yaml
│ └── _helpers.tpl # Fonctions réutilisables
La puissance du Templating¶
Helm utilise le langage de template Go pour injecter de la logique dans le YAML :
- Variables :
{{ .Values.replicaCount }} - Conditions :
{{ if .Values.ingress.enabled }} - Boucles :
{{ range .Values.env }} - Pipelines :
{{ .Values.image | lower | quote }}
Cela permet de créer des manifests dynamiques et réutilisables
Exemple : Deployment.yaml¶
Le template utilise les valeurs du fichier values.yaml :
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}
spec:
containers:
- name: nginx
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: 80
Conclusion¶
- Helm est l'outil indispensable pour gérer le "Mur de YAML" de Kubernetes
- Prioriser l'utilisation de Values pour séparer le code de la configuration
- Toujours tester ses changements avec
helm templateou--dry-run - Maîtriser le Rollback pour garantir une haute disponibilité en production