From b0b50a3bbfd5f3b1d86604d53a2259769a8ae04a Mon Sep 17 00:00:00 2001 From: Grizouille Date: Sat, 7 Feb 2026 08:19:04 +0000 Subject: [PATCH 1/3] Actualiser TpDevOpsProject.md --- TpDevOpsProject.md | 190 ++++++++++++++++++++++----------------------- 1 file changed, 94 insertions(+), 96 deletions(-) diff --git a/TpDevOpsProject.md b/TpDevOpsProject.md index 1a6b608..152efe8 100644 --- a/TpDevOpsProject.md +++ b/TpDevOpsProject.md @@ -1,155 +1,149 @@ -#TP DevOps Corrigé par DeepSeek +# TP DevOps -# ...et en cours de restructuration par Oualim (commentaires pour le futur pour tester une autre création à l'IA d'un tp, en tenant compte des manquements et des erreurs pour ne pas laisser l'IA les reproduire) +...et en cours de restructuration par Oualim (commentaires pour le futur pour tester une autre création à l'IA d'un tp, en tenant compte des manquements et des erreurs pour ne pas laisser l'IA les reproduire) Original pourrit: https://cloud.bonisco.fr/s/Cb2bFdLXeFEFcLm -# Commentaire de Oualim (Celui de Deepseek est juste un peu moins pourri mais c'était aussi de la merde) -# Ce TP contient encore beaucoup de fautes sur les manips et fichiers et aucun sens sur la structure car l'IA a juste pris les mots clefs de "devops" sur internet, copié des fichiers et mélangé des concepts sans aucune présentation ni introduction ou explications (ex : correctif de l'ancien tp tout en bas :-/ ; terraform sur des docker ??? ; kub en faisant un doublon d'appli potentiellement conflictuel, aucune explication ni structure d'étape pour comprendre les logiques de docker et k8') +> Commentaire de Oualim (Celui de Deepseek est juste un peu moins pourri mais c'était aussi de la merde) +> Ce TP contient encore beaucoup de fautes sur les manips et fichiers et aucun sens sur la structure car l'IA a juste pris les mots clefs de "devops" sur internet, copié des fichiers et mélangé des concepts sans aucune présentation ni introduction ou explications (ex : correctif de l'ancien tp tout en bas :-/ ; terraform sur des docker ??? ; kub en faisant un doublon d'appli potentiellement conflictuel, aucune explication ni structure d'étape pour comprendre les logiques de docker et k8') + #📚 RÉCAPITULATIF DES CORRECTIONS APPORTÉES -#✅ Corrections majeures : -Python : Ajout de Response dans les imports FastAPI -Docker Compose : Chemins corrigés, versions spécifiées - -Kubernetes : Changé LoadBalancer → NodePort pour Windows - -Image Docker : Tag :local au lieu de :latest pour K8s - -Terraform : Suppression du provider Docker problématique - -Scripts : Ajout de gestion d'erreurs robuste - -Tests : Ajout de tests unitaires Python - -Health checks : Ajout dans Docker Compose et K8s +## ✅ Corrections majeures : +* Python : Ajout de Response dans les imports FastAPI +* Docker Compose : Chemins corrigés, versions spécifiées +* Kubernetes : Changé LoadBalancer → NodePort pour Windows +* Image Docker : Tag :local au lieu de :latest pour K8s +* Terraform : Suppression du provider Docker problématique +* Scripts : Ajout de gestion d'erreurs robuste +* Tests : Ajout de tests unitaires Python +* Health checks : Ajout dans Docker Compose et K8s -#🎯 Améliorations : -Structure de projet logique et organisée - -Scripts PowerShell avec paramètres et gestion d'erreurs - -Configuration monitoring fonctionnelle - -Documentation claire étape par étape - -Solutions de dépannage incluses - -Versionning spécifique des images Docker +## 🎯 Améliorations : +* Structure de projet logique et organisée +* Scripts PowerShell avec paramètres et gestion d'erreurs +* Configuration monitoring fonctionnelle +* Documentation claire étape par étape +* Solutions de dépannage incluses +* Versionning spécifique des images Docker -# Commentaire de Oualim -# Ce TP permet pour l'instant, de réaliser le paysage de docker pour un débutant, de comprendre une organisation de dossiers et fichiers, de créer qq containeurs docker : -# - http://localhost:8000 (App) -# - http://localhost:8000/docs (Documentation API) -# - http://localhost:9090 (Prometheus) -# - http://localhost:3000 (Grafana - admin/admin123) -# - http://localhost:9000 (Portainer) +> Commentaire de Oualim +> Ce TP permet pour l'instant, de réaliser le paysage de docker pour un débutant, de comprendre une organisation de dossiers et fichiers, de créer qq containeurs docker : +> - http://localhost:8000 (App) +> - http://localhost:8000/docs (Documentation API) +> - http://localhost:9090 (Prometheus) +> - http://localhost:3000 (Grafana - admin/admin123) +> - http://localhost:9000 (Portainer) +# 🚀 TP DevOps Windows - Stack Complète Locale (Corrigé & Optimisé) +## 📋 PRÉ-REQUIS WINDOWS - Installation Pas à Pas +### 🔧 1. Préparation du système (PowerShell Administrateur) +Ouvrir PowerShell en tant qu'ADMINISTRATEUR (clic droit → Exécuter en tant qu'administrateur) -#🚀 TP DevOps Windows - Stack Complète Locale (Corrigé & Optimisé) -#📋 PRÉ-REQUIS WINDOWS - Installation Pas à Pas -#🔧 1. Préparation du système (PowerShell Administrateur) - -# Ouvrir PowerShell en tant qu'ADMINISTRATEUR (clic droit → Exécuter en tant qu'administrateur) - -# 1. Activer les fonctionnalités Windows nécessaires +1. Activer les fonctionnalités Windows nécessaires +``` Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform - -# 2. Installer WSL2 et Ubuntu +``` +2. Installer WSL2 et Ubuntu +``` wsl --install -d Ubuntu-22.04 - -# 3. Définir WSL2 comme version par défaut +``` +3. Définir WSL2 comme version par défaut +``` wsl --set-default-version 2 - -# 4. Redémarrer l'ordinateur (OBLIGATOIRE) +``` +4. Redémarrer l'ordinateur (OBLIGATOIRE) +``` Restart-Computer -#📥 2. Installation des outils (après redémarrage) +``` +### 📥 2. Installation des outils (après redémarrage) -# 1. Installer Chocolatey (package manager Windows) +1. Installer Chocolatey (package manager Windows) +``` Set-ExecutionPolicy Bypass -Scope Process -Force [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) - -# 2. Installer tous les outils +``` +2. Installer tous les outils +``` choco install -y git docker-desktop vscode kubernetes-cli minikube terraform helm postman -#🐧 3. Configuration WSL2 et Ubuntu - +``` +3. Configuration WSL2 et Ubuntu +``` # Vérifier l'installation WSL wsl --list --verbose # Doit afficher : Ubuntu-22.04 Running 2 +``` -# Entrer dans WSL pour configurer +Entrer dans WSL pour configurer +``` wsl - -# Dans le terminal Ubuntu WSL : +``` +Dans le terminal Ubuntu WSL : +``` sudo apt update sudo apt upgrade -y sudo apt install -y python3 python3-pip python3-venv nodejs npm curl wget - -# Créer un alias pratique +``` +Créer un alias pratique +``` echo "alias k=kubectl" >> ~/.bashrc source ~/.bashrc exit # Retour à PowerShell -#🐋 ÉTAPE 1 : CONFIGURATION DOCKER DESKTOP -#⚙️ Configuration manuelle obligatoire : +``` + +## 🐋 ÉTAPE 1 : CONFIGURATION DOCKER DESKTOP +### ⚙️ Configuration manuelle obligatoire : Ouvrir Docker Desktop après installation Settings → General : - -✅ Use WSL 2 based engine - -✅ Expose daemon on tcp://localhost:2375 without TLS - +* ✅ Use WSL 2 based engine +* ✅ Expose daemon on tcp://localhost:2375 without TLS Settings → Resources → WSL Integration : - -✅ Enable integration with my default WSL distro - -✅ Ubuntu-22.04 - +* ✅ Enable integration with my default WSL distro +* ✅ Ubuntu-22.04 Settings → Kubernetes : - -✅ Enable Kubernetes - -✅ Deploy Docker Stacks to Kubernetes by default +* ✅ Enable Kubernetes +* ✅ Deploy Docker Stacks to Kubernetes by default Settings → Advanced : - -CPUs : 4 (ou 50% de vos CPUs) - -Memory : 4.0 GB (ou 50% de votre RAM) - -Swap : 1.0 GB - +* CPUs : 4 (ou 50% de vos CPUs) +* Memory : 4.0 GB (ou 50% de votre RAM) +* Swap : 1.0 GB Appliquer et redémarrer Docker Desktop -#✅ Vérification Docker/WSL2 : - +### ✅ Vérification Docker/WSL2 : +``` # Dans PowerShell docker --version # Doit afficher : Docker version 24.0.x - docker run hello-world # Doit afficher "Hello from Docker!" - -# Vérifier l'intégration WSL2 +``` +Vérifier l'intégration WSL2 +``` wsl -d Ubuntu-22.04 -e docker version -# Doit fonctionner sans erreur -#📁 ÉTAPE 2 : STRUCTURE DU PROJET OPTIMISÉE -#🗂️ Création de la structure : +``` +Doit fonctionner sans erreur +*📁 ÉTAPE 2 : STRUCTURE DU PROJET OPTIMISÉE +*🗂️ Création de la structure : -# Créer le dossier principal +Créer le dossier principal +``` mkdir C:\DevOpsProject cd C:\DevOpsProject +``` -# Structure ORGANISÉE et LOGIQUE +Structure ORGANISÉE et LOGIQUE +``` New-Item -ItemType Directory -Path @( "src\app", "src\app\tests", @@ -163,8 +157,10 @@ New-Item -ItemType Directory -Path @( "docs", "config" ) +``` -# Structure finale : +Structure finale : +``` C:\DevOpsProject\ ├── src\ # Code source │ ├── app\ # Application Python @@ -177,6 +173,8 @@ C:\DevOpsProject\ ├── .github\workflows\ # CI/CD ├── config\ # Fichiers de config └── docs\ # Documentation +``` + #🐍 ÉTAPE 3 : APPLICATION PYTHON CORRIGÉE #3.1 Fichier : src\app\requirements.txt From b6c4e6f70f106fc8c4fe74234b0d89c679538d5b Mon Sep 17 00:00:00 2001 From: Grizouille Date: Sat, 7 Feb 2026 08:19:54 +0000 Subject: [PATCH 2/3] Actualiser readme.md --- TpDevOpsProject.md => readme.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename TpDevOpsProject.md => readme.md (100%) diff --git a/TpDevOpsProject.md b/readme.md similarity index 100% rename from TpDevOpsProject.md rename to readme.md From 5bc95a7079aa2d8cf32f34f29132b5a7e310bb0c Mon Sep 17 00:00:00 2001 From: Grizouille Date: Sat, 7 Feb 2026 08:28:25 +0000 Subject: [PATCH 3/3] Actualiser readme.md --- readme.md | 87 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 30 deletions(-) diff --git a/readme.md b/readme.md index 152efe8..5d9efc4 100644 --- a/readme.md +++ b/readme.md @@ -175,9 +175,9 @@ C:\DevOpsProject\ └── docs\ # Documentation ``` -#🐍 ÉTAPE 3 : APPLICATION PYTHON CORRIGÉE -#3.1 Fichier : src\app\requirements.txt - +## 🐍 ÉTAPE 3 : APPLICATION PYTHON CORRIGÉE +### 3.1 Fichier : `src\app\requirements.txt` +``` fastapi==0.104.1 uvicorn[standard]==0.24.0 pydantic==2.5.0 @@ -185,8 +185,9 @@ prometheus-client==0.19.0 python-dotenv==1.0.0 pytest==7.4.3 httpx==0.25.1 -#3.2 Fichier : src\app\main.py (CORRIGÉ) - +``` +#3.2 Fichier : `src\app\main.py `(CORRIGÉ) +``` from fastapi import FastAPI, Request, Response, HTTPException from prometheus_client import Counter, Histogram, generate_latest, CONTENT_TYPE_LATEST import time @@ -315,8 +316,10 @@ if __name__ == "__main__": log_level="info", reload=True # Auto-reload en développement ) -#3.3 Fichier : src\app\tests\test_main.py (NOUVEAU) +``` +### 3.3 Fichier : `src\app\tests\test_main.py` (NOUVEAU) +``` import pytest from fastapi.testclient import TestClient from main import app @@ -361,9 +364,12 @@ def test_env_endpoint(): assert response.status_code == 200 data = response.json() assert "ENV" in data -#3.4 Fichier : src\app\Dockerfile (OPTIMISÉ) +``` -# Étape 1 : Build +### 3.4 Fichier : `src\app\Dockerfile` (OPTIMISÉ) + +Étape 1 : Build +``` FROM python:3.11-slim AS builder WORKDIR /app @@ -397,9 +403,11 @@ USER devopsuser # Commande de démarrage CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--no-access-log"] -#🐳 ÉTAPE 4 : DOCKER COMPOSE CORRIGÉ -#4.1 Fichier : docker\docker-compose.yml (RECOMMENCÉ) +``` +## 🐳 ÉTAPE 4 : DOCKER COMPOSE CORRIGÉ +### 4.1 Fichier : `docker\docker-compose.yml` (RECOMMENCÉ) +``` version: '3.8' services: @@ -562,45 +570,58 @@ scrape_configs: # alertmanagers: # - static_configs: # - targets: [] -#4.3 Exécution Docker Compose : +``` -# Se placer dans le dossier docker +## 4.3 Exécution Docker Compose : + +Se placer dans le dossier docker +``` cd C:\DevOpsProject\docker - -# Lancer en arrière-plan +``` +Lancer en arrière-plan +``` docker-compose up -d - -# Vérifier que tout fonctionne +``` +Vérifier que tout fonctionne +``` docker-compose ps - -# Voir les logs de l'application +``` +Voir les logs de l'application +``` docker-compose logs app - -# Tester l'application +``` +Tester l'application +``` curl http://localhost:8000 -# ou dans PowerShell +``` +ou dans PowerShell +``` Invoke-WebRequest -Uri "http://localhost:8000" -UseBasicParsing -#☸️ ÉTAPE 5 : KUBERNETES SIMPLIFIÉ POUR WINDOWS -#5.1 Activer Kubernetes dans Docker Desktop : +``` + +##☸️ ÉTAPE 5 : KUBERNETES SIMPLIFIÉ POUR WINDOWS +### 5.1 Activer Kubernetes dans Docker Desktop : 1. Docker Desktop → Settings (roue crantée) 2. Onglet Kubernetes 3. ✅ Enable Kubernetes 4. ✅ Show system containers (optional) 5. Apply & Restart (patienter 2-3 minutes) -#5.2 Vérification : -# Vérifier que Kubernetes fonctionne +### 5.2 Vérification : + +Vérifier que Kubernetes fonctionne +``` kubectl cluster-info # Doit afficher : Kubernetes control plane is running at https://... - kubectl get nodes # Doit afficher : docker-desktop Ready - kubectl get pods --all-namespaces # Doit montrer les pods système -#5.3 Fichier : kubernetes\manifests\namespace.yaml +``` +#### 5.3 Fichier : kubernetes\manifests\namespace.yaml +``` apiVersion: v1 kind: Namespace metadata: @@ -608,8 +629,10 @@ metadata: labels: name: devops-demo environment: development -#5.4 Fichier : kubernetes\manifests\configmap.yaml (NOUVEAU) +``` +### 5.4 Fichier : kubernetes\manifests\configmap.yaml (NOUVEAU) +``` apiVersion: v1 kind: ConfigMap metadata: @@ -620,8 +643,10 @@ data: APP_NAME: "devops-windows-app" LOG_LEVEL: "INFO" PYTHONUNBUFFERED: "1" -#5.5 Fichier : kubernetes\manifests\deployment.yaml (SIMPLIFIÉ) +``` +### 5.5 Fichier : kubernetes\manifests\deployment.yaml (SIMPLIFIÉ) +``` apiVersion: apps/v1 kind: Deployment metadata: @@ -693,6 +718,8 @@ spec: protocol: TCP name: http type: NodePort # CORRIGÉ : NodePort au lieu de LoadBalancer pour Windows +``` + #5.6 Déploiement Kubernetes : # 1. Build l'image Docker avec un tag spécifique