From 21ff1970af14aec205b152cc83308b2be9e5dbf3 Mon Sep 17 00:00:00 2001 From: AmirDhe <104517422+AmirDhe@users.noreply.github.com> Date: Fri, 6 Feb 2026 10:22:13 +0000 Subject: [PATCH 1/8] =?UTF-8?q?Finalisation=20atelier=20:=20Automatisation?= =?UTF-8?q?=20Packer=20et=20Ansible=20compl=C3=A8te?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 20 +++++++ README.md | 141 +++++++++++++++++++------------------------------- index.html | 61 ++-------------------- nginx.pkr.hcl | 32 ++++++++++++ playbook.yml | 49 ++++++++++++++++++ 5 files changed, 157 insertions(+), 146 deletions(-) create mode 100644 Makefile create mode 100644 nginx.pkr.hcl create mode 100644 playbook.yml diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..980de10 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +.PHONY: setup build import deploy check all + +setup: + ansible-galaxy collection install kubernetes.core + +build: + packer init nginx.pkr.hcl + packer build nginx.pkr.hcl + +import: + k3d image import my-custom-nginx:v1 -c lab + +deploy: + ansible-playbook playbook.yml + +check: + kubectl get pods + kubectl get svc + +all: setup build import deploy diff --git a/README.md b/README.md index adfe016..2538ada 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,57 @@ ------------------------------------------------------------------------------------------------------- -ATELIER FROM IMAGE TO CLUSTER ------------------------------------------------------------------------------------------------------- -L’idée en 30 secondes : Cet atelier consiste à **industrialiser le cycle de vie d’une application** simple en construisant une **image applicative Nginx** personnalisée avec **Packer**, puis en déployant automatiquement cette application sur un **cluster Kubernetes** léger (K3d) à l’aide d’**Ansible**, le tout dans un environnement reproductible via **GitHub Codespaces**. -L’objectif est de comprendre comment des outils d’Infrastructure as Code permettent de passer d’un artefact applicatif maîtrisé à un déploiement cohérent et automatisé sur une plateforme d’exécution. - -------------------------------------------------------------------------------------------------------- -Séquence 1 : Codespace de Github -------------------------------------------------------------------------------------------------------- -Objectif : Création d'un Codespace Github -Difficulté : Très facile (~5 minutes) -------------------------------------------------------------------------------------------------------- -**Faites un Fork de ce projet**. Si besion, voici une vidéo d'accompagnement pour vous aider dans les "Forks" : [Forker ce projet](https://youtu.be/p33-7XQ29zQ) - -Ensuite depuis l'onglet [CODE] de votre nouveau Repository, **ouvrez un Codespace Github**. - ---------------------------------------------------- -Séquence 2 : Création du cluster Kubernetes K3d ---------------------------------------------------- -Objectif : Créer votre cluster Kubernetes K3d -Difficulté : Simple (~5 minutes) ---------------------------------------------------- -Vous allez dans cette séquence mettre en place un cluster Kubernetes K3d contenant un master et 2 workers. -Dans le terminal du Codespace copier/coller les codes ci-dessous etape par étape : - -**Création du cluster K3d** -``` -curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash -``` -``` -k3d cluster create lab \ - --servers 1 \ - --agents 2 -``` -**vérification du cluster** -``` -kubectl get nodes -``` -**Déploiement d'une application (Docker Mario)** -``` -kubectl create deployment mario --image=sevenajay/mario -kubectl expose deployment mario --type=NodePort --port=80 -kubectl get svc -``` -**Forward du port 80** +# Atelier : De l'Image au Cluster (DevOps) + +Ce projet automatise le cycle de vie complet d'une application Nginx personnalisée : +1. **Build** de l'image Docker avec **Packer**. +2. **Infrastructure** : Cluster Kubernetes léger (**K3d**). +3. **Déploiement** : Orchestration via **Ansible**. + +## Architecture + +* **Packer** : Construit une image basée sur Nginx en y injectant un `index.html` personnalisé. +* **K3d** : Héberge l'application (1 Master, 2 Agents). +* **Ansible** : Pilote Kubernetes pour créer le Déploiement et le Service. + +## Prérequis + +Ce projet est conçu pour tourner dans un **GitHub Codespace**. +Les outils suivants sont nécessaires (et installés via le script de setup) : +* Packer +* Ansible & collection `kubernetes.core` +* K3d +* Kubectl + +## Guide de démarrage rapide + +Tout le processus est automatisé via un `Makefile`. + +### 1. Lancer l'automatisation complète +Dans le terminal, exécutez simplement : + +```bash +make all ``` -kubectl port-forward svc/mario 8080:80 >/tmp/mario.log 2>&1 & + +Cette commande va séquentiellement : +* Installer les dépendances Ansible. +* Construire l'image Docker avec Packer. +* Importer l'image dans le cluster K3d. +* Déployer les manifestes Kubernetes via Ansible. + +### 2. Accéder à l'application +Une fois le déploiement terminé, faites un port-forward pour accéder au site web : + +```bash +kubectl port-forward svc/nginx-service 8082:80 ``` -**Réccupération de l'URL de l'application Mario** -Votre application Mario est déployée sur le cluster K3d. Pour obtenir votre URL cliquez sur l'onglet **[PORTS]** dans votre Codespace et rendez public votre port **8080** (Visibilité du port). -Ouvrez l'URL dans votre navigateur et jouer ! - ---------------------------------------------------- -Séquence 3 : Exercice ---------------------------------------------------- -Objectif : Customisez un image Docker avec Packer et déploiement sur K3d via Ansible -Difficulté : Moyen/Difficile (~2h) ---------------------------------------------------- -Votre mission (si vous l'acceptez) : Créez une **image applicative customisée à l'aide de Packer** (Image de base Nginx embarquant le fichier index.html présent à la racine de ce Repository), puis déployer cette image customisée sur votre **cluster K3d** via **Ansible**, le tout toujours dans **GitHub Codespace**. - -**Architecture cible :** Ci-dessous, l'architecture cible souhaitée. - -![Screenshot Actions](Architecture_cible.png) - ---------------------------------------------------- -## Processus de travail (résumé) - -1. Installation du cluster Kubernetes K3d (Séquence 1) -2. Installation de Packer et Ansible -3. Build de l'image customisée (Nginx + index.html) -4. Import de l'image dans K3d -5. Déploiement du service dans K3d via Ansible -6. Ouverture des ports et vérification du fonctionnement - ---------------------------------------------------- -Séquence 4 : Documentation -Difficulté : Facile (~30 minutes) ---------------------------------------------------- -**Complétez et documentez ce fichier README.md** pour nous expliquer comment utiliser votre solution. -Faites preuve de pédagogie et soyez clair dans vos expliquations et processus de travail. - ---------------------------------------------------- -Evaluation ---------------------------------------------------- -Cet atelier, **noté sur 20 points**, est évalué sur la base du barème suivant : -- Repository exécutable sans erreur majeure (4 points) -- Fonctionnement conforme au scénario annoncé (4 points) -- Degré d'automatisation du projet (utilisation de Makefile ? script ? ...) (4 points) -- Qualité du Readme (lisibilité, erreur, ...) (4 points) -- Processus travail (quantité de commits, cohérence globale, interventions externes, ...) (4 points) +Ouvrez votre navigateur sur `http://localhost:8082`. + +## Structure du projet + +* `nginx.pkr.hcl` : Configuration Packer pour l'image Docker. +* `playbook.yml` : Playbook Ansible pour le déploiement K8s. +* `Makefile` : Orchestrateur des commandes (Entrypoint). +* `index.html` : Code source de l'application. +## Auteur +Réalisé dans le cadre de l'atelier DevOps. diff --git a/index.html b/index.html index 972916a..ed1e039 100644 --- a/index.html +++ b/index.html @@ -1,62 +1,7 @@ + - - - - +Atelier DevOps - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

Victoire ! Mon image Nginx personnalisée est déployée sur K3d via Ansible.

diff --git a/nginx.pkr.hcl b/nginx.pkr.hcl new file mode 100644 index 0000000..28c5f57 --- /dev/null +++ b/nginx.pkr.hcl @@ -0,0 +1,32 @@ +packer { + required_plugins { + docker = { + version = ">= 0.0.7" + source = "github.com/hashicorp/docker" + } + } +} + +source "docker" "nginx" { + image = "nginx:latest" + commit = true + changes = [ + "EXPOSE 80", + "CMD [\"nginx\", \"-g\", \"daemon off;\"]" + ] +} + +build { + name = "atelier-packer" + sources = ["source.docker.nginx"] + + provisioner "file" { + source = "index.html" + destination = "/usr/share/nginx/html/index.html" + } + + post-processor "docker-tag" { + repository = "my-custom-nginx" + tag = ["v1"] + } +} diff --git a/playbook.yml b/playbook.yml new file mode 100644 index 0000000..545701e --- /dev/null +++ b/playbook.yml @@ -0,0 +1,49 @@ +- name: Déployer Nginx Custom sur K3d + hosts: localhost + connection: local + gather_facts: false + + tasks: + - name: Créer le Déploiement + kubernetes.core.k8s: + kubeconfig: "~/.kube/config" + definition: + apiVersion: apps/v1 + kind: Deployment + metadata: + name: nginx-custom + namespace: default + spec: + replicas: 1 + selector: + matchLabels: + app: nginx-custom + template: + metadata: + labels: + app: nginx-custom + spec: + containers: + - name: nginx + image: my-custom-nginx:v1 + imagePullPolicy: Never + ports: + - containerPort: 80 + + - name: Créer le Service + kubernetes.core.k8s: + kubeconfig: "~/.kube/config" + definition: + apiVersion: v1 + kind: Service + metadata: + name: nginx-service + namespace: default + spec: + selector: + app: nginx-custom + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: ClusterIP From d28792a11a9ac8382c1941bc4e7ffcebaa996ff3 Mon Sep 17 00:00:00 2001 From: AmirDhe <104517422+AmirDhe@users.noreply.github.com> Date: Fri, 6 Feb 2026 11:33:50 +0100 Subject: [PATCH 2/8] Revise README for better clarity and organization Updated README to enhance clarity and structure, added badges, and improved instructions. --- README.md | 111 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 76 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 2538ada..6354e89 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,98 @@ -# Atelier : De l'Image au Cluster (DevOps) +# 🚀 Atelier DevOps : De l'Image au Cluster -Ce projet automatise le cycle de vie complet d'une application Nginx personnalisée : -1. **Build** de l'image Docker avec **Packer**. -2. **Infrastructure** : Cluster Kubernetes léger (**K3d**). -3. **Déploiement** : Orchestration via **Ansible**. +![Packer](https://img.shields.io/badge/Packer-Build-blue?logo=packer) +![Ansible](https://img.shields.io/badge/Ansible-Deploy-red?logo=ansible) +![Kubernetes](https://img.shields.io/badge/Kubernetes-K3d-326ce5?logo=kubernetes) +![Docker](https://img.shields.io/badge/Docker-Container-2496ed?logo=docker) -## Architecture +Ce projet a été réalisé dans le cadre de l'atelier **"Atelier from Image to Cluster"**. +L'objectif est d'industrialiser le cycle de vie d'une application Nginx : de la construction de l'image (Build) à son déploiement automatisé (Run) dans un environnement Kubernetes. -* **Packer** : Construit une image basée sur Nginx en y injectant un `index.html` personnalisé. -* **K3d** : Héberge l'application (1 Master, 2 Agents). -* **Ansible** : Pilote Kubernetes pour créer le Déploiement et le Service. +--- -## Prérequis +## 🏗 Architecture du projet -Ce projet est conçu pour tourner dans un **GitHub Codespace**. -Les outils suivants sont nécessaires (et installés via le script de setup) : -* Packer -* Ansible & collection `kubernetes.core` -* K3d -* Kubectl +Le projet utilise l'approche **Infrastructure as Code** (IaC) pour garantir la reproductibilité. -## Guide de démarrage rapide +```mermaid +graph LR + A[Code Source
index.html] -->|Packer| B(Image Docker
my-custom-nginx:v1) + B -->|k3d image import| C{Cluster K3d} + D[Ansible Playbook] -->|Kubernetes Core| C + C -->|Port Forward| E[Accès Navigateur] +``` + +1. **Packer** : Construit une image Docker immuable basée sur Nginx, embarquant le site web statique. +2. **K3d** : Simule un cluster Kubernetes complet (1 Master, 2 Workers) dans des conteneurs Docker. +3. **Ansible** : Orchestre le déploiement des objets Kubernetes (Deployment, Service) de manière idempotente. + +--- + +## 🛠 Prérequis + +Ce projet est conçu pour être exécuté dans un **GitHub Codespace**. +Les outils nécessaires sont installés automatiquement via le Makefile ou les scripts fournis : +* `Packer` +* `Ansible` (avec collection `kubernetes.core`) +* `K3d` +* `Kubectl` -Tout le processus est automatisé via un `Makefile`. +--- -### 1. Lancer l'automatisation complète -Dans le terminal, exécutez simplement : +## 🚀 Démarrage Rapide + +L'ensemble du processus est automatisé grâce à un **Makefile**. + +### 1. Lancement de l'automatisation +Dans le terminal du Codespace, lancez simplement la commande suivante : ```bash make all ``` -Cette commande va séquentiellement : -* Installer les dépendances Ansible. -* Construire l'image Docker avec Packer. -* Importer l'image dans le cluster K3d. -* Déployer les manifestes Kubernetes via Ansible. +> **Note :** Cette commande va installer les dépendances, builder l'image, l'importer dans le cluster et déployer l'application. + +### 2. Vérification +Une fois le script terminé, vérifiez que les pods sont actifs : + +```bash +kubectl get pods +``` -### 2. Accéder à l'application -Une fois le déploiement terminé, faites un port-forward pour accéder au site web : +### 3. Accès à l'application +Pour visualiser le site web, créez un tunnel vers le service : ```bash kubectl port-forward svc/nginx-service 8082:80 ``` -Ouvrez votre navigateur sur `http://localhost:8082`. +Ouvrez ensuite votre navigateur (ou l'onglet "PORTS" de VS Code) à l'adresse : `http://localhost:8082`. + +--- + +## 📂 Structure des fichiers + +| Fichier | Description | +| :--- | :--- | +| `Makefile` | **Point d'entrée**. Orchestre les commandes (setup, build, deploy). | +| `nginx.pkr.hcl` | Configuration **Packer**. Définit comment l'image Docker est construite. | +| `playbook.yml` | Configuration **Ansible**. Décrit l'état souhaité dans Kubernetes. | +| `index.html` | Le site web statique déployé. | + +--- + +## 💡 Commandes détaillées (Makefile) + +Si vous souhaitez exécuter les étapes une par une plutôt que d'utiliser `make all` : + +* `make setup` : Installe les collections Ansible requises. +* `make build` : Lance Packer pour créer l'image `my-custom-nginx:v1`. +* `make import` : Importe l'image locale dans le registre interne de K3d (**Étape cruciale**). +* `make deploy` : Exécute le playbook Ansible pour créer les ressources Kubernetes. +* `make clean` : Nettoie l'environnement (suppression du cluster). -## Structure du projet +--- -* `nginx.pkr.hcl` : Configuration Packer pour l'image Docker. -* `playbook.yml` : Playbook Ansible pour le déploiement K8s. -* `Makefile` : Orchestrateur des commandes (Entrypoint). -* `index.html` : Code source de l'application. +## 📝 Auteur -## Auteur -Réalisé dans le cadre de l'atelier DevOps. +Projet réalisé par **Amir** dans le cadre de l'évaluation DevOps. From ebd44912a41a171d33de5cfacc893eae798928f8 Mon Sep 17 00:00:00 2001 From: AmirDhe <104517422+AmirDhe@users.noreply.github.com> Date: Fri, 6 Feb 2026 11:34:39 +0100 Subject: [PATCH 3/8] Fix formatting in README.md headings --- README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 6354e89..c091885 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# 🚀 Atelier DevOps : De l'Image au Cluster +# Atelier DevOps : De l'Image au Cluster ![Packer](https://img.shields.io/badge/Packer-Build-blue?logo=packer) ![Ansible](https://img.shields.io/badge/Ansible-Deploy-red?logo=ansible) @@ -10,7 +10,7 @@ L'objectif est d'industrialiser le cycle de vie d'une application Nginx : de la --- -## 🏗 Architecture du projet +## Architecture du projet Le projet utilise l'approche **Infrastructure as Code** (IaC) pour garantir la reproductibilité. @@ -28,7 +28,7 @@ graph LR --- -## 🛠 Prérequis +## Prérequis Ce projet est conçu pour être exécuté dans un **GitHub Codespace**. Les outils nécessaires sont installés automatiquement via le Makefile ou les scripts fournis : @@ -39,7 +39,7 @@ Les outils nécessaires sont installés automatiquement via le Makefile ou les s --- -## 🚀 Démarrage Rapide +## Démarrage Rapide L'ensemble du processus est automatisé grâce à un **Makefile**. @@ -70,7 +70,7 @@ Ouvrez ensuite votre navigateur (ou l'onglet "PORTS" de VS Code) à l'adresse : --- -## 📂 Structure des fichiers +## Structure des fichiers | Fichier | Description | | :--- | :--- | @@ -81,7 +81,7 @@ Ouvrez ensuite votre navigateur (ou l'onglet "PORTS" de VS Code) à l'adresse : --- -## 💡 Commandes détaillées (Makefile) +## Commandes détaillées (Makefile) Si vous souhaitez exécuter les étapes une par une plutôt que d'utiliser `make all` : @@ -93,6 +93,3 @@ Si vous souhaitez exécuter les étapes une par une plutôt que d'utiliser `make --- -## 📝 Auteur - -Projet réalisé par **Amir** dans le cadre de l'évaluation DevOps. From 2b1ddca2a3752ea71dc95b6860720dcfdabfc0a1 Mon Sep 17 00:00:00 2001 From: AmirDhe <104517422+AmirDhe@users.noreply.github.com> Date: Fri, 6 Feb 2026 12:10:34 +0100 Subject: [PATCH 4/8] Enhance Makefile with setup and deployment steps --- Makefile | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 980de10..6938904 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,61 @@ -.PHONY: setup build import deploy check all +.PHONY: all setup cluster build import deploy check clean +# 🎯 Commande par défaut : lance tout le processus de A à Z +all: setup cluster build import deploy check + +# 🛠️ 1. Installation des dépendances (Packer, Ansible, Libs) setup: + @echo "--- [1/6] Installation des prérequis ---" + @# Correction préventive pour éviter l'erreur de dépôt yarn fréquente dans Codespaces + sudo rm -f /etc/apt/sources.list.d/yarn.list + @# Installation de Packer + curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - + sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $$(lsb_release -cs) main" -y + sudo apt-get update + sudo apt-get install packer -y + @# Installation des outils Python pour Ansible et K8s + pip install --upgrade pip + pip install ansible kubernetes requests ansible-galaxy collection install kubernetes.core + @echo "✅ Environnement prêt." + +# 2. Création du cluster K3d (si inexistant) +cluster: + @echo "--- [2/6] Vérification du cluster K3d ---" + @# Installe K3d si la commande n'existe pas + which k3d > /dev/null || curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash + @# Crée le cluster 'lab' seulement s'il n'existe pas déjà + k3d cluster list | grep -q "lab" || k3d cluster create lab --servers 1 --agents 2 + @echo "✅ Cluster K3d opérationnel." +# 3. Construction de l'image Docker avec Packer build: + @echo "--- [3/6] Build de l'image Packer ---" packer init nginx.pkr.hcl packer build nginx.pkr.hcl + @echo "✅ Image 'my-custom-nginx:v1' construite." +# 4. Import de l'image dans le cluster (Étape critique pour K3d) import: + @echo "--- [4/6] Import de l'image dans K3d ---" k3d image import my-custom-nginx:v1 -c lab + @echo "✅ Image importée dans le cluster." +# 5. Déploiement via Ansible deploy: + @echo "--- [5/6] Déploiement Ansible ---" ansible-playbook playbook.yml + @echo "✅ Playbook exécuté." +# 6. Vérification finale check: + @echo "--- [6/6] État du déploiement ---" + @sleep 5 # Petite pause pour laisser le temps aux pods de démarrer kubectl get pods kubectl get svc + @echo "🎉 Succès ! L'application est déployée." -all: setup build import deploy +# Nettoyage (Optionnel) +clean: + k3d cluster delete lab + docker rmi my-custom-nginx:v1 From 32e1f99a82a9a13ff283f1262fbf4c005b8ab525 Mon Sep 17 00:00:00 2001 From: AmirDhe <104517422+AmirDhe@users.noreply.github.com> Date: Fri, 6 Feb 2026 12:10:53 +0100 Subject: [PATCH 5/8] Fix comments formatting in Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 6938904..b11f713 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,9 @@ .PHONY: all setup cluster build import deploy check clean -# 🎯 Commande par défaut : lance tout le processus de A à Z +# Commande par défaut : lance tout le processus de A à Z all: setup cluster build import deploy check -# 🛠️ 1. Installation des dépendances (Packer, Ansible, Libs) +# 1. Installation des dépendances (Packer, Ansible, Libs) setup: @echo "--- [1/6] Installation des prérequis ---" @# Correction préventive pour éviter l'erreur de dépôt yarn fréquente dans Codespaces From 2d52157c062a9afb3b0f8f97c6c1b49eca291585 Mon Sep 17 00:00:00 2001 From: AmirDhe <104517422+AmirDhe@users.noreply.github.com> Date: Fri, 6 Feb 2026 12:11:22 +0100 Subject: [PATCH 6/8] Remove checkmarks from echo statements in Makefile --- Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index b11f713..5c3dcbb 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ setup: pip install --upgrade pip pip install ansible kubernetes requests ansible-galaxy collection install kubernetes.core - @echo "✅ Environnement prêt." + @echo " Environnement prêt." # 2. Création du cluster K3d (si inexistant) cluster: @@ -26,26 +26,26 @@ cluster: which k3d > /dev/null || curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash @# Crée le cluster 'lab' seulement s'il n'existe pas déjà k3d cluster list | grep -q "lab" || k3d cluster create lab --servers 1 --agents 2 - @echo "✅ Cluster K3d opérationnel." + @echo " Cluster K3d opérationnel." # 3. Construction de l'image Docker avec Packer build: @echo "--- [3/6] Build de l'image Packer ---" packer init nginx.pkr.hcl packer build nginx.pkr.hcl - @echo "✅ Image 'my-custom-nginx:v1' construite." + @echo " Image 'my-custom-nginx:v1' construite." # 4. Import de l'image dans le cluster (Étape critique pour K3d) import: @echo "--- [4/6] Import de l'image dans K3d ---" k3d image import my-custom-nginx:v1 -c lab - @echo "✅ Image importée dans le cluster." + @echo " Image importée dans le cluster." # 5. Déploiement via Ansible deploy: @echo "--- [5/6] Déploiement Ansible ---" ansible-playbook playbook.yml - @echo "✅ Playbook exécuté." + @echo " Playbook exécuté." # 6. Vérification finale check: @@ -53,7 +53,7 @@ check: @sleep 5 # Petite pause pour laisser le temps aux pods de démarrer kubectl get pods kubectl get svc - @echo "🎉 Succès ! L'application est déployée." + @echo " Succès ! L'application est déployée." # Nettoyage (Optionnel) clean: From 161f30330e315542d348c8509d10f15809433cca Mon Sep 17 00:00:00 2001 From: AmirDhe <104517422+AmirDhe@users.noreply.github.com> Date: Fri, 6 Feb 2026 12:13:10 +0100 Subject: [PATCH 7/8] Update Makefile From 30d4b691991480d8a1e9dc09169f7300910950ed Mon Sep 17 00:00:00 2001 From: AmirDhe <104517422+AmirDhe@users.noreply.github.com> Date: Fri, 6 Feb 2026 13:42:55 +0100 Subject: [PATCH 8/8] Remove emphasis from import step in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c091885..3008509 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ Si vous souhaitez exécuter les étapes une par une plutôt que d'utiliser `make * `make setup` : Installe les collections Ansible requises. * `make build` : Lance Packer pour créer l'image `my-custom-nginx:v1`. -* `make import` : Importe l'image locale dans le registre interne de K3d (**Étape cruciale**). +* `make import` : Importe l'image locale dans le registre interne de K3d . * `make deploy` : Exécute le playbook Ansible pour créer les ressources Kubernetes. * `make clean` : Nettoie l'environnement (suppression du cluster).