Vous êtes sur la page 1sur 115

Pipeline et outils DevOps

1
Plan
1. Introduction
2. Pratiques DevOps
3. Conteneurisation dans DevOps
4. Cloud platforme
5. Outils DevOps
6. Conclusion

2
Pratiques DevOps
1. Développement logiciel Agile
2. Intégration continue (CI) et livraison continue (CD)
3. Infrastructure en tant que code (Infrastructure as Code ou IaC)
4. Contrôle de version
5. Gestion de configuration
6. Surveillance continue
7. Micro-services

3
Développement Agile
1. met l’accent sur la collaboration entre les équipes,
2. une plus grande adaptabilité aux demandes changeantes
3. le retour d’information des utilisateurs et des cycles de publication
plus courts.
4. Example de frameworks Scrum.

4
CI &CD
1. les développeurs fusionnent ou intègrent fréquemment les
modifications du code
2. comprend des tests automatisés qui s’exécutent chaque fois qu’un
nouveau code est introduit
3. la livraison continue implique le déploiement automatisé des
versions du logiciel dans l’environnement de production choisi.
4. Les équipes DevOps peuvent permettre des mises à jour plus
fréquentes grâce au déploiement automatisé
5. réduire le nombre de problèmes survenant lors du déploiement
6. Exemples : Jenkins

5
Infrastructure en tant que code (IaC)
1. IaC définit les topologies et les ressources du système pour permettre
la gestion des ressources pendant la phase de code de manière fiable
et contrôlée
2. Permet de stocker et versionner ces définitions dans un système de
contrôle de version
3. Permet de réviser et revenir en arrière rapidement
4. réduire les erreurs humaines dans les environnements de production
complexes.

6
Contrôle de version
1. Le contrôle de version implique la gestion des codes en plusieurs
versions avec des révisions et un historique des modifications, de
sorte qu’il devient facile de revoir les codes et de les récupérer.
2. Aide à collaborer plus efficacement, à stocker le code en toute
sécurité et à répartir les tâches entre les membres de l’équipe
3. fusionner les modifications, à gérer facilement les conflits et à
annuler les modifications du code si nécessaire
4. Exemple : GiT

7
Contrôle de version
1. Le contrôle de version implique la gestion des codes en plusieurs
versions avec des révisions et un historique des modifications, de
sorte qu’il devient facile de revoir les codes et de les récupérer.
2. Aide à collaborer plus efficacement, à stocker le code en toute
sécurité et à répartir les tâches entre les membres de l’équipe
3. fusionner les modifications, à gérer facilement les conflits et à
annuler les modifications du code si nécessaire
4. Exemple : GiT

8
Gestion de configuration
1. La gestion des ressources système : les serveurs, les bases de données et
les machines virtuelles
2. aide à déployer les modifications de manière systématique et contrôlée
3. suivre l’état du système et prévenir les dérives de configuration qui peuvent
conduire à l’instabilité.
4. gestion de la configuration avec IaC afin que la configuration et la définition
du système soient automatisées sans effort
5. permet aux équipes d’exploiter des environnements de production
complexes avec évolutivité.
6. Exemples : Chef, Ansible, etc.

9
Surveillance continue
1. obtenir une visibilité complète en temps réel de la santé et des
performances de l’ensemble de votre pile d’applications, de
l’infrastructure aux composants logiciels haut de gamme.
2. aide à déployer les modifications de manière systématique et
contrôlée
3. comprend les métadonnées, la télémétrie (journaux d’événements et
données) et les alertes pour un ensemble de conditions prédéfinies
4. trouver des moyens d’améliorer la qualité des logiciels lors des
prochains cycles de développement en utilisant les informations
recueillies.

10
Microservice
1. architecture efficace pour construire une application en plusieurs petits services basée sur
API REST.
2. Ils peuvent supprimer des points de défaillance uniques (SPOFs1 : single point of failure ) en
garantissant que les problèmes dans un service ne se bloquent pas ou affectent d’autres
parties d’une application.
3. peuvent être mis à l’échelle indépendamment pour fournir une disponibilité et une capacité
supplémentaires.
4. Les équipes DevOps peuvent étendre les fonctionnalités en ajoutant de nouveaux
microservices sans affecter inutilement d’autres parties de l’application.

1 est un point d'un système informatique dont le reste du système est dépendant et dont une panne entraîne l'arrêt complet du
système.

11
Exemple d’architecture

12
Exemple de type de fichier de configuration

13
14
Conteneurisation dans DevOps

1. Qu'est-ce que la conteneurisation ?


2. Comment fonctionne la technologie de conteneurisation ?
3. Conteneurisation vs virtualisation
4. Couches de conteneurisation
5. Les avantages de la conteneurisation

