aa
This commit is contained in:
@@ -54,7 +54,12 @@ Versionning spécifique des images Docker
|
||||
|
||||
|
||||
#🚀 TP DevOps Windows - Stack Complète Locale (Corrigé & Optimisé)
|
||||
|
||||
|
||||
#📋 PRÉ-REQUIS WINDOWS - Installation Pas à Pas
|
||||
|
||||
Avant tout, bien penser à ACTIVER la fonction de VIRTUALISATION dans le BIOS du systeme de votre pc
|
||||
|
||||
#🔧 1. Préparation du système (PowerShell Administrateur)
|
||||
|
||||
# Ouvrir PowerShell en tant qu'ADMINISTRATEUR (clic droit → Exécuter en tant qu'administrateur)
|
||||
@@ -71,6 +76,7 @@ wsl --set-default-version 2
|
||||
|
||||
# 4. Redémarrer l'ordinateur (OBLIGATOIRE)
|
||||
Restart-Computer
|
||||
|
||||
#📥 2. Installation des outils (après redémarrage)
|
||||
|
||||
# 1. Installer Chocolatey (package manager Windows)
|
||||
@@ -80,6 +86,7 @@ iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocola
|
||||
|
||||
# 2. Installer tous les outils
|
||||
choco install -y git docker-desktop vscode kubernetes-cli minikube terraform helm postman
|
||||
|
||||
#🐧 3. Configuration WSL2 et Ubuntu
|
||||
|
||||
# Vérifier l'installation WSL
|
||||
@@ -98,7 +105,10 @@ sudo apt install -y python3 python3-pip python3-venv nodejs npm curl wget
|
||||
echo "alias k=kubectl" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
exit # Retour à PowerShell
|
||||
|
||||
|
||||
#🐋 ÉTAPE 1 : CONFIGURATION DOCKER DESKTOP
|
||||
|
||||
#⚙️ Configuration manuelle obligatoire :
|
||||
Ouvrir Docker Desktop après installation
|
||||
|
||||
@@ -142,7 +152,10 @@ docker run hello-world
|
||||
# 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 :
|
||||
|
||||
# Créer le dossier principal
|
||||
@@ -177,9 +190,14 @@ 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
|
||||
|
||||
# commentaire de Oualim : Ce fichier installera les dépendances dans le conteneur, pas sur votre machine
|
||||
|
||||
fastapi==0.104.1
|
||||
uvicorn[standard]==0.24.0
|
||||
pydantic==2.5.0
|
||||
@@ -187,6 +205,7 @@ 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É)
|
||||
|
||||
from fastapi import FastAPI, Request, Response, HTTPException
|
||||
@@ -399,7 +418,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É)
|
||||
|
||||
version: '3.8'
|
||||
@@ -521,6 +544,7 @@ volumes:
|
||||
name: portainer-data
|
||||
app-logs:
|
||||
name: app-logs
|
||||
|
||||
#4.2 Fichier : docker\prometheus.yml (À CRÉER)
|
||||
|
||||
global:
|
||||
@@ -564,6 +588,7 @@ scrape_configs:
|
||||
# alertmanagers:
|
||||
# - static_configs:
|
||||
# - targets: []
|
||||
|
||||
#4.3 Exécution Docker Compose :
|
||||
|
||||
# Se placer dans le dossier docker
|
||||
@@ -582,7 +607,10 @@ docker-compose logs app
|
||||
curl http://localhost:8000
|
||||
# ou dans PowerShell
|
||||
Invoke-WebRequest -Uri "http://localhost:8000" -UseBasicParsing
|
||||
|
||||
|
||||
#☸️ ÉTAPE 5 : KUBERNETES SIMPLIFIÉ POUR WINDOWS
|
||||
|
||||
#5.1 Activer Kubernetes dans Docker Desktop :
|
||||
|
||||
1. Docker Desktop → Settings (roue crantée)
|
||||
@@ -590,6 +618,7 @@ Invoke-WebRequest -Uri "http://localhost:8000" -UseBasicParsing
|
||||
3. ✅ Enable Kubernetes
|
||||
4. ✅ Show system containers (optional)
|
||||
5. Apply & Restart (patienter 2-3 minutes)
|
||||
|
||||
#5.2 Vérification :
|
||||
|
||||
# Vérifier que Kubernetes fonctionne
|
||||
@@ -601,6 +630,7 @@ kubectl get nodes
|
||||
|
||||
kubectl get pods --all-namespaces
|
||||
# Doit montrer les pods système
|
||||
|
||||
#5.3 Fichier : kubernetes\manifests\namespace.yaml
|
||||
|
||||
apiVersion: v1
|
||||
@@ -610,6 +640,7 @@ metadata:
|
||||
labels:
|
||||
name: devops-demo
|
||||
environment: development
|
||||
|
||||
#5.4 Fichier : kubernetes\manifests\configmap.yaml (NOUVEAU)
|
||||
|
||||
apiVersion: v1
|
||||
@@ -622,6 +653,7 @@ data:
|
||||
APP_NAME: "devops-windows-app"
|
||||
LOG_LEVEL: "INFO"
|
||||
PYTHONUNBUFFERED: "1"
|
||||
|
||||
#5.5 Fichier : kubernetes\manifests\deployment.yaml (SIMPLIFIÉ)
|
||||
|
||||
apiVersion: apps/v1
|
||||
@@ -695,6 +727,7 @@ 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
|
||||
@@ -718,7 +751,10 @@ kubectl get svc -n devops-demo devops-app-service -o jsonpath='{.spec.ports[0].n
|
||||
|
||||
# 5. Accéder à l'application
|
||||
# http://localhost:[PORT] (ex: http://localhost:30456)
|
||||
|
||||
|
||||
#🏗️ ÉTAPE 6 : TERRAFORM SIMPLIFIÉ (OPTIONNEL)
|
||||
|
||||
#⚠️ IMPORTANT : Terraform + Docker sur Windows/WSL2 est complexe.
|
||||
#Je recommande de SAUTER cette étape pour les débutants.
|
||||
Si vous voulez quand même essayer :
|
||||
@@ -838,6 +874,7 @@ output "application_url" {
|
||||
output "namespace" {
|
||||
value = kubernetes_namespace.devops.metadata[0].name
|
||||
}
|
||||
|
||||
#6.2 Utilisation Terraform :
|
||||
|
||||
cd C:\DevOpsProject\terraform
|
||||
@@ -853,7 +890,10 @@ terraform apply
|
||||
|
||||
# Pour détruire
|
||||
terraform destroy
|
||||
|
||||
|
||||
#📦 ÉTAPE 7 : HELM SIMPLE POUR WINDOWS
|
||||
|
||||
#7.1 Création d'un chart Helm simple :
|
||||
|
||||
cd C:\DevOpsProject\kubernetes\helm
|
||||
@@ -910,6 +950,7 @@ app:
|
||||
monitoring:
|
||||
enabled: true
|
||||
prometheusScrape: true
|
||||
|
||||
#7.4 Fichier : kubernetes\helm\devops-chart\templates\deployment.yaml
|
||||
|
||||
apiVersion: apps/v1
|
||||
@@ -956,6 +997,7 @@ spec:
|
||||
port: {{ .Values.app.service.targetPort }}
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
|
||||
#7.5 Installation avec Helm :
|
||||
|
||||
cd C:\DevOpsProject\kubernetes\helm
|
||||
@@ -971,7 +1013,10 @@ helm upgrade devops-release ./devops-chart -n devops-demo
|
||||
|
||||
# Désinstaller
|
||||
helm uninstall devops-release -n devops-demo
|
||||
|
||||
|
||||
#🔄 ÉTAPE 8 : GITHUB ACTIONS CORRIGÉ
|
||||
|
||||
#8.1 Fichier : .github\workflows\ci-cd.yml (PRATIQUE)
|
||||
|
||||
name: CI/CD DevOps Windows
|
||||
@@ -1070,7 +1115,10 @@ jobs:
|
||||
echo "kubectl apply -f kubernetes/manifests/"
|
||||
echo "ou"
|
||||
echo "helm upgrade --install ..."
|
||||
|
||||
|
||||
#📊 ÉTAPE 9 : MONITORING FONCTIONNEL
|
||||
|
||||
#9.1 Dashboard Grafana prêt à l'emploi :
|
||||
|
||||
# Créer un dossier pour les dashboards Grafana
|
||||
@@ -1102,6 +1150,7 @@ mkdir C:\DevOpsProject\docker\grafana-dashboards
|
||||
}
|
||||
}
|
||||
'@ | Out-File -FilePath "C:\DevOpsProject\docker\grafana-dashboards\dashboard.json" -Encoding UTF8
|
||||
|
||||
#9.2 Accès aux interfaces :
|
||||
|
||||
✅ Après docker-compose up -d :
|
||||
@@ -1117,7 +1166,10 @@ mkdir C:\DevOpsProject\docker\grafana-dashboards
|
||||
|
||||
1. Application K8s : http://localhost:[NODE_PORT]
|
||||
(trouvez le port avec : kubectl get svc -n devops-demo)
|
||||
|
||||
|
||||
#🛠️ ÉTAPE 10 : SCRIPTS PRATIQUES
|
||||
|
||||
#10.1 Script : scripts\setup.ps1 (AMÉLIORÉ)
|
||||
|
||||
# DevOps Windows Setup Script
|
||||
@@ -1386,7 +1438,10 @@ Write-Host "✅ Toutes les ressources ont été nettoyées" -ForegroundColor Gre
|
||||
Write-Host ""
|
||||
Write-Host "Pour recommencer :" -ForegroundColor Cyan
|
||||
Write-Host " .\setup.ps1" -ForegroundColor Gray
|
||||
|
||||
|
||||
#🎯 VALIDATION FINALE
|
||||
|
||||
#Testez votre installation :
|
||||
|
||||
# 1. Lancer le setup
|
||||
@@ -1444,7 +1499,7 @@ Votre stack DevOps Windows est maintenant fonctionnelle et prête à l'emploi !
|
||||
|
||||
|
||||
# Commentaire de Oualim
|
||||
# Avant d'aller plus loin, les partie 6,7 et 8 n'étant pas encore abordée à cette étape, en lançant uniquement les commandes de la partie 4.3 on se retrouvera avec des containeurs orphelins :
|
||||
# Avant d'aller plus loin, les #6, #7 et #8 n'étant pas encore abordée à cette étape, en lançant uniquement les commandes de le #3 on se retrouvera avec des containeurs orphelins :
|
||||
|
||||
PS C:\DevOpsProject\docker> docker-compose ps
|
||||
"....Found orphan containers ([gitea logstash kibana filebeat elasticsearch devops-db])...."
|
||||
|
||||
Reference in New Issue
Block a user