0% ont trouvé ce document utile (0 vote)
344 vues6 pages

TP DevOps - Copie

Transféré par

nawfelabed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
344 vues6 pages

TP DevOps - Copie

Transféré par

nawfelabed
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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.

Vous aimerez peut-être aussi