15
Qu'est-ce que la conteneurisation ?
1. La conteneurisation est une sorte de virtualisation du système d'exploitation dans
laquelle tous les composants de l'application sont regroupés dans un espace isolé
sur la machine virtuelle appelé conteneurs.
2. Les conteneurs sont petits, portables et faciles à exécuter ou à configurer.
3. Lorsqu'un développeur conteneurise une application, le conteneur est séparé du
système d'exploitation hôte et a un accès limité aux ressources du système.
4. La conteneurisation se concentre sur la décomposition des systèmes d'exploitation
en morceaux qui peuvent être utilisés plus efficacement en ayant leur système
d'exploitation
5. La conteneurisation permet aux entreprises de virtualiser le système d'exploitation
et d'installer des applications dans des régions isolées appelées conteneurs.
6. L'application conteneurisée peut s'exécuter sur différentes infrastructures, le cloud
ou les machines virtuelles, sans avoir à être réécrite.
16
Comment fonctionne la conteneurisation ?

1. En mettant tous les éléments dont une application a besoin dans une seule unité
virtuelle.
2. La conteneurisation permet aux développeurs de regrouper le code de l'application
avec ses fichiers de configuration, ses dépendances et ses bibliothèques.
3. L'emballage permet au conteneur d'être autonome et portable, de sorte qu'il peut
fonctionner sans problème sur n'importe quelle plate-forme ou cloud
4. Les conteneurs n'utilisent pas directement les ressources matérielles ou du noyau
qui sont virtualisées.
5. les conteneurs s'exécutent "au-dessus" d'une plate-forme spécialement conçue pour
gérer les conteneurs et masquer les ressources sous-jacentes et permettent
également l'exécution d'une même application dans différents contextes

17
Conteneurisation vs virtualisation
1. Dans la virtualisation des serveurs, le matériel
est caché et un système d'exploitation est
exécuté dessus.
2. La conteneurisation est un moyen d'exécuter
une application sur un système d'exploitation.
3. La virtualisation dépend du système
d'exploitation hôte sous-jacent mais ne se
soucie pas du matériel à moins qu'il ne
dispose de suffisamment de ressources.

18
Conteneurisation vs virtualisation
Pour les La conteneurisation Virtualisation
Les conteneurs sont fournis avec un La virtualisation est construite au-dessus de l'hôte,
Environnement système d'exploitation qui s'exécute dans séparé par le système d'exploitation apparaît comme
plusieurs environnements. une machine.

Démarrage Les conteneurs prennent très peu de temps Les machines virtuelles mettent quelques minutes à
au démarrage. démarrer.

Les machines virtuelles sont gourmandes en


Il s'agit d'un environnement minuscule qui
Ressource ressources et n'ont aucune capacité de mise à
n'est pas du tout gourmand en ressources.
l'échelle.

Les conteneurs rendent le système


Le matériel sous-jacent est virtualisé par des
Implémentation d'exploitation virtuel (utilisation du même
hyperviseurs (utilisation du même matériel).
OS).

Ce sont des factures coûteuses et lourdes à payer aux


Plus facile et peu coûteux à mettre en
Coût fournisseurs de cloud en fonction de la taille de la
œuvre.
machine.
19
20
Les couches de conteneurisation

1. Infrastructure matérielle : Pour que les conteneurs fonctionnent


correctement, ces ressources doivent être présentes. Ils peuvent
être exécutés sur un ordinateur portable ou dans l'un des
nombreux centres de données connectés au cloud
2. Système d'exploitation hôte : après la couche matérielle vient la
couche du système d'exploitation hôte
3. Le moteur de conteneur : logiciel installé au-dessus du SE hôte est
responsable de la virtualisation des ressources requises par les
applications conteneurisées. Il garantit que le conteneur est
opérationnel et gère son cycle de vie global.
4. Conteneurs : morceaux de code qui incluent toutes les
bibliothèques, les fichiers binaires et les paramètres de
configuration dont une application a besoin pour s'exécuter,
appelés conteneurs Docker.

21
Les avantages de la conteneurisation
1. Portabilité : Les mêmes images de conteneur, y compris les dépendances, peuvent être exécutées partout
avec la conteneurisation.
2. Rapidité : Les conteneurs sont plus rapides que les VM
3. Économe en ressources: Les conteneurs (mégaoctets) sont plus efficaces que les VM (gigaoctets) car ils
n'incluent que des fichiers spécifiques à l'application.
4. Simplicité de déploiement-développement: les applications conteneurisées sont rapides, petites et
faciles à déployer portables utilisés n'importe où
5. Dépannage : La conteneurisation isole et sépare les applications. La défaillance d'un conteneur n'affecte
pas la fonctionnalité des autres.
6. Sécurité: des autorisations de sécurité spécifiées sont définies pour empêcher les composants
indésirables d'entrer dans d'autres conteneurs ou limiter les communications
7. Manageabilité : automatiser les charges de travail et les services conteneurisés à l'aide d'un conteneur
orchestration (Kubernetes). L'orchestration des conteneurs simplifie les tâches administratives, la
publication, la mise à l'échelle des programmes conteneurisés, ainsi que la surveillance, la journalisation
et le débogage.
8. Continuité: La défaillance d'un conteneur n'affectera pas les autres. Les développeurs peuvent réparer un
conteneur sans affecter les autres. La conteneurisation garantit la continuité opérationnelle.

