PFE Master INPTIC Anis Final
PFE Master INPTIC Anis Final
PFE Master INPTIC Anis Final
”
- Moustafa
I
“ C’est avec une profonde gratitude et des mots sincères, que je
dédie ce modeste travail de fin de cycle à :
Mes chers parents ; qui ont sacrifié leur vie pour ma réussite. Que
Dieu leur prête bonheur et longue vie.
Mon binôme : Moustafa
Tous mes amis les plus sincères sur tout l’équipe master ; tous ceux
que j’aime et qui m’aiment
”
- Anis
II
Remerciements
M. Abdellah Seddik TAHAR DJEBBAR M. Abdellah BARKATI M. Souhil FEKIR Pour le temps
qu’il nous a consacré et ses conseils avisés ainsi que ses remarques pertinentes et très précieuses.
Nous adressons nos sincères remerciements à mes collegues Anis, Youcef, Dhiya, Hmida, Zaki et
Basset pour leur aide dans le projet. Nos remerciements vont enfin à toute Personne qui a contribué
de près ou de loin à l’élaboration de ce travail.
Nous tenons à remercier en premier lieu DIEU tout puissant qui nous a accordé la
volonté et le courage pour mener à bien ce projet. M. Abdellah Seddik TAHAR
DJEBBAR
M. Abdellah BARKATI
M. Souhil FEKIR
Pour le temps qu’il nous a consacré et ses conseils avisés ainsi que ses remarques
pertinentes et très précieuses.
Nous adressons nos sincères remerciements à mes collegues Anis, Youcef, Dhiya,
Hmida, Zaki et Basset pour leur aide dans le projet.
Nos remerciements vont enfin à toute Personne qui a contribué de près ou de loin à
l’élaboration de ce travail.
Anis Moustafa
III
Table des matières
Dédicaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I
Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III
Introduction générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
II Docker et Kubernetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
II.1 Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
II.1.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
II.1.2 Architecture Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
IV
Table des matières
IV Implémentation de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
IV.1 Scénario de déploiement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
IV.2 Implémentation de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
IV.2.1 Mise en place du cluster kubernetes . . . . . . . . . . . . . . . . . . . . . . 30
IV.2.2 Versions utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
IV.3 Test de solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
V Partie Manageriale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
V.1 Présentation du l’organisme d’accueille (ENSTICP) . . . . . . . . . . . . . . . . . . 41
V.2 Planification de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
V.3 Diagramme de GANTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
V.4 Impact réel du projet sur le fonctionnement de l’entreprise . . . . . . . . . . . . . . 43
V.5 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Conclusion générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
V
Table des matières
Références bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II
VI
Table des figures
VII
Table des figures
VIII
Liste des tableaux
IX
Liste des abréviations
CI Continuous integration
CD Continuous Delivery
IP Internet Protocol
OS Operator System
X
Liste des tableaux
RC Replication Controller
VM Virtuelle Machine.
XI
Introduction générale
De nos jours, Les entreprises qui ont réussi à jeter les bases d’une innovation continue ont
adopté des architectures informatiques basées sur les microservices pour répondre immédiatement
aux besoins du marché et de ses clients.
Le Cloud Native est un nouveau concept qui veut que cette technologie permette de produire
des applications et de les exécuter dans un environnement moderne comme le Cloud, qu’il soit privé
ou public. Avec la technologie qui ne cesse d’évoluer, les logiciels sont de plus en plus développés à
partir des méthodes employées par les fournisseurs de Cloud.
Les bénéfices d’une approche cloud-native et des technologies de containers comme Kuber-
netes sur laquelle elle repose, ne sont plus à démontrer. Convaincues, les entreprises sont aujourd’hui
nombreuses à investir dans cette voie pour leurs applications legacy ou leurs nouveaux pipelines. Mais
si on reconnait les avantages - portabilité, évolutivité et surtout, réduction drastique des délais de dé-
ploiement - un défi de taille s’impose : comment assurer la fiabilité et la disponibilité des services ?
Le problème majeur de la surveillance des conteneurs est attribué à la nature des conteneurs. Si
le code s’exécute plus rapidement sur les conteneurs, leur fonctionnement interne reste relativement
invisible pour les opérations à cause de la nature de son environnement dynamique. Des problèmes de
sécurité surgissent lorsque les équipes d’opérations essayent d’obtenir des données sur l’infrastructure
conteneurisée.
Il est important de savoir que les systèmes qui nous intéressent sont allumés, mais ce n’est pas
là que réside la véritable valeur. Les gains les plus importants se trouvent dans la compréhension des
performances de ces systèmes.
Un système de monitoring basé sur des métriques peut en fait répondre, et par ailleurs nous
aider à comprendre pourquoi la réponse est ce qu’elle est. Un ensemble complet d’outils de monitoring
pour le débogage et l’analyse comprend non seulement des métriques, mais aussi des journaux, des
traces et des profils. Avec l’avènement des infrastructures Cloud et conteneurisées, les ressources
sont de plus en plus éphémères et dynamiques ce qui rend les solutions de monitoring traditionnelles
1
Liste des tableaux
comme Zabbix et Nagios plus capables de suivre ce dynamisme et superviser les infrastructures Cloud
/ conteneurisées. Par conséquent, des nouvelles solutions de monitoring ont eu lieu, d’ailleurs la stack
Prometheus est la plus connue et la plus utilisée vu son agilité et ses promesses.
La façon dont les projets sont développés a changé radicalement avec l’utilisation des technolo-
gies de conteneurs, et ce projet veut exposer tous les avantages de leur utilisation. L’objectif principal
est la création d’une infrastructure conteneurisée et de supervise cette infrastructure avec les outils
de monitoring ; prometheus, grafana et alertmanager et de comprendre comment elles influencent et
améliorent le développement et la maintenance des projets.
• Améliorer la QOS
Le présent document est structuré en une introduction générale, cinq chapitres et une conclusion gé-
nérale, comme suit :
• Le deuxième chapitre présentera un aperçu sur les technologies Docker et Kubernetes ainsi que
leurs architectures.
• Le troisième chapitre est consacré à comprendre le monitoring et les outils utilisés dans notre
projet.
2
Chapitre I
Introduction :
Avant l’avènement des technologies de conteneurs, le déploiement d’une application prenait
généralement beaucoup de temps, ce qui coûtait à l’entreprise des ressources. Lorsque les technologies
de conteneurs sont devenues plus populaires, l’ensemble du processus a été simplifié et normalisé,
surtout que les conteneurs peuvent être combinés avec une machine virtuelle.
Dans ce chapitre, nous allons aborder l’approche microservices, ses avantages et ses inconvé-
nients et aussi le concept de conteneurisation, ses avantages et le cycle de vie d’un conteneur.
I.1 Microservices :
I.1.1 Définition :
Est un concept architectural permettant de construire une application distribuée à l’aide de
conteneurs. Ils doivent leur nom au fait que chaque fonction de l’application fonctionne comme un
service indépendant. Cette architecture permet à chaque service d’évoluer ou de se mettre à jour sans
perturber les autres services de l’application (Figure I.1). [1]
Un cadre de microservices crée un système massivement évolutif et distribué, qui évite les
goulots d’étranglement d’une base de données centrale et améliore les capacités de l’entreprise, no-
tamment en permettant des applications à livraison/déploiement continu et en modernisant la pile
technologique.[1]
4
Chapitre I. Généralités sur les microservices et la conteneurisation
• Une meilleure résilience : La mise en œuvre d’une architecture basée sur des microservices
facilite le processus d’identification et de résolution des problèmes de performance. L’isola-
tion améliorée des pannes offerte par les modules individuels signifie que les applications plus
importantes ne sont pas affectées par une seule panne.
• Évolutivité accrue : Le fait que chaque service puisse être écrit dans un langage ou une techno-
logie différente permet aux équipes DevOps de choisir la pile technologique la plus appropriée
pour chaque module sans se soucier d’incompatibilité
• Grandes et petites entreprises : : Les microservices sont parfaits pour les grandes entreprises,
mais peuvent être plus lents à mettre en œuvre et trop compliqués pour les petites entreprises qui
doivent créer et itérer rapidement, et ne veulent pas se perdre dans une orchestration complexe.
• La communication entre les services est complexe : puisque tout est désormais un service
indépendant, vous devez gérer avec soin les requêtes qui voyagent entre vos modules. Dans
un tel scénario, les développeurs peuvent être contraints d’écrire du code supplémentaire pour
éviter toute perturbation. Au fil du temps, des complications apparaîtront lorsque les appels à
distance connaîtront une latence.
5
Chapitre I. Généralités sur les microservices et la conteneurisation
I.2 Virtualisation :
Virtualisation La virtualisation est une technologie qui permet de créer plusieurs environne-
ments simulés ou ressources dédiées à partir d’un seul système physique. Son logiciel, appelé hy-
perviseur, est directement relié au matériel et permet de fragmenter ce système unique en plusieurs
environnements sécurisés distincts. C’est ce que l’on appelle les machines virtuelles. Ces dernières
exploitent la capacité de l’hyperviseur à séparer les ressources du matériel et à les distribuer conve-
nablement. La virtualisation aide à tirer le meilleur parti des anciens investissements.[2]
Le matériel physique doté d’un hyperviseur est appelé « hôte », tandis que toutes les machines
virtuelles qui utilisent ses ressources sont appelées « invités ». Ces invités traitent les ressources de
calcul (processeur, mémoire, stockage) à la manière d’un pool de ressources qui peut être déplacé
sans difficulté. Les opérateurs peuvent contrôler les instances virtuelles du processeur, de la mémoire,
du stockage et des autres ressources, de sorte que les invités reçoivent les ressources dont ils ont
besoin, lorsqu’ils en ont besoin. [2]. Figure I.2 :
Par conséquent, l’installation de plusieurs machines virtuelles sur un seul ordinateur peut exé-
cuter différents systèmes d’exploitation et applications sur un seul serveur physique ou hôte. [2]
6
Chapitre I. Généralités sur les microservices et la conteneurisation
I.3 Conteneurisation :
I.3.1 Définition :
La création d’un conteneur est de mettre tout ce que l’application a besoin pour fonctionner,
que ce soit des bibliothèques, un système d’exploitation ou toute autre technologie. Ce qui a été créé
peut être copié et utilisé dans n’importe quel environnement. Ce qui permet de gagner du temps et
facilite la poursuite d’autres processus sans réinstaller les mêmes composants du conteneur à chaque
fois qu’il faut tourner une machine virtuelle. Il s’agit d’un type de stratégie de virtualisation qui est
apparu comme une alternative à la virtualisation native ou initiale basée sur un hyperviseur. [3]
• Niveau application : Une application ou un service, et les processus minimaux requis par cette
application, s’exécutent dans un espace isolé au sein de la machine hôte. [3]
• Portabilité : Les conteneurs peuvent s’exécuter n’importe où, à condition que le moteur de
conteneurs prenne en charge le système d’exploitation sous-jacent..
• Efficacité et densité des ressources : Les conteneurs ne nécessitent pas de système d’exploi-
tation distinct et utilisent donc moins de ressources. Les VM ont généralement une taille de
quelques Go, mais les conteneurs ne pèsent généralement que quelques dizaines de mégaoctets,
ce qui permet à un serveur d’exécuter beaucoup plus de conteneurs que de VM. Les conteneurs
nécessitent moins de matériel, ce qui permet d’augmenter la densité des serveurs et de réduire
les coûts des centres de données ou du cloud.
7
Chapitre I. Généralités sur les microservices et la conteneurisation
• Isolation des conteneurs et partage des ressources : Il permet d’exécuter plusieurs conte-
neurs sur le même serveur, tout en assurant qu’ils soient complètement isolés les uns des autres.
Lorsque les conteneurs se plantent ou que les applications qu’ils contiennent tombent en panne,
les autres conteneurs exécutant la même application peuvent continuer à fonctionner comme
d’habitude.
• Rapidité : démarrer, créer, répliquer ou détruire des conteneurs en quelques secondes. Les
conteneurs sont des paquets légers qui contiennent tout ce dont ils ont besoin pour fonctionner, y
compris leur propre système d’exploitation, leur code, leurs dépendances et leurs bibliothèques.
• Haute évolutivité : Les conteneurs facilitent la mise à l’échelle horizontale des applications
distribuées. Il permet d’ajouter plusieurs conteneurs identiques pour créer plusieurs instances
de la même application. Les orchestrateurs de conteneurs peuvent effectuer une mise à l’échelle
intelligente, en exécutant uniquement le nombre de conteneurs dont on a besoin pour répondre
aux charges applicatives, tout en tenant compte des ressources disponibles dans le cluster de
conteneurs.
8
Chapitre I. Généralités sur les microservices et la conteneurisation
Le cycle de vie complet d’un conteneur Docker s’articule autour de cinq phases :
• Phase de création : un conteneur docker est créé à partir d’une image docker.
• Phase de pause : la commande en cours d’exécution dans le conteneur docker est mise en pause.
• Phase de reprise : le conteneur en pause reprend l’exécution des commandes une fois qu’il est
libéré.
9
Chapitre I. Généralités sur les microservices et la conteneurisation
Dans une architecture conteneurisée, les différents services qui constituent une application sont
regroupés dans des conteneurs séparés et déployés sur un cluster de machines physiques ou virtuelles.
Mais cela fait naître le besoin d’orchestration de conteneurs - un outil qui automatise le déploiement,
la gestion, la mise à l’échelle, la mise en réseau et la disponibilité des applications basées sur des
conteneurs.
L’orchestration de conteneurs est donc l’acte de gérer et d’organiser les conteneurs selon un
modèle de comportement spécifié et explicitement défini. Cette définition comprend plusieurs facteurs
nécessaires à l’orchestration des différents conteneurs et varie en fonction des spécifications de chaque
cadre d’orchestration de conteneurs. Tous ont cependant en commun les spécifications des différents
conteneurs à orchestrer (image, nombre de réplications, etc.).
• Répartir et déployer les conteneurs sur les machines hôtes selon des besoins spécifiés en termes
de mémoire et CPU.[4]
• Fournir une vue d’ensemble sur les métriques et les health-checks à la fois des conteneurs et
des machines hôtes peut être portée par l’outil d’orchestration.[4]
• Gérer le failover des conteneurs et la scalabilité : en cas d’indisponibilité d’une machine hôte par
exemple, l’orchestrateur permet de redémarrer le conteneur sur une deuxième machine hôte.[4]
• Assurer la mise à jour des conteneurs de manière successive et sans induire d’indisponibilité
applicative. Pendant la phase de mise à jour d’un conteneur, les autres conteneurs disponibles
sont exécutés.[4]
I.3.6 Conteneur vs VM
Le débat entre machine virtuelle et conteneur est au cœur du débat entre l’architecture infor-
matique traditionnelle et les pratiques DevOps contemporaines.
Lorsque l’on compare les technologies de conteneurs aux machines virtuelles normales, il y
a plusieurs avantages. Les conteneurs sont rapides à mettre en place et à configurer, alors que les
machines virtuelles sont plus volumineuses et lentes à mettre en place et à configurer. La nature des
conteneurs étant très agile, ils constituent une bonne base pour les processus de développement et
d’exploitation (DevOps).
10
Chapitre I. Généralités sur les microservices et la conteneurisation
Pour mettre à jour une nouvelle version de l’application, on peut utiliser un pipeline CI/CD.
De cette façon, l’application est rapidement installée sur l’environnement cible. Cela permet de tes-
ter rapidement les nouvelles versions de l’application et de pousser les nouvelles versions vers les
environnements de production.
Conclusion
Dans ce chapitre, nous avons expliqué ce que sont les microservices. Nous avons présenté
leurs principaux avantages et inconvénients. Nous avons parlé du concept de virtualisation et de son
lien avec les conteneurs, après avoir couvert en détail le concept de conteneurs et complété le chapitre
par une comparaison entre conteneurs et machines virtuelles.
Dans le chapitre suivant, nous présenterons la technologie Docker et Kubernetes, leurs archi-
tectures, leurs composants et leurs rôles.
11
Chapitre II
Docker et Kubernetes
Chapitre II. Docker et Kubernetes
Introduction
La conteneurisation est une technologie populaire qui permet aux développeurs de créer et
de déployer des applications de manière plus rapide. L’une des technologies qui permet la conte-
neurisation est Docker. Pour mieux comprendre cette technologie, nous devons toucher la notion du
Kubernetes.
Dans ce chapitre, nous allons aborder le concept de Docker, son architecture et sa relation avec
les conteneurs. Par la suite, nous allons toucher l’approche kubernetes, son architecture et son rôle.
II.1 Docker
II.1.1 Definition
Docker est une technologie de conteneurs lancée en 2013 par la société Docker Inc. C’est un
projet open-source qui automatise le déploiement d’applications dans des conteneurs logiciels. Ces
conteneurs d’applications s’apparentent à des machines virtuelles légères, car ils peuvent être exécutés
de manière isolée les uns des autres et de l’hôte en fonctionnement. [5]
Docker nécessite des fonctionnalités présentes dans les noyaux Linux récents pour fonctionner
correctement, c’est pourquoi sur Mac OSX et Windows, une machine virtuelle exécutant linux est
nécessaire pour que Docker fonctionne correctement. [5]
13
Chapitre II. Docker et Kubernetes
• Daemon Docker : Écoute les demandes de l’API Docker et gère ces objets tels que les images,
les conteneurs, les réseaux et les volumes.[5]
• Clients Docker : À l’aide des clients Docker, les utilisateurs peuvent interagir avec Docker. Le
client Docker fournit une interface de ligne-commande (CLI) qui permet aux utilisateurs de
lancer et d’arrêter des commandes d’application à un démon Docker.[5]
• Hôte Docker : Fournit un environnement complet pour exécuter des applications. Il comprend
le démon Docker, les images, les conteneurs, les réseaux et le stockage.[5]
• Registre Docker : Stocke les images Docker. Docker Hub est un registre public que tout le
monde peut utiliser. Docker est configuré pour utiliser les images sur Docker Hub par défaut.
On peut faire exécuter notre propre registre sur ce dernier.[5]
• Images Docker : Sont des modèles en lecture seule qu’on utilise à partir d’un ensemble d’ins-
tructions écrites dans un fichier Docker. Les images définissent à la fois ce à quoi on veut que
notre application packagée et ses dépendances ressemblent et les processus à exécuter lors-
qu’elle est lancée.[5]
14
Chapitre II. Docker et Kubernetes
servé dans l’espace conteneur. Pour faire tourner un conteneur Docker spécifique, ils sont développés
à partir d’images conçues pour fournir une capacité spécifique.[3]
Ces images de Docker sont faites à partir de systèmes de fichiers qui sont superposés de ma-
nière à pouvoir partager des fichiers communs. Le partage de fichiers communs présente l’avantage
de réduire l’utilisation de l’espace disque et d’accélérer le téléchargement des images.[3]
Par rapport aux machines virtuelles, les conteneurs sont plus efficaces en termes de ressources
car ils ne nécessitent pas d’hyperviseurs. En outre, les conteneurs ont une empreinte mémoire moindre
et peuvent aider les organisations à éviter les coûts élevés et les tracas liés à la prolifération des
serveurs.[3]
II.2 Kubernetes
II.2.1 Définition :
[6] Kubernetes est un système open-source qui aide les organisations à gérer les applica-
tions conteneurisées basées sur le Cloud. Le système permet d’automatiser le déploiement, la mise à
l’échelle et de gestion des conteneurs qui font partie d’un vaste écosystème distribué d’applications
et de stockage en Cloud.[6]
Kubernetes est une plateforme open-source conçue pour automatiser le déploiement, la mise
à l’échelle et l’exploitation des conteneurs d’applications.[6]
Par rapport aux machines virtuelles normales, ils sont déployés plus rapidement, plus efficace-
ment et de manière plus fiable. Docker crée l’image, qui est utilisée dans Kubernetes. Dans le monde
de la virtualisation croissante et de l’internet des objets (IoT), les applications et les services doivent
être déployés rapidement et efficacement.[6]
15
Chapitre II. Docker et Kubernetes
composants tels que le serveur API, le gestionnaire de contrôleurs, le planificateur et Etcd. Le nœud
travailleur ne comporte que deux composants, à savoir kubelet et kubeproxy.[7]
Pods :
La plus petite unité de calcul déployable dans Kubernetes est appelée pod. Chaque pod est
constitué d’un ou plusieurs conteneurs d’applications, qui sont déployés sur le même hôte physique
et partagent le même ensemble de ressources telles que le stockage et le réseau. Kubernetes applique
ses mécanismes d’ordonnancement et d’orchestration sur des pods et pas sur des conteneurs.[7]
Le contrôleur de réplication :
souvent abrégé en ”RC”, est chargé de s’assurer que le nombre spécifié de pods est toujours
opérationnel, et si ce n’est pas le cas, il répliquera le nombre requis de pods. Il met également fin à
certains pods s’ils sont trop nombreux. Les répliques seront gérées en fonction des règles définies dans
16
Chapitre II. Docker et Kubernetes
le modèle du pod. Un pod créé manuellement peut être expulsé en cas de défaillance, tandis qu’en
utilisant un contrôleur de réplication, nous pouvons définir des pods qui seront remplacés en cas de
défaillance ou de suppression pour une raison quelconque. [7]
Par conséquent, il serait judicieux de définir un contrôleur de réplication plutôt que de créer
manuellement des pods. Cela garantira la santé de l’application, même si elle ne contient qu’un seul
pod.[7]
ReplicaSet :
est un objet API dans Kubernetes, qui gère la mise à l’échelle des pods. Il vérifie l’état des
pods et en maintient le nombre souhaité à tout moment. Selon la documentation de Kubernetes, les
ReplicaSets constituent la prochaine génération de contrôleurs de réplication et offrent davantage de
fonctionnalités.[7]
Le déploiement :
est un concept de plus haut niveau que le replicaSet et le pod. En définissant un déploiement,
nous pouvons déclarer des mises à jour pour les Pods et les ReplicaSets. En d’autres termes, nous
décrivons un état souhaité et le contrôleur de déploiement vérifie l’état réel par rapport à l’état souhaité.
Au lieu d’utiliser directement les pods ou les ReplicaSets, il est recommandé de les définir par des
déploiements.[7]
Un service :
est un moyen abstrait d’exposer aux utilisateurs des applications fonctionnant sur les pods.
Comme mentionné précédemment, une adresse IP unique est attribuée à chaque pod au sein d’un
cluster. Cependant, comme les pods peuvent être créés ou supprimés par le contrôleur de réplication,
leurs adresses IP ne sont pas stables. Chaque pod nouvellement créé recevra une nouvelle adresse IP,
ce ne serait donc pas une approche appropriée pour les utilisateurs de se connecter aux applications via
les adresses IP des pods. C’est là que les services Kubernetes résolvent le problème en offrant une API
de point de terminaison, qui permet aux services d’être accessibles de l’extérieur. De plus, en attribuant
un nom DNS unique à chaque service, Kubernetes fournit un mécanisme interne de découverte des
services et les développeurs n’ont pas besoin d’utiliser une approche externe pour cela.[7]
17
Chapitre II. Docker et Kubernetes
sateurs et les administrateurs système interagissent avec Kubernetes. Il accepte les requêtes des clients
et s’assure de faire évoluer l’état actuel du cluster vers l’état désiré, tel que décrit par les utilisateurs
via le Pod Lifecycle Event Generator (PLEG). Le nœud maître Kubernetes adopte une collection de
processus qui gèrent l’état du cluster. [7]
• Le serveur API : expose une API REST, qui rend possible la communication de tous les
composants du cluster. Il permet également aux utilisateurs de configurer et de valider tous les
objets du cluster tels que les pods, les contrôleurs de réplication, les services, etc. En outre, le
serveur API gère les communications entre les nœuds maître et travailleur.[7]
• Un gestionnaire de contrôleur : est une boucle de contrôle qui s’exécute sur le maître et qui,
à l’aide du serveur API, vérifie l’état du cluster. Si un changement survient, le gestionnaire de
contrôleur déplace l’état actuel du cluster vers l’état souhaité. Il existe différents contrôleurs
dans Kubernetes, notamment, le contrôleur de réplication, le contrôleur d’espace de noms, le
contrôleur de point de terminaison et le contrôleur de comptes de service.[7]
• Etcd : est un entrepôt de données clé-valeur léger, cohérent, hautement disponible et distribué,
qui est utilisé pour stocker toutes les données du cluster, y compris les configurations et les
informations d’état du cluster. Pour fonctionner en tant que magasin de données, etcd se base
sur l’algorithme de consensus Raft.[7]
Chaque nœud travailleur est composé de quelques éléments décrits comme suit :
• Moteur de conteneur : comme premier composant, un moteur de conteneur doit être installé sur
chaque nœud travailleur. Le moteur de conteneur est le logiciel responsable de l’exécution des
18
Chapitre II. Docker et Kubernetes
conteneurs. Plusieurs moteurs de conteneurs sont pris en charge par Kubernetes, mais Docker
est le plus populaire.[7]
• Kubelet : Étant responsable de la gestion des pods et de leurs conteneurs dans chaque nœud,
Kubelet est le composant le plus important des nœuds travailleurs. Kubelet reçoit ses instruc-
tions du nœud maître et, en interaction avec etcd, il met à jour les configurations. Sur la base des
informations acquises, il s’assure que les pods sont sains et fonctionnent correctement. Ensuite,
il signale également l’état des nœuds au cluster.
• Kube-Proxy : est un proxy réseau, qui prend en charge les règles réseau sur chaque nœud
travailleur. Ces règles permettent les communications réseau vers les pods depuis l’intérieur ou
l’extérieur du cluster Kubernetes. En d’autres termes, grâce à la mise en correspondance des
conteneurs avec les services et à l’utilisation de mécanismes d’équilibrage des charges, il permet
d’accéder à l’application déployée depuis le monde extérieur. Ces proxies réseau fonctionnent
sur la base de flux TCP et UDP.[7]
• Portabilité : Dans son sens le plus large, cela signifie la capacité d’une application à être dé-
placée d’une machine à l’autre. Cela signifie que le paquet peut être exécuté n’importe où.[7]
• Auto-réparation : Kubernetes assure la résilience des applications grâce aux opérations qu’il
lance, comme le démarrage automatique, utile en cas de panne d’une application, la réplication
automatique des conteneurs et la mise à l’échelle automatique en fonction du trafic. La propriété
de guérison de Kubernetes lui permet de réagir efficacement. [7]
• Équilibreur de la charge : Kubernetes optimise les tâches à la demande en les rendant dis-
ponibles et évite de solliciter indûment les ressources. Dans le contexte de Kubernetes, nous
avons deux types d’équilibreurs de charge - l’équilibreur de charge interne et externe.
Conclusion
Après qu’on a expliqué le concept de Docker et son architecture de base, on a défini les conte-
neurs et Docker. Ensuite, nous avons abordé l’orchestrateur Kubernetes et nous avons expliqué son
19
Chapitre II. Docker et Kubernetes
Dans le prochain chapitre, Nous allons présenter le Monitoring d’une infrastructure conteneu-
risée et les outils utilisés.
20
Chapitre III
Introduction
L’exécution de tous vos services dans des conteneurs permet d’obtenir des caractéristiques ap-
profondies des ressources et des performances, puisque chaque conteneur fonctionne dans son propre
CGroup et que le noyau Linux nous fournit toutes sortes de mesures utiles.
Bien qu’il existe quelques autres outils de monitoring, nous allons vous montrer c’est quoi le
monitoring, c’est quoi Prometheus, Grafana et Alertmanager et pourquoi on pense qu’ils sont parfai-
tement adaptés au monitoring des infrastructures basées sur des conteneurs.
III.1 Le monitoring
III.1.1 Définition
D’un point de vue technologique, le monitoring est l’ensemble des outils et des processus par
lesquels vous mesurez et gérez votre système technologique.[8]
elle fournit également la vision et la capacité de diagnostiquer, détecter et alerter sur la base
des données recueillies. Ces données sont une représentation de l’expérience vécue par les clients
lors de l’utilisation de votre produit. On pense souvent, à tort, que seules les équipes technologiques
peuvent bénéficier du monitoring. Les départements commerciaux peuvent également prendre des
décisions sur la base des rapports qui permettent de mesurer l’état du produit et des investissements
technologiques.[8]
Le problème avec Zabbix est qu’il n’est pas conçu pour les environnements dynamiques où
les hôtes à surveiller disparaissent et apparaissent. Après la phase de test, il était clair qu’il fallait
une autre plateforme plus dynamique pour surveiller les services fonctionnant dans Kubernetes. La
22
Chapitre III. Monitoring et ces outils
Prometheus était beaucoup plus prometteur que Zabbix puisqu’il n’avait aucune relation avec
les ressources de Kubernetes. L’un des avantages de Prometheus par rapport à Zabbix est qu’il existe
des points d’extrémité de surveillance Kubernetes qui produisent déjà les données dans un format
accepté par Prometheus.[9]
III.2 Prometheus
III.2.1 Définition :
Prometheus est un outil de monitoring et d’alerte open-source créé chez SoundCloud en 2012
pour remplacer leurs outils de monitoring existants, Graphite et StatsD, qui ne répondaient plus à leurs
besoins. Prometheus a rejoint la CNCF (Cloud Native Computing Foundation) en 2016 en tant que
deuxième projet hébergé, après Kubernetes. [10]
Prometheus prend en charge la collecte des données, le stockage (temporaire) des données et les phases
d’alerte.[10]
Prometheus est basé sur la méthode de collecte des données de monitoring dite ”pull”. Afin
d’extraire les métriques d’un service l’exportateur Prometheus doit être installé sur un serveur.[10]
23
Chapitre III. Monitoring et ces outils
• Le serveur : se compose d’une base de données de séries chronologiques (TSDB) pour le sto-
ckage des données et d’un serveur Hypertext Transfer Protocol Secure (HTTPS) pour la récupé-
ration ou l’envoi des données. Prometheus définit ses charges de travail en utilisant le scraping.
Le scraping est une tâche de configuration de Prometheus, qui définit les points de terminaison,
où les données doivent être récupérées. Il permet également de manipuler les données avant
de les stocker dans une TSDB. Par défaut, Prometheus collecte des données toutes les trente
secondes auprès de ses cibles. Ce rythme de collecte des données peut également être modifié
dans la configuration d’un scrape. Prometheus possède un langage de requête propriétaire ap-
pelé Prometheus Query Language (PromQL) qui permet d’interroger et d’agréger les données
stockées dans TSDB.
• L’Alertmanager : permet de créer des alertes sur la métrique et ses valeurs. ingérées dans
Prometheus. Sa configuration est stockée à l’intérieur de Prometheus. des intégrations à d’autres
plateformes d’alerte et la possibilité d’envoyer des alertes via des webhooks. [11]
• La pushgateway : permet aux services externes qui n’exposent pas de métriques d’envoyer
constamment des données à Prometheus. L’un des avantages de cette solution est qu’elle per-
met aux services d’envoyer à Prometheus des métriques qui pourraient ne pas être présentes
lors de la collecte des données. Cette solution est idéale pour les services basés sur des tra-
vaux par lots. Pushgateway ne modifie ni n’agrège les données qui lui sont fournies. (Github,
promtheus/pushgateway [10]
24
Chapitre III. Monitoring et ces outils
Prometheus est adapté aux séries chronologiques numériques, ce qui signifie que les valeurs
de chaque métrique doivent être numériques. (Prometheus, Overview )
Comme les métriques Prometheus sont numériques, il est possible d’appliquer des fonctions
mathématiques telles que la somme ou le taux aux métriques.
25
Chapitre III. Monitoring et ces outils
faites à un point de terminaison spécifique au cours des cinq dernières minutes ou la durée moyenne
d’une requête de base de données spécifique. (Prometheus, Client libraries. [10]
III.3 Grafana :
Le projet Grafana a été lancé en 2014. Grafana est un logiciel de visualisation et d’analyse
open source. Il nous permet d’interroger, de visualiser, d’alerter et d’explorer nos métriques, journaux
et traces, quel que soit l’endroit où ils sont stockés. Il nous fournit des outils pour transformer les
données de notre base de données de séries chronologiques (TSDB) en des magnifiques graphes et
visualisations.
Grafana est généralement utilisé comme un outil de visualisation pour Prometheus, car les
méthodes de visualisation de Prometheus sont trop primitives pour les exigences actuelles.
Grafana dispose d’une communauté active qui développe grafana et ses composants. La créa-
tion de tableaux de bord dans Grafana est rendue très simple. L’utilisateur peut télécharger des tableaux
de bord prêts à l’emploi pour les exportateurs Prometheus à partir du site Grafana. Par exemple pour
les métriques fournies par le Node Exporter, le tableau de bord présenté dans la Figure III.2 peut être
téléchargé. Ces tableaux de bord prêts à l’emploi peuvent ensuite être personnalisés pour répondre
aux besoins de l’utilisateur.[13]
26
Chapitre III. Monitoring et ces outils
Conclusion
Dans ce chapitre nous avons choisi de commencer par une définition sur le monitoring pour
bien comprendre ce champ d’étude, après on a touché sa relation avec kubernetes et la probléma-
tique avec les anciens outils de monitoring, ensuite nous avons défini les outils utilisés dans ce projet
(Prometheus) et décrit son architecture et ces fonction, puis nous avons abordé tout sur grafana et ces
fonctionnalités.
Dans le chapitre suivant, nous présenterons l’implémentation de notre solution proposée ainsi
que les résultats de notre travail.
27
Chapitre IV
Implémentation de la solution
Chapitre IV. Implémentation de la solution
Introduction
Après avoir présenté un aperçu sur les fondements théoriques de notre solution. Ces derniers
seront interprétés par la présentation d’un cas de solution pratique.
Dans ce chapitre, nous allons présenter un cas pratique adapté pour monitorer un cluster kuber-
netes via l’intégration de Prometheus avec Grafana, et Alertmanager. La partie applicative comprend
le scénario de déploiement, les principales configurations, et des tests.
• ServiceMonitor : Spécifie comment les groupes de services Kubernetes doivent être surveillés.
• PodMonitor : Spécifie de manière déclarative comment le groupe de pods doit être surveillé.
• Sonde : Spécifie comment les groupes d’entrées ou les cibles statiques doivent être surveillés.
La figure IV.1 représente notre architecture de notre solution qui contient les principaux élé-
ments de notre travail :
29
Chapitre IV. Implémentation de la solution
30
Chapitre IV. Implémentation de la solution
Afin de pouvoir se connecter aux différents serveurs, la configuration IP est indiquée dans la
section suivante.
• Minikube : 2.0.4
• Docker : 20.10.12
• Kubectl :1.24.2
31
Chapitre IV. Implémentation de la solution
Minikube crée par default un cluster et un namespace, et sur lesquels nous allons appliquer
notre solution, voir la figure IV.4 Une fois l’installation terminée, une fenêtre s’affiche marquant la
fin de la création du cluster, comme illustrée sur la figure IV.5, où apparait l’IP de control plane.
Pour obtenir une pile de monitoring complète, nous utiliserons le kube-prometheus qui inclut
Prometheus Operator parmi ses composants. La pile kube-prometheus est destinée au monitoring des
clusters et est préconfigurée pour collecter les métriques de tous les composants Kubernetes, avec un
ensemble par défaut de tableaux de bord et de règles d’alerte.
Après avoir installé le cluster, on commence par le dépècement de prometheus, nous avons
besoin de cloner le kube-prometheus sur notre système local :
32
Chapitre IV. Implémentation de la solution
Ensuite, nous créons l’espace de nom ’monitoring’, le pod opérateur et les CustomResource-
Definitions nécessaires. Les informations sont illustrées dans les figures ci-dessous :
Une fois que nous avons confirmé que les ressources sont définies, nous déployons la pile de
monitoring Prometheus.
Nous utilisons les commandes ci-dessous pour vérifier l’état des pods :
Egalement, Pour lister tous les services créés, nous allons lancer la commande suivante : Apres avoir
33
Chapitre IV. Implémentation de la solution
déployé la pile de monitoring, nous pouvons accéder aux tableaux de bord de Grafana, Prometheus
et Alertmanager, on utilisant kubectl port-forward, voir la figure Ensuite, nous accédons au tableau
de bord Grafana sur votre navigateur local sur l’URL. Voir la figure IV.12 : Pour le transfert de port
de Prometheus, nous exécutons les commandes ci-dessous : La console web de Prometheus est ac-
cessible par l’URL, voir la figure IV.14 Pour le transfert de port d’Alertmanager, nous exécutons les
commandes ci-dessous : La console web d’Alertmanager est accessible par l’URL, voir la figure :
34
Chapitre IV. Implémentation de la solution
Une fois que la solution est bien déployée, nous avons effectué un ensemble des tests pour
assurer de leur bon fonctionnement.
Nous avons créé un fichier YAML de type déploiement dans lequel nous avons défini notre
état souhaité pour le cluster, y compris l’image docker de l’application « richardchesterwood/k8s-
fleetman-webapp-angular :release0». Notre fichier de déploiement YAML est le suivant : Donc pour
permettre aux clients d’échanger de manière plus fiable avec les conteneurs s’exécutant dans le Pod à
35
Chapitre IV. Implémentation de la solution
l’aide d’une adresse IP virtuelle statique grâce au travail du composant kube-proxy, nous avons créé
un service de type ”Nodeport” à travers un fichier YAML. Ce fichier s’exécute de la même manière
que le déploiement. Notre fichier de service YAML est le suivant : Pour exécuter ce déploiement dans
le cluster, nous avons transmis le fichier YAML comme une spécification d’objet en utilisant l’option
-f avec la commande kubectl create : La figure ci-dessus montre que notre déploiement « webapp »
a été bien crée. Pour accéder à ce service, nous avons exécuté la commande suivante : La figure ci-
dessus montre l’interface web du service webapp qui consiste à une catre du monde : Le tableau de
bord complet de l’exportateur de nœuds sera importé. On peut voir que toutes les mesures telles que
la charge du système, la RAM utilisée, l’occupation du processeur, etc. sont surveillées avec succès
36
Chapitre IV. Implémentation de la solution
sur Grafana. Nous filtrons les resultats. On peut voir que Grafana est capable de visualiser de nom-
breuses métriques de notre déploiement “webapp” qu’il est en cours d’exécution. Après, sur l’onglet
“Alertes” de Prometheus. On peut voire des alertes concernant le fonctionnement de notre cluster.
On peut ensuite faire défiler le rapport et voir les règles qui ont été évaluées. Dans cet exemple, nous
avons exploré l’élément ”kubeSchdularDown”. On peut voir le niveau de sévérité, et la description du
problème. Plus de détails sur cette règle sont affichés sur la figure IV.27. A partir du dernier résultat,
nous avons réussi à trouver un service de monitoring proactif avec une détection rapide des problèmes
et l’identification des activités et qui donne à l’entreprise le niveau de protection approprié à la valeur
de l’information et aux exigences de l’entreprise.
37
Chapitre IV. Implémentation de la solution
38
Chapitre IV. Implémentation de la solution
Conclusion
Nous avons abordé dans ce chapitre la partie de préparation de l’environnent, suivi par l’ins-
tallation et la config de la solution, et conclu par des scenarios et testes qui confirment que la mise en
place est terminée avec succès.
Dans le suivant chapitre, nous allons aborder l’aspect managérial de notre solution.
39
Chapitre V
Partie Manageriale
Chapitre V. Partie Manageriale
Introduction
La surveillance des conteneurs à l’échelle de l’entreprise nécessite une transformation du sys-
tème, et Uniquement le management peut conduire ce changement d’état d’esprit. Comme l’a dit
William Edwards Deming, ”Un système est utilisé par les employés, mais il est créé par la direction”.
Nous avons choisi une étude de managériale pour notre PFE afin de bien définir nos priorités
et de bien gérer notre temps.
Un WBS (Work Breakdown Structure) qui aide à la répartition structurée des activités est un
outil de planification qui permet d’identifier et de définir toutes les taches à considérer pour pouvoir
d’abord organiser le projet et pouvoir ensuite évaluer régulièrement leur avancement.
La division temporelle de notre projet nous permet de définir trois phases, chacune contenant
plusieurs tâches. Comme indiqué dans le tableau ci-dessous.
41
Chapitre V. Partie Manageriale
42
Chapitre V. Partie Manageriale
Afin de bien savoir l’apport de notre projet, nous avons effectué une enquête auprès de diffé-
rentes grandes entreprises ou nous camarade de promos ont effectué leur stage, nous avons envoyé
le questionnaire a une quinzaine de développeurs, administrateurs et managers à travers LinkedIn et
onze personnes ont répondu aux questionne que nous avons distribués, nous avons ensuite calculé les
tendances (Voir tableau V.2).
Pour calculer les tendances, nous avons utilisé la grille de pondération d’échelle à quatre (04)
niveaux de consentement, présentée ci-dessous, qui met en évidence l’impact de notre solution : • Pas
du tout d’accord (1) • Plutôt en désaccord (2) • D’accord (3) • Tout à fait d’accord (4) Et nous avons
calculé les tendances selon la règle : ((a1x1) + (a2x2) + (a3x3) + (a4x4)) /(x1+x2+x3+x4).
Dans cette partie nous allons analyser les différents résultats obtenus :
43
Chapitre V. Partie Manageriale
Réponses
Questions Tendance
1 2 3 4
1-Organisation du travail
1. Je vois un grand intérêt à mettre en place cette proposition 0 2 6 3 3.09
2. De nouveaux procédés de travail ont été développés par cette solution technique 0 2 7 2 3
3. Je peux utiliser cette solution sans être dérangé (pas d’interférence, pas de conflit de priorité avec d’autres dispositifs) 3 4 1 3 2.36
4. Je vois des inconvénients si je ne mets pas en place cette proposition 3 2 2 4 2.63
5. Cette solution technique nous a permis d’améliorer notre mode de fonctionnement 2 1 6 2 2.72
2- Moyens mis à la disposition pour réussir la mise en place de la solution
6. J’ai à ma disposition tous les outils de travail nécessaires à la mise en place de cette solution technique 1 2 4 4 3
7. J’ai toute la documentation nécessaire pour concrétiser cette solution technique 2 5 3 2 2.63
8. L’aménagement de mon environnement de travail est favorable pour accomplir cette solution 3 2 2 5 3
9. La procédure de travail s’accommode avec cette solution 2 1 5 3 2.81
3- Moyens humains (collègues, support en compétences)
10. J’ai le support nécessaire pour accomplir cette solution 0 0 4 7 3.63
11. Cette solution me permet d’améliorer mes compétences techniques 0 3 5 3 3.27
12. De nouvelles compétences sont développées au sein de notre structure suite à la mise en place de cette solution 2 1 4 4 2.9
4- Gestion (encadrement et hiérarchie)
13. Mes comportements et mes résultats au travail se sont améliorés 0 0 5 6 3.54
14. Mes tâches et responsabilités sont mieux définies par mes responsables dans le cadre de cette solution technique 0 0 7 4 3.36
15. Les performances de ma structure sont améliorées 0 2 7 4 3.36
16. Notre travail est de meilleures qualités 0 0 7 4 3.36
5- Gestion du changement
17. On m’a expliqué pourquoi ils ont mis en place cette solution 1 2 6 2 2.81
18. Après la mise en place de la solution technique, j’ai accepté d’acquérir et/ou modifier mes habitudes 1 2 5 3 3.90
19. Nous accueillons favorablement cette solution 0 4 6 1 3.72
1. Les résultats de la première catégorie montrent que notre solution suscite l’intérêt pas mal d’em-
ployés. Car elle permet de gagne un temps considérable ainsi qu’une qualité de travail meilleur
Néanmoins Cette solution peu cause des pertes en premier lieu en raison de manque de compé-
tences et expériences suffisante.
2. les outils et logiciels sont accessible open source mais elle peut exiger un personnel possédant
des compétences spécifique qui est l’unique prix de cette solution.
3. Pour cette catégorie nous devons la diviser en deux parties : Pour la première catégorie elle
concerne les développeurs, ils pensent majoritairement que la solution est bénéfique pour leur
travail néanmoins il existe une partie important qui s’oppose à cause des compétences requises.
Pour cette catégorie nous devons la diviser en deux parties :
• Pour la première catégorie elle concerne les développeurs, ils pensent majoritairement
que la solution est bénéfique pour leur travail néanmoins il existe une partie important qui
s’oppose à cause des compétences requises.
• La deuxième partie quant à elle, concerne les administrateurs réseaux qui disent que leur
solution leur convient parfaitement car elle permet de gagner du temps et de mieux orga-
nise leur travail sans exige un travail ou une formation supplémentaire
La première partie concerne les administrateurs réseau qui disent que l’implémentation
de cette solution permet d’améliorer et organiser leur travail, bien que cette solution ne
44
Chapitre V. Partie Manageriale
La première partie concerne les administrateurs réseau qui disent que l’implémentation
de cette solution permet d’améliorer et organiser leur travail, bien que cette solution ne
nécessite ni formation ni travail supplémentaire.
4. La mise en place de cette solution permet une meilleur organisation du travail, la division des
équipes et leur rôle et responsabilité est similaire aux conceptions des microservices le type
d’arrangement des équipes est similaire à la manière dont les microservices ont été conçu ce
qui permet une communication plus fluide de cérémonies agiles plus fructueuses et d’itérations
plus rapides sur des fonctionnalités ciblées.
5. La majorités des personnes interrogée adhèrent complétement à cette solution et sont prêts à
prendre des initiatives pour adapter leur habitues et acquérir les compétences techniques re-
quises mais il existe une catégorie de personnes qui ne sont pas d’accord ou pas prêt à entre-
prendre ce changement et qui voit que la solution contient plus inconvénient que de bénéfices.
6. La mise en place de cette solution permet une meilleur organisation du travail, la division des
équipes et leur rôle et responsabilité est similaire aux conceptions des microservices le type
d’arrangement des équipes est similaire à la manière dont les microservices ont été conçu ce
qui permet une communication plus fluide de cérémonies agiles plus fructueuses et d’itérations
plus rapides sur des fonctionnalités ciblées
7. La majorités des personnes interrogée adhèrent complétement à cette solution et sont prêts à
prendre des initiatives pour adapter leur habitues et acquérir les compétences techniques re-
quises mais il existe une catégorie de personnes qui ne sont pas d’accord ou pas prêt à entre-
prendre ce changement et qui voit que la solution contient plus inconvénient que de bénéfices.
V.5 Synthèse
Après l’analyse des résultats obtenus du questionnaire diffusé sur LinkedIn a différent per-
sonnes travaillant dans le domaine de la technologie d’information, nous déduisant que les équipes
réseaux sont en faveur du changement, car elle permet des un travail plus simple ainsi une économie
en termes de cout et de travail.
Par contre les équipes de développement réclame une formation pour accepter ce passage vers
la nouvelle solution car elle nécessite quelque compétence afin de pouvoir bénéficier pleinement des
avantages de la nouvelle solution. . Mais une autre refuse catégoriquement ce passage-là. C’est pour
45
Chapitre V. Partie Manageriale
cela, des compagnes de sensibilisation doivent être faites dans les directions concernées tout en mettant
l’accent sur l’avantage et le grand apport de la solution.
Conclusion
Après avoir fait une étude managériale sur notre projet et avoir traversé le processus projet en,
on peut dire que notre solution est très intéressante pour l’entreprise car elle a un Retours positifs des
ingénieurs Cloud.
46
Conclusion générale
Le but de notre projet était d’établir une solution de monitoring centralisée avec Prometheus,
Grafana et Alertmanager afin de gérer les alertes dans un cluster. Nous avons mené à bien cette tâche
en proposant une solution basée sur Docker dans une infrastructure Prometheus/Alertmanager.
Pour bien mener notre projet et répondre aux préoccupations d’ENSTICP, nous nous sommes
basés sur plusieurs étapes. Nous avons d’abord dû comprendre le principe de fonctionnement et l’ar-
chitecture des microservices. Ensuite, nous nous sommes tournés vers la conteneurisation, Docker et
l’orchestrateur Kubernetes et les solutions Grafana, Prometheus et Alertmanager en termes d’adminis-
tration. En suit nous avons fais une étude managériale. Pendant cette expérience nous avons enrichir
nos connaissances théoriques et pratique dans le domaine de la conteneurisation. Donc nous servira
certainement dans le monde de travail.
A l’issu de ce projet, nous avons réussi à maintenir deux critères qui sont la performance et la
Haute disponibilité. Il est attendu de cette solution, une amélioration de la surveillance, analyse simple
de la performance système, prédiction des risques, identification proactive, résolution des problèmes
et protection des données contre les pannes.
Les résultats obtenus sont réalistes et raisonnables par rapport à les circonstances de tests, le
temps entre la notification de détection des alertes et données et la visualisation de ces derniers.
47
Chapitre V. Partie Manageriale
Avant de conclure, nous proposerons comme perspectives, d’intégrer des systèmes d’automa-
tisation comme Ansible pour créer des réactions efficiences et rapides.
48
Références bibliographiques
[4] MAZOUZ Omar Abdelhak BENHAGOUGA Nour Ouadjdi . “Développement d’une applica-
tion de supervision du réseau informatique de Nokia en suivant l’approche microservices.”
Mém. de mast. INPTIC, oct. 2020.
[12] hazelcast . Time Series Database. https : / / hazelcast . com / glossary / time - series -
database/.
I
Résumé :
Mots clés : Montoring, Micro services, Docker, Kubernetes, conteneurisation, orchestration, prome-
theuse, grafana.
: ملخص
المراقبة هي بلا شك واحدة من أكثر الأدوات فعالية. زادت كمية البرامج المراد صيانتها.منذ بداية صناعة البرمجيات
. Grafana وPrometheus Kubernetes، Docker، الدافع من هذه الأطروحة هو تقديم منصة حاويات.لصيانة البرامج
كانت هناك حاجة إلى أداة مراقبة جديدة للحصول على رؤية لاستخدام الموارد للخدمات التي تعمل على النظام،لهذا السبب
.الأساسي الجديد
prometheuse, ، التنظيم، الحاويةKubernetes، Docker، ، نهج الخدمات المصغرة،أ المراقبة: كلمات مفتاحية
grafana.
Abstract :
Since the beginning of the software industry. The amount of softwares to maintain has increased. Mo-
nitoring is undoubtedly one of the most effective tools for software maintenance. The motivation for this dis-
sertation is the introduction of the docker-container platform, Kubernetes, prometheus and grafana. Because
of this, a new monitoring tool was needed to gain visibility into the resource usage of services running on the
new platform.