CONSULTING SERVICE FOR
COMPREHENSIVE GUIDE TO TRANSITIONING
WAPIS DACORE DEPLOYMENT TO KUBERNETES
THE WEST AFRICAN POLICE INFORMATION SYSTEM PROGRAMME
Page
Table of contents
CONTENT.......................................................................................................................................................
1. INTRODUCTION.....................................................................................................................................
1.1. PURPOSE..................................................................................................................................................
1.2. SCOPE.....................................................................................................................................................
2. PREREQUISITES......................................................................................................................................
2.1. SYSTEM REQUIREMENTS..............................................................................................................................
2.2. USER PERMISSIONS....................................................................................................................................
2.3. NETWORK REQUIREMENTS AND PORTS..........................................................................................................
3. ENABLING SSH ON UBUNTU SERVER 22.04.5..........................................................................................
Port Protocol Description
6443 TCP Kubernetes API server
2379-2380 TCP etcd server client API
10250 TCP Kubelet API
10251 TCP kube-scheduler
10252 TCP kube-controller-manager
179 TCP/UDP BGP communication (if using Calico CNI)
Port Protocol Description
10250 TCP Kubelet API
30000-32767 TCP NodePort services
Déploiement CI/CD de Odoo avec Docker, Kubernetes et Jenkins
Rapport Technique
Rédigé par : Océane NDIOMO
Contexte : Stage
Date : 29/07/2025
Table des matières
1. Introduction
2. Préparation de l’environnement
3. Clonage du dépôt GitHub
4. Scripts utilisés
4.1 Jenkinsfile
Page
4.2 Dockerfile
4.3 Manifest Kubernetes
5. Configuration et exécution du pipeline Jenkins
6. Logs et erreurs rencontrés
7. Environnement Kubernetes
8. Conclusion
1. Introduction
Ce rapport présente l’implémentation d’un pipeline CI/CD complet pour le déploiement d’une
instance Odoo personnalisée. Le projet utilise GitHub pour la gestion du code source, Docker
pour la conteneurisation, Jenkins pour l’automatisation des builds et Kubernetes pour
l’orchestration des conteneurs.
2. Préparation de l’environnement
• Système utilisé : Windows avec Docker Desktop.
• Téléchargement et exécution de l’image Jenkins :
docker pull jenkins/jenkins:lts
docker run -d --name jenkins -p 8080:8080 -v jenkins_home:/var/jenkins_home
jenkins/jenkins:lts
3. Clonage du dépôt GitHub
Commande réalisée pour cloner le dépôt contenant tous les scripts :
git clone https://github.com/Oceane-Ndiomo/odoo-docker.git
git config --global http.sslVerify true
cd ~/odoo-docker
git pull
4. Scripts utilisés
4.1 Jenkinsfile
pipeline {
agent {
docker {
image 'docker:20.10.24-dind'
}
}
stages {
Page
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build Docker Image') {
steps {
sh 'docker build -t enaeco/monodoo:17-custom .'
}
}
stage('Push to Docker Hub') {
steps {
withCredentials([usernamePassword(credentialsId: 'docker-hub-credentials',
usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
sh 'echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin'
sh 'docker push enaeco/monodoo:17-custom'
}
}
}
stage('Deploy to Kubernetes') {
steps {
sh 'kubectl apply -f odoo-k8s.yaml'
}
}
}
}
4.2 Dockerfile
FROM odoo:17
COPY ./addons /mnt/extra-addons
USER root
RUN chown -R odoo:odoo /mnt/extra-addons
USER odoo
4.3 Manifest Kubernetes
apiVersion: apps/v1
Page
kind: Deployment
metadata:
name: odoo-deployment
spec:
replicas: 1
selector:
matchLabels:
app: odoo
template:
metadata:
labels:
app: odoo
spec:
containers:
- name: odoo
image: enaeco/monodoo:17-custom
ports:
- containerPort: 8069
---
apiVersion: v1
kind: Service
metadata:
name: odoo-service
spec:
selector:
app: odoo
ports:
- protocol: TCP
port: 80
targetPort: 8069
type: LoadBalancer
5. Configuration et exécution du pipeline Jenkins
Le pipeline Jenkins a été configuré avec l’URL du dépôt, les credentials Docker Hub et le script
Jenkinsfile. Ci-dessous, les captures illustrent l’interface de configuration et l’état du conteneur
Jenkins actif.
Page
Figure 1 : Configuration du pipeline Jenkins.
Page
Figure 2 : Paramètres du dépôt SCM.
Page
Figure 3 : Conteneur Jenkins actif dans Docker Desktop.
6. Logs et erreurs rencontrés
Lors de l’exécution, des erreurs ont bloqué certaines étapes : `fatal: not in a git directory` et
permissions `docker: not found`. Voici les journaux Jenkins détaillés.
Page
Figure 4 : Erreur Git SCM.
Page
Figure 5 : Stack trace détaillée Jenkins.
Page
Figure 6 : Historique des builds échoués.
7. Environnement Kubernetes
Le cluster Kubernetes est exécuté en local via Docker Desktop avec `kubectl` pour gérer le
déploiement. Un fichier manifest expose Odoo avec un `LoadBalancer` pour rendre le service
accessible sur le port 8069.
8. Conclusion
Ce projet a permis de configurer une chaîne CI/CD complète pour automatiser le build, le push
et le déploiement d’une application Odoo. Malgré certaines erreurs techniques à résoudre, le
pipeline intègre GitHub, Docker, Jenkins et Kubernetes pour une livraison continue maîtrisée.
Page