# Helm

# ⎈ Helm Cheat Sheet

Cette documentation regroupe les commandes Helm utilisées pour développer, valider et déboguer les Charts Helm de la plateforme.

**Important :** En production, les déploiements sont réalisés exclusivement par **ArgoCD**. Les commandes présentées ici sont destinées au développement local, au test et au diagnostic.

---

## 🎯 Objectif

Cette documentation permet de :

- Créer un nouveau Chart Helm
- Valider un Chart
- Générer les manifestes Kubernetes
- Inspecter une Release existante
- Tester un Chart localement
- Gérer les dépôts Helm

---

## 📦 Créer un Chart

### Créer la structure de base

```bash
helm create mon-app

```

Structure générée :

```
mon-app/

├── Chart.yaml

├── values.yaml

├── charts/

└── templates/

```

---

## ✅ Vérifier un Chart

### Validation syntaxique

```bash
helm lint ./infra/kubernetes/mon-app

```

Cette commande vérifie la structure du Chart ainsi que les bonnes pratiques Helm.

---

## 🧪 Générer les manifestes Kubernetes

Cette commande est la plus utilisée lors du développement.

### Afficher le rendu complet

```bash
helm template ma-release ./infra/kubernetes/mon-app --debug

```

### Tester un namespace spécifique

```bash
helm template ma-release ./infra/kubernetes/mon-app \
-n media

```

Cette étape permet de vérifier les boucles, les conditions et les variables avant tout déploiement.

---

## 🔍 Inspecter une Release

### Afficher toutes les Releases

```bash
helm list -A

```

### Afficher l'historique

```bash
helm history ma-release \
-n mon-namespace

```

---

## ⚙️ Consulter les valeurs appliquées

### Valeurs personnalisées

```bash
helm get values ma-release \
-n mon-namespace

```

### Toutes les valeurs

```bash
helm get values ma-release \
-n mon-namespace \
--all

```

---

## 📄 Afficher les manifestes générés

```bash
helm get manifest ma-release \
-n mon-namespace

```

Permet de visualiser exactement les objets Kubernetes installés.

---

## 🧪 Tester un Chart localement

Cette procédure est réservée au développement.

⚠ Si l'application est déjà gérée par ArgoCD, celui-ci risque d'écraser les modifications.

### Installation

```bash
helm install test-release \
./mon-chart \
-n test-ns \
--create-namespace

```

### Installation ou mise à jour

```bash
helm upgrade \
--install \
test-release \
./mon-chart \
-n test-ns \
-f mes-valeurs.yaml

```

### Désinstallation

```bash
helm uninstall test-release \
-n test-ns

```

---

## 📚 Dépôts Helm

### Ajouter un dépôt

```bash
helm repo add bitnami \
https://charts.bitnami.com/bitnami

```

### Mettre à jour les index

```bash
helm repo update

```

### Rechercher un Chart

```bash
helm search repo redis

```

---

## 🚨 Dépannage

<table id="bkmrk-probl%C3%A8me-commande-er"><thead><tr><th>Problème</th><th>Commande</th></tr></thead><tbody><tr><td>Erreur de template</td><td>`helm template --debug`</td></tr><tr><td>Erreur de syntaxe</td><td>`helm lint`</td></tr><tr><td>Voir les valeurs réellement utilisées</td><td>`helm get values`</td></tr><tr><td>Voir les objets Kubernetes</td><td>`helm get manifest`</td></tr><tr><td>Historique des mises à jour</td><td>`helm history`</td></tr></tbody></table>

---

## 💡 Bonnes pratiques

- Versionner tous les Charts dans Git.
- Ne jamais modifier une Release directement sur le cluster.
- Utiliser `helm template` avant chaque commit.
- Toujours exécuter `helm lint`.
- Utiliser un fichier `values.yaml` par environnement lorsque cela est nécessaire.
- Laisser ArgoCD gérer les déploiements en production.

---

## 🏗 Philosophie de la plateforme

Sur cette plateforme, Helm est uniquement un moteur de génération de manifestes Kubernetes. Les responsabilités sont réparties de la manière suivante :

<table id="bkmrk-composant-responsabi"><thead><tr><th>Composant</th><th>Responsabilité</th></tr></thead><tbody><tr><td>Git</td><td>Source de vérité</td></tr><tr><td>Helm</td><td>Génération des manifestes Kubernetes</td></tr><tr><td>ArgoCD</td><td>Déploiement GitOps</td></tr><tr><td>Kubernetes</td><td>Exécution des workloads</td></tr></tbody></table>

Les commandes `helm install` et `helm upgrade` ne doivent être utilisées que pour des tests locaux. En production, toutes les applications sont déployées automatiquement par ArgoCD.

---

## 📚 Voir également

- ArgoCD
- Sealed Secrets
- Kubernetes GitOps
- Développement des applications Helm internes

```