TP DevOps
Ce TP va te guider à travers la création d'un pipeline CI/CD simple mais complet, utilisant
Git, Docker, Jenkins, et Kubernetes. Vous allez configurer un dépôt Git, créer une image
Docker, configurer Jenkins pour l'intégration continue, et déployer l'application sur un cluster
Kubernetes.
Pré-requis
● Connaissances de base en ligne de commande
● Notions de base en programmation (Python ou [Link])
● Git installé
● Docker installé
● Jenkins installé
● Cluster Kubernetes (minikube ou autre) configuré
Étapes du TP
1. Configuration du Dépôt Git
1. Créer un Nouveau Dépôt Git :
○ Initialisez un dépôt Git.
○ Ajoutez un fichier de code simple (par exemple, une application web en
Python ou [Link]).
○ Ajoutez un fichier Dockerfile pour containeriser l'application.
git init my-app
cd my-app
echo "# MyApp" >> [Link]
git add [Link]
git commit -m "Initial commit"
2. Ajouter un Fichier de Code :
○ Exemple pour une application [Link] :
// [Link]
const http = require('http');
const hostname = '[Link]';
const port = 3000;
const server = [Link]((req, res) => {
[Link] = 200;
[Link]('Content-Type', 'text/plain');
[Link]('Hello World\n');
});
[Link](port, hostname, () => {
[Link](`Server running at [Link]
});
3. Ajouter un Dockerfile :
# Dockerfile
FROM node:14
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
package*.json ./
RUN npm install
# Bundle app source
. .
EXPOSE 3000
CMD [ "node", "[Link]" ]
4. Commiter le Code :
git add .
git commit -m "Add application and Dockerfile"
git remote add origin <your-remote-repository-url>
git push -u origin master
2. Création de l'Image Docker
1. Construire et Tester l'Image Docker :
docker build -t my-app .
docker run -p 3000:3000 my-app
2. Pousser l'Image vers un Registry Docker (Docker Hub) :
docker tag my-app <your-dockerhub-username>/my-app
docker push <your-dockerhub-username>/my-app
3. Configuration de Jenkins pour CI
1. Installer Jenkins (si ce n'est pas déjà fait) :
○ Suivez les instructions sur le site officiel de Jenkins.
2. Configurer Jenkins :
○ Installez les plugins nécessaires : Git, Docker, Kubernetes.
○ Créez un nouveau job de pipeline.
3. Configurer le Pipeline Jenkins :
○ Exemple de Jenkinsfile :
pipeline {
agent any
stages {
stage('Clone Repository') {
steps {
git '[Link]
}
}
stage('Build Docker Image') {
steps {
script {
[Link]('my-app')
}
}
}
stage('Push Docker Image') {
steps {
script {
[Link]('[Link]
'docker-hub-credentials') {
[Link]('my-app').push('latest')
}
}
}
}
stage('Deploy to Kubernetes') {
steps {
script {
kubernetesDeploy(
kubeconfigId: 'kubeconfig',
configs: '[Link]',
enableConfigSubstitution: true
)
}
}
}
}
}
4. Déploiement sur Kubernetes
1. Créer un Fichier de Déploiement Kubernetes :
# [Link]
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: <your-dockerhub-username>/my-app:latest
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
type: LoadBalancer
ports:
- port: 3000
targetPort: 3000
selector:
app: my-app
2. Appliquer le Déploiement :
kubectl apply -f [Link]
5. Vérification et Tests
1. Vérifier le Déploiement :
○ Utilisez kubectl get pods pour vérifier que les pods sont en cours
d'exécution.
○ Utilisez kubectl get svc pour obtenir l'IP et le port du service.
2. Tester l'Application Déployée :
○ Accédez à l'application via l'IP et le port obtenus.
○ Assurez-vous que l'application fonctionne correctement.
Défis Supplémentaires
1. Ajouter des Tests Automatisés :
○ Ajoutez des tests unitaires à l'application et configurez Jenkins pour les
exécuter.
2. Mise en Place d'un Monitoring Basique :
○ Configurez Prometheus et Grafana pour surveiller l'application déployée.
3. Gestion des Secrets :
○ Utilisez Kubernetes Secrets pour gérer les informations sensibles comme les
mots de passe et les clés API.