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