Chapitre 10.1 - Introduction à Helm
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre ce qu'est Helm et pourquoi l'utiliser
- Installer Helm
- Comprendre les concepts de base (Charts, Releases, Repositories)
- Installer et gérer des Charts
- Comprendre les avantages de Helm
- Utiliser les commandes Helm de base
Introduction
Helm est le gestionnaire de paquets pour Kubernetes. Il simplifie l'installation et la gestion d'applications complexes en Kubernetes.
Qu'est-ce qu'Helm?
Helm est un outil qui permet de:
- Définir des applications Kubernetes comme packages réutilisables
- Installer des applications complexes avec une seule commande
- Mettre à jour et gérer les versions d'applications
- Partager des applications via des repositories
Analogie: Helm est comme apt pour Ubuntu ou npm pour Node.js, mais pour Kubernetes.
Concepts Clés
Chart
Un Chart est un package d'application Kubernetes. Il contient:
- Templates YAML pour les ressources Kubernetes
- Fichier de valeurs par défaut (
values.yaml) - Métadonnées (
Chart.yaml)
Release
Une Release est une instance d'un Chart déployé dans un cluster. Un même Chart peut être installé plusieurs fois avec des releases différentes.
Repository
Un Repository est une collection de Charts. Il peut être local ou distant (HTTP).
Installation
Linux/Mac
# Télécharger Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Vérifier
helm version
Windows
# Via Chocolatey
choco install kubernetes-helm
# Ou télécharger depuis GitHub
# https://github.com/helm/helm/releases
Vérification
helm version
# version.BuildInfo{Version:"v3.12.0", ...}
Commandes de Base
Ajouter un Repository
# Repository Bitnami (populaire)
helm repo add bitnami https://charts.bitnami.com/bitnami
# Mettre à jour les repositories
helm repo update
# Lister les repositories
helm repo list
Rechercher des Charts
# Rechercher dans les repositories
helm search repo nginx
# Rechercher dans Artifact Hub
helm search hub nginx
Installer un Chart
# Installation basique
helm install my-release bitnami/nginx
# Avec un nom de release personnalisé
helm install web-server bitnami/nginx
# Avec des valeurs personnalisées
helm install my-release bitnami/nginx -f my-values.yaml
# Avec des valeurs inline
helm install my-release bitnami/nginx \
--set service.type=LoadBalancer \
--set replicaCount=3
Lister les Releases
# Voir toutes les releases
helm list
# Voir dans un namespace spécifique
helm list -n production
# Voir toutes les releases (y compris supprimées)
helm list --all
Mettre à Jour une Release
# Mettre à jour avec de nouvelles valeurs
helm upgrade my-release bitnami/nginx -f new-values.yaml
# Mettre à jour vers une nouvelle version
helm upgrade my-release bitnami/nginx --version 15.0.0
# Rollback
helm rollback my-release 1
Supprimer une Release
# Supprimer une release
helm uninstall my-release
# Voir l'historique avant suppression
helm history my-release
Exemple: Installation de NGINX
Étape 1: Ajouter le Repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Étape 2: Rechercher le Chart
helm search repo nginx
Étape 3: Installer
helm install my-nginx bitnami/nginx
Étape 4: Vérifier
# Voir la release
helm list
# Voir les ressources créées
kubectl get all -l app.kubernetes.io/instance=my-nginx
# Obtenir l'URL
helm status my-nginx
Avantages de Helm
1. Simplicité
Sans Helm:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f configmap.yaml
kubectl apply -f ingress.yaml
# ... 10+ fichiers
Avec Helm:
helm install my-app ./my-chart
2. Gestion des Versions
# Installer une version spécifique
helm install my-app ./my-chart --version 1.2.3
# Mettre à jour
helm upgrade my-app ./my-chart --version 1.3.0
# Rollback
helm rollback my-app 1
3. Réutilisabilité
Un Chart peut être utilisé pour plusieurs environnements:
helm install my-app-dev ./my-chart -f dev-values.yaml
helm install my-app-prod ./my-chart -f prod-values.yaml
4. Partage
Les Charts peuvent être partagés via des repositories publics ou privés.
Structure d'un Chart
my-chart/
├── Chart.yaml # Métadonnées
├── values.yaml # Valeurs par défaut
├── templates/ # Templates Kubernetes
│ ├── deployment.yaml
│ ├── service.yaml
│ └── configmap.yaml
└── charts/ # Dépendances
Commandes Utiles
Informations
# Voir les valeurs d'un Chart
helm show values bitnami/nginx
# Voir les valeurs d'une release
helm get values my-release
# Voir le manifest généré
helm get manifest my-release
# Voir les notes
helm get notes my-release
Débogage
# Template avec dry-run
helm install my-release ./my-chart --dry-run --debug
# Voir les valeurs calculées
helm install my-release ./my-chart --debug --dry-run
Bonnes Pratiques
1. Utiliser des Repositories
Préférer les repositories officiels plutôt que les Charts locaux quand possible.
2. Versioning
Utiliser des versions spécifiques en production.
3. Values Files
Séparer les valeurs par environnement (dev, staging, prod).
4. Testing
Tester les Charts avec --dry-run avant installation.
5. Documentation
Documenter les valeurs personnalisables dans values.yaml.
Résumé
Dans ce chapitre, vous avez appris:
Helm: Gestionnaire de paquets pour Kubernetes
Chart: Package d'application Kubernetes
Release: Instance d'un Chart déployé
Repository: Collection de Charts
Installation: helm install avec repositories
Gestion: helm upgrade, helm rollback, helm uninstall
Avantages: Simplicité, versioning, réutilisabilité, partage
Bonnes pratiques: Repositories, versioning, values files, testing
Prochaines Étapes
Chapitre 10.2: Helm Charts (Création et Structure)
Chapitre 10.3: Templates et Valeurs
Lab 10.1: Installation et Utilisation de Charts Helm
Chapitre créé le: Décembre 2024