22
Les outils DevOps

1. Les outils de gestion de code source (SMC) : Git


2. Construction du code (BC)
3. Les tests
4. Intégration continue : Jenkins
5. Déploiement et gestionnaires de configuration : Ansible
6. Monitoring et alerting
7. Conteneurisation Docker

23
24
25
Les outils DevOps

26
27
28
29
30
31
32
33
34
Code Management
GIT

35
36
37
38
39
40
41
42
43
44
Integrate & Deploy
Jenkins

45
Jenkins
• Jenkins est un outil open source de serveur d'automatisation. Il aide à
automatiser les parties du développement logiciel liées au build,
aux tests et au déploiement, et facilite l'intégration continue et
la livraison continue. Écrit en Java, Jenkins fonctionne dans
un conteneur de servlets tel qu’Apache Tomcat, ou en mode
autonome avec son propre serveur Web embarqué.
• Il s'interface avec des systèmes de gestion de versions tels
que CVS, Git et Subversion, et exécute des projets basés sur Apache
Ant et Apache Maven

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Operate :
Contenterisation
Docker, Kubernetes

67
Docker
• Docker a été créé pour les besoins d'une société de Platform as a Service
(PaaS) appelée DotCloud.
• En mars 2013, l'entreprise a créé une nouvelle structure nommée Docker
Inc et a placé en open source son produit Docker.
• un conteneur ne doit faire tourner qu'un seul processus.
• dans le cas d'une stack LAMP (Linux, Apache, MySQL, PHP), nous devons
créer 3 conteneurs différents, un pour Apache, un pour MySQL et un
dernier pour PHP
• Docker est utilisé par de très nombreuses sociétés pour différents usages.
Ainsi, un des premiers usages de Docker se trouve dans la création
d'environnements locaux

68
Docker

• Docker est une technologie open source, et un format de fichier


conteneur, pour l’automatisation du déploiement d’applications sous
forme de conteneurs portables, autonomes, pouvant s’exécuter dans
le cloud ou en local.
• Docker comprend le moteur Docker, un environnement runtime. Il
permet de créer et d’exécuter des conteneurs sur n’importe quelle
machine de développement, puis de stocker ou de partager des
images conteneur via un registre de conteneurs comme Docker Hub
ou Azure Container Registry.

69
70
Architecture Docker

71
72
73
74
75
76
77
78
79
80
Kubernetes

81
Kubernetes
• Kubernetes est un système open source qui vise à fournir une « plate-
forme permettant d'automatiser le déploiement, la montée en charge
et la mise en œuvre de conteneurs d'application sur des clusters de
serveurs »

• K8s est l'abbréviation dérivée par le remplacement des 8 lettres


"ubernete" par "8"

82
Kubernetes
• Kubernetes est un logiciel d’orchestration open source qui fournit une API
pour contrôler le mode et l’emplacement d’exécution de ces conteneurs. Il
permet d’exécuter vos conteneurs Docker et charges de travail, et vous aide
à faire face à certaines complexités opérationnelles lors de la mise à
l’échelle de plusieurs conteneurs, répartis sur plusieurs serveurs.
• Kubernetes permet d’orchestrer un cluster de machines virtuelles et de
planifier l’exécution des conteneurs sur ces machines virtuelles en fonction
de leurs ressources de calcul et des besoins de chaque conteneur. Les
conteneurs sont regroupés dans des pods, l'unité opérationnelle de base
de Kubernetes. Ces conteneurs et pods peuvent être adaptés à l’état
souhaité et vous pouvez gérer leur cycle de vie pour assurer la bonne
exécution de vos applications.

83
Pod
• Les pods sont les objets déployables qui constituent les plus petits
composants essentiels de Kubernetes. Un pod représente une
instance unique d'un processus en cours d'exécution dans votre
cluster.
• Les pods contiennent un ou plusieurs conteneurs tels que des
conteneurs Docker.
• Un pod est conçu pour exécuter une seule instance de votre
application sur votre cluster
• ce pod : En attente, En cours d'exécution, Réussite, Échec Inconnu
(utilisez la commande kubectl get pod )

84
85
86
87
88
89
90
Docker vs Kubernetes

• À mesure que les applications s'étendent sur plusieurs conteneurs déployés


sur plusieurs serveurs, leur utilisation se complexifie.

• Comment coordonner et planifier un nombre important de conteneurs ?


Comment les différents conteneurs au sein de votre application
communiquent-ils entre eux ? Comment mettre à l’échelle un nombre
important d’instances de conteneur ? C’est là qu’intervient Kubernetes.
• Kubernetes et Docker sont des technologies fondamentalement
différentes qui fonctionnent bien ensemble pour créer, déployer et mettre
à l’échelle des applications conteneurisées.

91
Docker vs Kubernetes

92
93
Operate
ANSIBLE

94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

Vous aimerez peut-être aussi