Aller au contenu principal

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