Académique Documents
Professionnel Documents
Culture Documents
Par
Jarraya Ahmed
Par
Jarraya Ahmed
Signature et cachet
J’autorise l’étudiant à faire le dépôt de son rapport de stage en vue d’une soutenance.
Signature
Dédicaces
Mes chers parents pour leur soutien,leur patience, leur encouragement durant mon parcours
scolaire. Aucun hommage ne pourrait être a la hauteur de l’amour dont ils ne cessent de me
combler. Que dieu leur procure bonne santé et longue vie.
Madame Essaies Meriam, Madame Ben Rejeb Sonia pour m’avoir encadré et fait de
leurs mieux afin de m’aider.
Jarraya Ahmed
ii
Table des matières
Introduction générale 1
2 Etat de l’art 5
2.1 Intégration continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Livraison continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Déploiment continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Elements clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.1 Conteneur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.2 Pod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.3 Playbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5 Etude comparative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5.1 Livraison continue VS Déploiment continue . . . . . . . . . . . . . . . . . . . 7
2.5.2 Outils d’intégration continue Jenkins vs Circle CI vs Travis CI . . . . . . . . 8
2.5.3 Virtualisation : Machine virtuelle vs Docker . . . . . . . . . . . . . . . . . . . 9
2.5.4 Outil d’autmaisation de déploiment . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5.5 Plateforme d’orchestration de conteneurs : Kubernetes VS Docker Swarm . . 10
2.6 Synthèse et choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
iii
3.2.2 Spécification des besoins non fonctionnels . . . . . . . . . . . . . . . . . . . . 13
3.3 Représentation des besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.1 Diagrammes de cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3.2 Diagrammes de séquence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Réalisation 16
4.1 Architecture de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Environement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.1 besoins en machines virtuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3 Mise en place d’infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3.1 Mise en place du Cluster k8s . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3.2 Mise en place d’un serveur d’intégration Jenkins . . . . . . . . . . . . . . . . 18
4.3.3 Mise en place d’Ansible pour l’automatisation du déploiment . . . . . . . . . 18
4.4 Mise en place du Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.4.1 création d’un Dockerfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.4.2 création des fichier de configuration de kubernetes . . . . . . . . . . . . . . . 19
4.4.3 configuration des playbooks Ansible . . . . . . . . . . . . . . . . . . . . . . . 19
4.4.4 création des credentials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4.5 création du script de la pipeline . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5 Planning réel du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Conclusion générale 21
Bibliographie 22
Annexes 23
Annexe 1. Exemple d’annexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Annexe 2. Entreprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
iv
Table des figures
v
Liste des tableaux
vi
Liste des abréviations
vii
Introduction générale
Habituellement la mise en production d’une application est l’étape ultime d’un processus bien
élaboré faisant intervenir, assez souvent, des équipes différentes, à savoir l’équipe de développement
et celle d’operations. Ainsi, le développement, le test et la mise en production sont assez souvent
considères comme trois étapes distinctes.
Faire intervenir autant d’équipes peut mener à des conflits tant le but de chaque équipe
est différent de l’autre. Quand les développeurs souhaitent innover et faire évoluer les applications
en ajoutant de nouveaux fonctionnalités, l’équipe d’opérations cherche, avant tout, à garantir la
stabilité du système informatique. D’ailleurs, chacun suit ses processus, et travaille avec ses propres
outils qui d’une maniére isolée aux autres. En conséquence, les relations entre ces équipes peuvent
être conflictuelles, ces conflits génèrent des retards de livraison par suite des coûts supplémentaires
pour l’entreprise qui n’ont pas été prévu au départ, avec un impact sur le client dont la satisfaction
est au centre des préoccupations de l’entreprise.
Mettre en place une approche permettant l’unification de processus de dévelepomment et
celle de production devient donc une tâche évidente afin d’éviter les problèmes précédemment cités.
De ce fait, la notion de DevOps est née. Il s’agit d’une approche qui se base sur la communication
et la collaboration entre les équipes chargées du développement et des opérations comme son nom
l’indique, sur un objectif commun c’est de garantir une livraison rapide et efficace avec un minimum
de retard possible afin d’augmenter la productivité et d’optimiser la satisfaction client .
1
Chapitre 1
Plan
1 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
6 Choix méthodologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Chapitre 1. Contexte général du projet
Introduction
Text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text,
text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text,
text, text...
La figure 4.4 présente le logo de la tunisie télécom. (Il est déconseiller de mettre le logo de la
société dans le rapport, il est déjà présent dans la page de garde).
1.3 Problématique
Le tableau 1.1 présente un exemple d’un tableau qui peut être divisé automatiquement dans
les pages.
0 0
1 1
2 2
3
Chapitre 1. Contexte général du projet
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
Conclusion
4
Chapitre 2
Etat de l’art
Plan
1 Intégration continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Livraison continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Déploiment continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Elements clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5 Etude comparative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6 Synthèse et choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Chapitre 2. Etat de l’art
Introduction
Dans ce chapitre, nous commençons par définir les notion d’intégration,livraison et déploiment
continue continu, ensuite, nous exposons quelques éléments clés avant d’entammer une étude comparative.
Enfin, nous faisons la synthèse de nos choix technologiques
L’intégration continue peut se définir comme etant un ensemble de pratiques en génie logiciel
qui consistent à intégrer les changements apportés au code informatique d’un projet logiciel de
façon continuelle, afin de détecter et de corriger immédiatement les éventuelles erreurs. La phase
d’integration contient generalement :
- une phase de construction dans laquelle le code est compilé dans un exécutable ou package.
- Une phase de test ou une suite de tests automatisés sont executés
- Une phase d’archivage ou le code est versionné et stocké afin qu’il puisse être distribué
La livraison continue est une pratique DevOps consistant à développer, à tester et à délivrer
des améliorations au code d’un logiciel ou aux environnements utilisateurs à l’aide d’outils automatisés.
Les équipes de développement produisent et testent le code par cycles courts. De cette façon, le code
est toujours dans un état déployable. Ainsi, même si la version en cours de développement d’un
logiciel doit être déployée soudainement, ce n’est pas un problème avec cette approche. L’objectif
est également de raccourcir la « feedback loop » pour améliorer la qualité du logiciel. Le code
est régulièrement délivré à l’environnement de test ce qui permet de rendre les causes et les effets
observables. Toutes les fonctionnalités du code peuvent être testées, ce qui permet de réduire les
problèmes de performances inattendus une fois en production.
6
Chapitre 2. Etat de l’art
en production. On ne doit y avoir recours que lorsque les équipes de développement et informatique
respectent scrupuleusement les pratiques de développement dévolues à une mise en production et
des procédures de test rigoureuses. Il convient aussi de prévoir un suivi sophistiqué en temps réel en
production afin de détecter au plus tôt les problèmes éventuels que poseraient les nouvelles versions.
2.4.1 Conteneur
2.4.2 Pod
Un Pod est l’objet Kubernetes qui représente un groupe d’un ou plusieurs conteneurs. Les
pods sont l’unité fondamentale de tous les objets Kubernetes supérieurs. Il peut être créé à l’aide de
la commande kubectl et un fichier YAML / JSON representant ces caractéristiques notamment son
nom et l’image a utiliser .
2.4.3 Playbook
Un Playbook est un fichier YAML dans lesquels sont mentionnés toutes les tâches qu’Ansible
doit exécuter : de la configuration de l’environnement informatique de production jusqu’à l’orchestration
de toutes les étapes de déploiement d’une application ou d’une mise à jour sur celui-ci.
La livraison et le déploiement continus font ensemble partie de ce que l’on appelle le développement
logiciel continu, et sont souvent associés aux méthodologies Agile et DevOps. La livraison continue et
le déploiement continu sont directement dérivés de l’intégration continue. Le déploiement continu se
distingue de la livraison continue, bien que la confusion règne entre ces deux concepts, d’autant plus
que ces deux termes partagent le même acronyme en anglais (CD). On parle de livraison continue
7
Chapitre 2. Etat de l’art
lorsque les développeurs livrent souvent et de manière régulière du nouveau code à tester aux équipes
de l’assurance qualité et de l’exploitation. Cette démarche suppose généralement un environnement
de test semblable à l’environnement de production et implique souvent un laps de temps entre la
publication et le moment où une version est testée, où les modifications sont manuellement acceptées
et où le nouveau code est mis en production. À l’inverse, le déploiement continu ne nécessite aucune
évaluation ni vérification manuelles des changements de code dans l’environnement de test, puisque
les tests automatisés sont intégrés très tôt dans le processus de développement et se poursuivent tout
au long des phases du lancement. Le déploiement continu présente un avantage certain : l’absence
d’attente entre la réussite des tests d’un changement de code aux niveaux de l’application et de la
plateforme et sa mise en production.
8
Chapitre 2. Etat de l’art
Au lieu d’utiliser une machine physique ou un serveur, maintenant avec la virtualisation, nous
pouvons utiliser une seule machine et créer plusieurs VM ou machines virtuelles. Celles-ci peuvent
en utilisant une couche d’abstraction / couche de virtualisation appelée «Hypervisor» Une machine
virtuelle nous procure plusieurs avantages tel que la minimisation du cout de materiel,l’economisation
d’energie malgré cela il ya quelques limites a citer tel que la nécessité d’un système d’xploitation
(OS) pour chaque machine.Celui ci a sa propre durcharge de calcul et stockage. Une nécessité de
maintenance et mise a jour est primordiale pour chaque machine virtuelle D’où vient la notion des
conteneurs qui partagent qui sont plus flexibles et evolutifs de maniére synchrone Avec les machines
virtuelles, On exécute essentiellement une pile d’exploitation entière dans une machine virtuelle. Le
système d’exploitation hôte sert simplement de base à l’exécution des machines virtuelles. Tout ce
qui se trouve à l’intérieur des machines virtuelles est configuré individuellement pour les applications
qu’on y exécute. Les conteneurs, quant à eux, partagent le système d’exploitation et le noyau
sous-jacents. Cela signifie qu’un seul environnement peut alimenter plusieurs conteneurs plus efficacement.
Considérez les conteneurs comme une méthode de virtualisation au niveau du processus (ou de
l’application).
9
Chapitre 2. Etat de l’art
Kubernetes et Docker Swarm sont tous deux des solutions efficaces pour la gestion et le
déploiement d’application a grande échelle. Les deux modèles divisent les applications en conteneurs,
permettant une automatisation efficace de la gestion et de la mise à l’échelle des applications. Voici
un résumé général de leurs différences
Besoin d’un CLI posséde sa propre CLI Integre la meme CLI que celle de docker
Conclusion
10
Chapitre 3
Plan
1 Identification des acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Introduction
Dans ce chapitre, nous nous intéressons aux fonctionnalités que notre système doit satisfaire.
Pour cela nous commençons ce chapitre par une identification des acteurs de notre système. Ensuite,
nous entamons nos spécification des besoins pour clôturer avec une représentation de ces besoins de
notre a l’aide des digrammes UML.
Dans cette partie, nous commençons par la spécification des besoins fondamentaux à travers la
partie besoins fonctionnels ensuite nous entamons une partie concernant les besoins non fonctionnels
à considérer pour notre système.
12
Chapitre 3. Spécification des besoins et conception
Par conjonction aux besoins fonctionnels précédemment cités, notre système doit respecter
un nombre de critères donnant une meilleure qualité de la solution obtenue. Parmi ces critères nous
citons
— Performance : le temps d’exécution des différentes étapes de la pipeline doit être minimal.
— Extensibilité : le système doit pouvoir supporter l’évolution et l’extensibilité de ses composants,nous
pouvons ainsi ajouter autant un nœud à notre Cluster Kubernetes ou bien un serveur tel que Tomcat
pour le dépôt des artefacts.
13
Chapitre 3. Spécification des besoins et conception
Au niveau de cette partie nous nous intéressons a la traduction des besoins précédemment
dégagés sous forme de diagrammes de cas d’utilisation.
Le diagramme de cas d’utilisation général, nous permet d’exposer de façon semi-formelle les
principales fonctionnalités auxquels le système doit répondre.En effet nous avons identifié différents
sous système pour le pipeline, à savoir :
- intégration continue
- Déploiement continue
- Pré-configuration
- Configuration du pipeline
Figure 3.1: Figure illustrant le diagramme de cas d’utilisation générale de notre système
14
Chapitre 3. Spécification des besoins et conception
Conclusion
15
Chapitre 4
Réalisation
Plan
1 Architecture de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 Environement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Introduction
Après avoir traité la partie conceptuelle, nous entamons la partie réalisation de notre projet
Cette partie sera compose de 3 parties Mise en place de l’infrastructure , préparation des fichirs
nécessaires utilisés mbaad fel pipeline, enfin mise en place de la pipeline où nous présentons l’environnement
matériel de notre travail différentes technologies utilisées pour la mise en place de notre système.
Pour la mise en place de notre solution nous avons utilisé Vmware ESXI comme etant
Pour la mise en place de notre solution nous avons utilisé Vmware ESXI comme etant
17
Chapitre 4. Réalisation
Pour la mise en place du cluster kubernets, nous avons opté a la creation d’un multi noeuds
cluster avec un noeud maître(Master) et deux noedus de travail (Workers)
- Le noeud maitre : C’est le noeud qui contrôle et gère un ensemble de nœuds de travail
(runtime de charges de travail) pour clea il est composé de plusieurs composants :
- Kube-APIserver : C’est le point d’entrée au cluster. Toutes les communications externes
avec le cluster se font via le serveur API.
- Kube-Controller-Manager : Il exécute un ensemble de contrôleurs pour le cluster en cours
d’exécution. Le contrôleur-gestionnaire met en œuvre la gouvernance à travers le cluster.
-ETCD : C’est la base de données d’état du cluster
-KubeScheduler :C’est lui qui planifie les activités sur les nœuds de travail en fonction des
événements survenant sur etcd. Il contient également le plan de ressources des nœuds pour déterminer
l’action appropriée pour l’événement déclenché. Par exemple, le planificateur déterminerait quel
nœud de travail hébergera un pod nouvellement planifié.
Il s’agit de la recette pour la construction d’une image Docker. Pour notre cas notre image
sera basé sur un serveur Tomcat dans lequel on va copier les fichiers WAR de notre application.
18
Chapitre 4. Réalisation
Ils s’agissent des fichiers de configuration écrites avec le langage YAML utilisés pour le
deploiments des differentes objets kubernetes tel que les objets de type service aussi bien de type
pod et deployment.
Ils s’agissant des fichiers écrites avec la langage YAML,ils seront utilisés pour exécuter les
fichiers de configuration de Kubernetes par suite le deploiment de nos objets dans notre environnement
cible qui est la machine master de notre cluster Kubernetes
19
Chapitre 4. Réalisation
Figure 4.4: Exemple d’une playbook Ansible utilisée pour exécuter l’objet deployment
Conclusion
20
Conclusion générale
La taille de la conclusion doit être réduite, une page de texte tout au plus. Il est important
de souligner que la conclusion ne comporte pas de nouveaux résultats ni de nouvelles interprétations.
• un bilan professionnel qui indique clairement les objectifs annoncés dans l’introduction et en
particulier ceux qui n’ont pu être atteints. Il présente et synthétise les conclusions partielles ;
• un bilan personnel qui décrit les principales leçons que vous tirez de cette expérience sur le
plan humain ;
21
Bibliographie
[1] M. Shell. (Jan. 2007). « IEEEtran Homepage. » [Accès le 5-Février-2016], adresse : http :
//www.michaelshell.org/tex/ieeetran/.
22
Annexes
0 0
1 1
2 2
3 3
4 4
23
Annexes
Annexe 2. Entreprise
24
PÌl
Rw§ ...An¡ Tyr` TlA Plm Rw§ ...An¡ Tyr` TlA Plm Rw§ ...An¡ Tyr` TlA Plm Rw§
Rw§ ...rWF rK` ¤d ¨ wk§ ºAr ...An¡ Tyr` TlA Plm Rw§ ...An¡ Tyr` TlA Plm
ºAr ...An¡ Tyr` TlA Plm Rw§ ...rWF rK` ¤d ¨ wk§ ºAr ...An¡ Tyr` TlA Plm
Rw§ ...rWF rK` ¤d ¨ wk§ ºAr ...An¡ Tyr` TlA Plm Rw§ ...rWF rK` ¤d ¨ wk§
ºAr ...An¡ Tyr` TlA Plm Rw§ ...rWF rK` ¤d ¨ wk§ ºAr ...An¡ Tyr` TlA Plm
nkm§ ...rWF rK` ¤d ¨ wk§ ºAr ...An¡ Tyr` TlA Plm Rw§ ...rWF rK` ¤d ¨ wk§
...An¡ Tyr` TlA Plm Rw§ Exemple ici A Plm XF¤ ¨ Tyny¯ ¤r Aml tk
Aml Hm E¤A d ºAr : yAf Aml
Résumé
Mettez le resumé en français ici... Mettez le resumé en français ici... Mettez le resumé en français
ici... Mettez le resumé en français ici... Merci de ne pas dépasser les dix lignes. Mettez le resumé
en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de
ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix
lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé
en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de
ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix
lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes.
Abstract
Put the English abstract here, put the English abstract here, put the English abstract here, put
the English abstract here, put the English abstract here, put the English abstract here... Please
don’t exceed ten lines, Please don’t exceed ten lines, Please don’t exceed ten lines, Please don’t
exceed ten lines. Put the English abstract here, please don’t exceed ten lines. Put the English
abstract here, please don’t exceed ten lines. Put the English abstract here, please don’t exceed
ten lines. Put the English abstract here, please don’t exceed ten lines. Put the English abstract
here, please don’t exceed ten lines. Put the English abstract here, please don’t exceed ten lines.
Put the English abstract here, please don’t exceed ten lines. Put the English abstract here,
please don’t exceed ten lines.
contact@company.com : ¨¤rtk¯ d§rb 71 222 222 : HAf 71 111 111 : Ah Hw - ryb AfR - C® ry h
Rue du Lac Malaren, Les Berges du Lac 1053 Tunis Tél : 71 111 111 Fax : 71 222 222 Email : contact@company.com
isi@isim.rnu.tn : ¨¤rtk¯ d§rb 71 706 698 : HAf 71 706 164 : Ah TA§C 2080 ¨¤CAb A§r w h 2
2, Abou Raihane Bayrouni 2080 l’Ariana Tél : 71 706 164 Fax : 71 706 698 Email : isi@isim.rnu.tn