From 5ce1bb8d9466805d523a5528a14252560713fde9 Mon Sep 17 00:00:00 2001
From: CLEMENTE Damien <damien.clemente@etu.univ-amu.fr>
Date: Wed, 12 Mar 2025 00:01:04 +0000
Subject: [PATCH] Update 2 files

- /5. installation_load-balancer
- /5. installation_load-balancer.md
---
 5. installation_load-balancer    |   0
 5. installation_load-balancer.md | 100 +++++++++++++++++++++++++++++++
 2 files changed, 100 insertions(+)
 delete mode 100644 5. installation_load-balancer
 create mode 100644 5. installation_load-balancer.md

diff --git a/5. installation_load-balancer b/5. installation_load-balancer
deleted file mode 100644
index e69de29..0000000
diff --git a/5. installation_load-balancer.md b/5. installation_load-balancer.md
new file mode 100644
index 0000000..1b4c446
--- /dev/null
+++ b/5. installation_load-balancer.md	
@@ -0,0 +1,100 @@
+# Mise en Place d'un Load Balancer avec MetalLB
+
+## 1. Qu'est-ce que MetalLB ?
+MetalLB est un **Load Balancer** pour les clusters Kubernetes fonctionnant sur des infrastructures sans balancer natif, comme les clusters bare-metal ou les VMs.
+
+Il permet d'attribuer des **adresses IP externes** aux services Kubernetes de type `LoadBalancer`, ce qui facilite l'accès aux applications depuis l'extérieur du cluster.
+
+## 2. Installation de MetalLB
+
+MetalLB peut être installé en appliquant son manifeste officiel :
+
+```bash
+kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/main/config/manifests/metallb-native.yaml
+```
+
+Vérification de l'installation :
+
+```bash
+kubectl get pods -n metallb-system
+```
+
+Si tout est bien installé, les pods `controller` et `speaker` doivent être en état `Running`.
+
+Exemple :
+
+```bash
+root@kube01:~# kubectl get pods -n metallb-system
+NAME                          READY   STATUS    RESTARTS   AGE
+controller-5b5b575d55-8q9mr   1/1     Running   0          8m12s
+speaker-24jdj                 1/1     Running   0          8m12s
+speaker-7q769                 1/1     Running   0          8m11s
+speaker-lmjm9                 1/1     Running   0          8m11s
+```
+
+## 3. Configuration de MetalLB
+
+MetalLB doit être configuré pour attribuer des adresses IP aux services.
+
+Créer un fichier `metallb-config.yaml` :
+
+```yaml
+apiVersion: metallb.io/v1beta1
+kind: IPAddressPool
+metadata:
+  name: my-pool
+  namespace: metallb-system
+spec:
+  addresses:
+    - 192.168.10.100-192.168.10.110  # Plage d'IP LoadBalancer
+
+---
+apiVersion: metallb.io/v1beta1
+kind: L2Advertisement
+metadata:
+  name: my-advert
+  namespace: metallb-system
+```
+
+Appliquer la configuration :
+
+```bash
+kubectl apply -f metallb-config.yaml
+```
+
+Vérification :
+
+```bash
+kubectl get svc -A
+```
+
+Exemple de sortie :
+
+```bash
+root@kube01:~# kubectl get svc -A
+NAMESPACE              NAME                      TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)            AGE
+wordpress             wordpress                 LoadBalancer   10.107.47.4      192.168.10.100   80:31731/TCP       112m
+openldap              phpldapadmin-service      LoadBalancer   10.106.142.213   192.168.10.101   9943:32590/TCP     21h
+```
+
+## 4. Résolution des Problèmes
+
+Si le Load Balancer ne fonctionne pas, les étapes suivantes peuvent aider :
+
+1. **Vérifier que les pods de MetalLB sont en cours d'exécution** :
+    ```bash
+    kubectl get pods -n metallb-system
+    ```
+2. **Regarder les logs des composants** :
+    ```bash
+    kubectl logs -n metallb-system -l component=controller
+    kubectl logs -n metallb-system -l component=speaker
+    ```
+3. **Supprimer la configuration Webhook si nécessaire** :
+    ```bash
+    kubectl delete validatingwebhookconfiguration metallb-webhook-configuration
+    ```
+
+## Conclusion
+
+MetalLB est un outil essentiel pour exposer des services Kubernetes sur des clusters sans Load Balancer natif. Il permet d’attribuer des adresses IP aux services de type `LoadBalancer`, facilitant ainsi leur accessibilité depuis l'extérieur du cluster.
-- 
GitLab