• Aide
  • Eurêkoi Eurêkoi

Livre

Docker : concepts fondamentaux et déploiement d'applications conçues en services

Résumé

Les concepts fondamentaux de la technologie Docker, de la prise en main à la création d'images en passant par la mise en oeuvre des applications découpées en modules ou en microservices, l'aide Kubernetes et de Swarm, les spécificités sous Windows et l'utilisation en conditions industrielles. Des recommandations de bonnes pratiques pour un environnement de production sont également incluses. ©Electre 2022


  • Éditeur(s)
  • Date
    • C 2022
  • Notes
    • La couv. porte en plus : "En téléchargement : code source complet, fichiers Docker Compose, fichiers YAML" ; "Informatique technique" ; "+ quiz" ; "Version en ligne offerte ! pendant 1 an"
    • La 4e de couv. indique : "Le code source complet de l'application exemple (avec les Dockerfile), organisé selon les différentes étapes suivies dans le livre ; les fichiers Docker Compose de déploiement ; les fichiers descriptifs YAML pour Kubernetes"
    • Contient un "flashcode" permettant d'accéder à un contenu via Internet
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (835 p.) : ill. ; 22 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-409-03806-8
  • Indice
    • 681.44 Systèmes d'exploitation Unix, Linux
  • Quatrième de couverture
    • Docker

      Concepts fondamentaux et déploiement d'applications conçues en services

      Ce livre s'adresse aux développeurs, architectes et administrateurs système, ainsi qu'à toute personne désireuse de comprendre les concepts fondamentaux de la technologie Docker, sans entrer dans toutes ses subtilités ni tous ses cas d'usage, pour les mettre en oeuvre dans le déploiement d'applications conçues en services.

      Empreint de toute la pédagogie de l'auteur, ce livre permet au lecteur de se poser les bonnes questions et d'apprendre à être pleinement autonome pour affronter avec un œil critique la masse de conseils disponibles sur Internet afin de trouver la bonne information.

      Après plusieurs chapitres dédiés à la prise en main de Docker, l'auteur transmet les bonnes pratiques d'intégration de Docker sur une application exemple développée avec les technologies Blazor/ASP.NET Core et utilisant des dépendances externes pour les fonctionnalités communes (Keycloak pour l'IAM, Nuxeo pour la GED, RabbitMQ pour le MOM, MongoDB pour la persistance, etc.). Cette architecture en services permettra d'aborder le maximum de situations différentes d'utilisation de Docker.

      Le dernier chapitre est consacré à simuler un déploiement industriel de l'application adaptée à Docker, en utilisant à la fois l'orchestration de conteneurs, avec des exemples sur Swarm et Kubernetes, et une intégration et un déploiement continus avec Azure DevOps.


  • Tables des matières
      • Docker

      • Concepts et déploiement d'applications conçues en services

      • Éditions Eni

      • Avant-propos
      • Chapitre 1
      • Principes fondamentaux
      • 1. Positionnement de Docker19
      • 1.1 La problématique racine19
      • 1.2 Approche par augmentation des ressources physiques20
      • 1.3 Approche par parallélisation des traitements21
      • 1.4 L'approche par virtualisation22
      • 1.5 Tentatives de réduction de la consommation de ressources24
      • 1.6 Comment Docker règle radicalement le problème25
      • 1.7 Positionnement de Docker par rapport à la virtualisation28
      • 1.8 Positionnement de Docker par rapport aux clusters30
      • 1.9 Positionnement de Docker par rapport aux approches de bacs-à-sable32
      • 2. Principe des conteneurs36
      • 2.1 Les apports de Docker36
      • 2.2 Principe des conteneurs industriels37
      • 2.3 Docker et l'approche normalisée38
      • 3. Les fondements de Docker40
      • 3.1 Les technologies Linux clés pour Docker40
      • 3.1.1 Namespaces40
      • 3.1.2 Mise en ouvre d'un namespace41
      • 3.1.3 cgroups43
      • 3.1.4 chroot43
      • 3.2 Autres dépendances du système45
      • 3.2.1 netfilter et iptables45
      • 3.2.2 capabilities46
      • 3.2.3 AppArmor et SELinux46
      • 3.3 Architecture du moteur Docker46
      • 3.3.1 LXC46
      • 3.3.2 libcontainer47
      • 3.3.3 containerd43
      • 3.4 Architectures complémentaires50
      • 3.4.1 rkt50
      • 3.4.2 Container Runtime Interface50
      • 3.4.3 Un foisonnement d'alternatives51
      • 3.5 Système de fichiers en couches51
      • 3.5.1 Principe d'isolation des fichiers51
      • 3.5.2 Approche par virtualisation52
      • 3.5.3 Utilité des systèmes de fichiers en couches53
      • 3.5.4 Gestion des modifications de fichiers54
      • 3.5.5 Dernière couche en écriture55
      • 3.5.6 Technologies utilisées57
      • 4. Les plus de Docker57
      • 4.1 Au-delà du cloisonnement Linux57
      • 4.2 L'approche un conteneur = un processus58
      • 4.3 L'écosystème Docker59
      • 5. Architectures de services60
      • 5.1 Historique des architectures de services61
      • 5.1.1 Principes61
      • 5.1.2 Approche EAI61
      • 5.1.3 Approche SOA61
      • 5.1.4 Microservices62
      • 5.1.5 Lien à l'urbanisation des SI63
      • 5.2 Architecture de microservices63
      • 5.2.1 Principe63
      • 5.2.2 Avantages66
      • 5.2.3 Inconvénients68
      • 5.3 Apport de Docker69
      • 5.4 Fil conducteur70
      • Chapitre 2
      • Installation
      • 1. Éditions et canaux71
      • 1.1 Un standard sous Linux71
      • 1.2 Les canaux72
      • 1.3 Les éditions72
      • 2. Utiliser des machines dans le cloud73
      • 2.1 Amazon AWS73
      • 2.1.1 Offre73
      • 2.1.2 Création de la machine virtuelle76
      • 2.1.3 Accès à la machine virtuelle83
      • 2.1.4 Gestion de la consommation87
      • 2.1.5 Suppression de la machine virtuelle88
      • 2.2 Microsoft Azure90
      • 2.2.1 Offre90
      • 2.2.2 Création de la machine virtuelle91
      • 2.2.3 Accès à la machine virtuelle97
      • 2.2.4 Suppression de la machine virtuelle106
      • 2.3 Google Cloud Platform106
      • 2.3.1 Offre106
      • 2.3.2 Création de la machine virtuelle109
      • 2.3.3 Accès à la machine virtuelle115
      • 2.3.4 Suppression de la machine virtuelle116
      • 3. Installation de Docker118
      • 3.1 Installation de Docker sur Linux118
      • 3.1.1 Prérequis118
      • 3.1.2 Gestionnaires de paquets119
      • 3.1.3 Installation par script119
      • 3.1.4 Cas particulier de l'installation sur Clear Linux120
      • 3.2 Le paradoxe Docker sous Windows123
      • 3.2.1 Des technologies différentes123
      • 3.2.2 Docker et Hyper-V125
      • 3.2.3 L'âge de la maturité125
      • 3.3 L'outil Docker pour Windows126
      • 3.3.1 Outil d'installation126
      • 3.3.2 Choix du canal129
      • 3.3.3 Assistant d'installation130
      • 3.3.4 Mises à jour133
      • 3.3.5 Support natif de conteneurs Linux sous Windows avec WSL 2134
      • 3.3.6 Les nouveautés de Docker Desktop142
      • 3.3.7 Désinstallation146
      • 3.4 Docker pour Windows Server147
      • 3.4.1 Prérequis pour Windows Server 2022147
      • 3.4.2 Installation148
      • 3.4.3 Utilisation de machines préinstallées153
      • 3.4.4 Exécution de conteneurs Linux154
      • 3.4.5 Paramétrage système158
      • 3.5 Utilisation de Docker avec Vagrant159
      • 3.5.1 Principe159
      • 3.5.2 Création d'une machine160
      • 3.5.3 Provisionnement de Docker165
      • 3.5.4 Aménagement de l'accès à la machine165
      • 3.5.5 Connexion à la machine provisionnée168
      • 3.5.6 Poursuite des opérations Vagrant173
      • Chapitre 3
      • Premiers pas avec Docker
      • 1. Hello World, Docker175
      • 1.1 Démarrage d'un conteneur simple175
      • 1.2 Détails des opérations effectuées176
      • 1.2.1 Récupération d'une image176
      • 1.2.2 Identité de l'image178
      • 1.2.3 Taille des images180
      • 1.2.4 Anatomie de l'image Linux182
      • 1.2.5 Anatomie de l'image Windows187
      • 1.2.6 Lancement du processus188
      • 1.2.7 Exécution du processus dans un conteneur189
      • 1.2.8 Opérations suivant l'exécution190
      • 2. Utiliser des images Docker préexistantes193
      • 2.1 Le registre Docker Hub193
      • 2.1.1 Le principe193
      • 2.1.2 Recherche et qualification d'images194
      • 2.1.3 Exemple de recherche197
      • 2.1.4 Cas des images communautaires201
      • 2.1.5 Compléments sur les images officielles204
      • 2.1.6 Recherche par la ligne de commande206
      • 2.1.7 Précautions sur une image non officielle209
      • 2.2 Gestion du compte Docker Hub et dépôts privés214
      • 2.2.1 Création d'un compte214
      • 2.2.2 Caractéristiques du compte216
      • 2.2.3 Automated build217
      • 2.2.4 Connexion au compte en ligne de commande219
      • 2.2.5 Webhook sur événement de push dans Docker Hub220
      • 3. Un second conteneur222
      • 3.1 Récupération de l'image222
      • 3.2 Explication des tags223
      • 3.3 Premier lancement225
      • 3.4 Lancement en mode interactif227
      • 3.5 Persistance des modifications sous forme d'une image229
      • 3.6 Prise en main du client Docker232
      • 3.6.1 Ménage dans les conteneurs232
      • 3.6.2 Ménage dans les images233
      • 3.6.3 Le grand ménage234
      • 3.6.4 Suppression automatique à la sortie235
      • 3.6.5 Affectation d'un nom de conteneur235
      • 3.6.6 Modification du point d'entrée par défaut236
      • 3.6.7 Envoi de variables d'environnement237
      • 3.6.8 Modification du hostname239
      • 3.7 Manipulation des conteneurs240
      • 3.7.1 Lancement en mode bloquant240
      • 3.7.2 Lancement en arrière-plan241
      • 3.7.3 Gestion correcte du cycle de vie des conteneurs246
      • 3.7.4 Exposition de fichiers248
      • 3.7.5 Supervision des conteneurs251
      • 4. Retours sur les premiers pas253
      • Chapitre 4
      • Création et gestion d'images Docker
      • 1. Création manuelle d'une nouvelle image255
      • 1.1 Objectif255
      • 1.2 Approche255
      • 1.3 Difficultés256
      • 1.4 Conclusion256
      • 2. Utilisation d'un fichier Dockerfile257
      • 2.1 Intérêt des fichiers Dockerfile257
      • 2.2 Utilisation d'un fichier Dockerfile261
      • 2.3 Anatomie d'un fichier Dockerfile263
      • 2.3.1 From263
      • 2.3.2 Run264
      • 2.3.3 Env265
      • 2.3.4 Volume266
      • 2.3.5 Copy273
      • 2.3.6 Entrypoint274
      • 2.3.7 Expose275
      • 2.3.8 CMD276
      • 2.4 Notre premier fichier Dockerfile276
      • 2.4.1 Fonctionnalité souhaitée276
      • 2.4.2 Création et test du script277
      • 2.4.3 Création du Dockerfile278
      • 2.4.4 Génération de l'image280
      • 2.4.5 Lancement du conteneur282
      • 2.4.6 Arrêt et relance du conteneur283
      • 2.4.7 Une méthode moins brutale284
      • 2.4.8 Gestion des paramètres285
      • 2.4.9 Reconstruction de l'image et cache287
      • 2.5 Commandes additionnelles288
      • 2.5.1 Gestion des fichiers288
      • 2.5.2 Notion de contexte289
      • 2.5.3 Retours sur l'affectation du processus à démarrer290
      • 2.5.4 Remarque sur le format ligne de commande ou exécution293
      • 2.5.5 Commandes diverses295
      • 3. Partage et réutilisation simple des images298
      • 3.1 Envoi sur votre compte Docker Hub298
      • 3.2 Export et import sous forme de fichiers303
      • 4. Bonnes pratiques304
      • 4.1 Principe du cache local d'images304
      • 4.2 Principe du cache à la compilation309
      • 4.2.1 Retour sur les images intermédiaires309
      • 4.2.2 Anatomie d'une compilation d'image313
      • 4.2.3 Analyse d'une modification du fichier Dockerfile315
      • 4.2.4 Gestion correcte des étiquettes317
      • 4.2.5 Invalidation du cache par modification de l'image de base321
      • 4.2.6 Invalidation du cache par modification du contexte325
      • 4.3 Conséquences sur l'écriture des fichiers Dockerfile327
      • 4.3.1 Le problème sur les opérations non idempotentes327
      • 4.3.2 Contournement du problème de cache330
      • 4.3.3 Effets bénéfiques sur le nombre et la taille des images333
      • 4.3.4 Ordonnancement des commandes dans le fichier Dockerfile335
      • 4.4 Ajout d'une image de cache intermédiaire :335
      • 4.5 Mise en ouvre d'un cache de paquetages337
      • 4.6 Conséquences sur le choix des images de base340
      • 4.6.1 La bonne image de base340
      • 4.6.2 Votre propre image de base342
      • 4.6.3 Adapter l'image de base avec les compilations multi-stage344
      • 4.7 Arborescence recommandée347
      • 4.7.1 Avantage d'une arborescence type347
      • 4.7.2 Intégration des fichiers349
      • 4.7.3 Limitation du contexte351
      • 4.8 La question du processus unique352
      • 4.8.1 Principe général352
      • 4.8.2 Exception au principe général avec Supervisor352
      • 4.8.3 Critique354
      • 4.8.4 Approche intermédiaire354
      • 5. Mise en ouvre d'un registre privé356
      • 5.1 Objectifs356
      • 5.2 Votre registre en complète autonomie357
      • 5.2.1 Image à utiliser357
      • 5.2.2 Lancement du registre358
      • 5.2.3 Utilisation du registre359
      • 5.3 Les limites du mode autonome362
      • 5.3.1 Limites en termes d'utilisation362
      • 5.3.2 Limites en termes de sécurité363
      • 5.3.3 Limites en termes de performance365
      • 5.3.4 Limites en termes de stockage366
      • 5.3.5 Et toutes les autres limitations d'un registre autogéré368
      • 5.4 Utilisation d'un service cloud déjà préparé369
      • 5.4.1 Azuré Container Registry370
      • 5.4.2 Notes finales375
      • 5.5 Approches complémentaires377
      • 5.5.1 L'API du registre377
      • 5.5.2 Mise en place d'un miroir378
      • 6. Incorporation dans le cycle de développement382
      • 6.1 Positionnement de Docker dans une usine logicielle382
      • 6.1.1 Déploiement384
      • 6.1.2 Compilation385
      • 6.1.3 Infrastructure de l'usine logicielle386
      • 6.1.4 Gestion des tests387
      • 6.1.5 Utilisation pour les machines supports de tests389
      • 6.1.6 Registre pour l'ALM390
      • 6.2 Exemple de mise en ouvre391
      • 6.2.1 Choix des outils391
      • 6.2.2 Création du projet392
      • 6.2.3 Analyse du fichier Dockerfile généré397
      • 6.2.4 Prérequis pour l'intégration continue400
      • 6.3 Docker comme une commodité403
      • Chapitre 5
      • Mise en ouvre pratique
      • 1. Présentation de l'application exemple405
      • 1.1 Architecture405
      • 1.2 Création d'un fichier des mots de passe410
      • 1.2.1 Principe de sécurité410
      • 1.2.2 Installation de KeePass410
      • 1.2.3 Création du fichier de sécurité411
      • 1.2.4 Remplissage du fichier de mots de passe416
      • 1.3 Mise en place des certificats de sécurité418
      • 1.3.1 Certificat racine419
      • 1.3.2 Certificat client423
      • 1.4 Prérequis427
      • 1.5 Paramétrage427
      • 1.5.1 Paramétrage de l'IAM428
      • 1.5.2 Paramétrage de RecepteurMessages435
      • 1.5.3 Paramétrage du projet API437
      • 1.5.4 Autres projets438
      • 1.5.5 Paramétrage de la solution440
      • 1.6 Première utilisation441
      • 1.6.1 Scénario nominal de test441
      • 1.6.2 Persistance445
      • 1.6.3 Observation des documents446
      • 1.7 Utilité447
      • 1.8 Principes à l'ouvre448
      • 1.8.1 Un mot sur les architectures de services448
      • 1.8.2 Lien avec la programmation SOLID448
      • 2. Adaptation à Docker de l'application exemple449
      • 2.1 Préparation de l'environnement449
      • 2.2 Principes de construction450
      • 2.3 Détails du service RecepteurMessages451
      • 2.3.1 Fonctionnement451
      • 2.3.2 Construction du fichier Dockerfile de base453
      • 2.3.3 Classification du support des paramètres457
      • 2.3.4 Cas particulier des paramètres de sécurité460
      • 2.3.5 Modification du projet pour gestion des paramètres460
      • 2.3.6 Évolution du fichier Dockerfile465
      • 2.4 Lancement de RecepteurMessages en mode Docker468
      • 2.4.1 Compilation469
      • 2.4.2 Test de lancement470
      • 2.4.3 Conteneurs en réseau472
      • 2.4.4 Utilisation d'un volume pour pointer sur le certificat474
      • 2.5 Adaptation de Visual Studio475
      • 2.5.1 Paramétrage du projet en mode Docker475
      • 2.5.2 Tests d'intégration480
      • 2.5.3 Publication intégrée482
      • 2.6 Retour sur le problème de secret483
      • 2.6.1 Approche simpliste par variable d'environnement484
      • 2.6.2 Gestion des secrets dans Docker485
      • 2.6.3 Mise en place du fichier pour Docker Compose487
      • 2.6.4 Mise en place de la trace de diagnostic489
      • 2.6.5 Description du problème d'ordonnancement491
      • 2.6.6 Validation du fonctionnement en mode Docker493
      • 2.7 Problème des paramètres liés à XKCD494
      • 2.8 Traitement du projet API496
      • 2.8.1 Passage en mode Docker du projet496
      • 2.8.2 Classification des paramétrages disponibles497
      • 2.8.3 Ajustement du fichier Dockerfile499
      • 2.8.4 Ajout des valeurs pour les paramètres499
      • 2.8.5 Mise à jour du fichier Docker Compose500
      • 2.8.6 Correction paramétrage d'appel du service API501
      • 2.8.7 Test du projet en mode Docker503
      • 2.9 Traitement du projet Server503
      • 2.9.1 Passage en mode Docker du projet504
      • 2.9.2 Classification des paramètres disponibles505
      • 2.9.3 Ajustement du fichier Dockerfile505
      • 2.9.4 Ajout des valeurs pour les paramètres506
      • 2.9.5 Mise à jour du fichier Docker Compose507
      • 2.10 Cas particulier des paramètres du projet Client508
      • 2.11 Test de l'application passée en Docker508
      • 2.11.1 Principe508
      • 2.11.2 Débogage du problème de volume509
      • 2.11.3 Débogage du problème de nom de serveur RabbitMQ515
      • 2.11.4 Débogage du problème d'accès à l'IAM518
      • 2.11.5 Débogage du chargement des personnes523
      • 2.11.6 Débogage de l'authentification serveur526
      • 2.12 État atteint530
      • Chapitre 6
      • Orchestration par Docker Compose
      • 1. Redéployer automatiquement avec Docker Compose533
      • 1.1 Principe de Docker Compose533
      • 1.2 Écriture du fichier docker-compose.yml535
      • 1.2.1 Remarques préliminaires535
      • 1.2.2 Préparation du squelette du fichier536
      • 1.2.3 Mise en place des dépendances externes536
      • 1.2.4 Ajout de la détection de statut des services539
      • 1.2.5 Inclusion du projet RecepteurMessages542
      • 1.2.6 Ajout du projet API545
      • 1.2.7 Finalisation avec le projet Server547
      • 1.3 Mise en ouvre548
      • 1.3.1 Exclusion du mode HTTPS548
      • 1.3.2 Premier lancement549
      • 1.3.3 Retour sur le problème d'authentification551
      • 1.3.4 Tentative de résolution par le réseau hôte553
      • 1.3.5 Stratégie d'externalisation de l'IAM555
      • 1.4 Mise en ouvre avec IAM externalisée556
      • 1.4.1 Préparation d'une machine dans le cloud556
      • 1.4.2 Ajout de Docker dans Clear Linux559
      • 1.4.3 Préparation de l'application Keycloak complète561
      • 1.4.4 Passage de Keycloak en HTTPS563
      • 1.4.5 Ajout de la persistance pour la configuration Keycloak567
      • 1.4.6 Gestion de la robustesse par un service Linux572
      • 1.4.7 Ajustement de l'application exemple577
      • 1.4.8 Test final577
      • 1.5 Débogages complémentaires du mode Docker Compose579
      • 1.5.1 Astuce préliminaire579
      • 1.5.2 Gestion de la génération de PDF en mode Linux580
      • 1.5.3 Intégration des polices pour la génération de PDF580
      • 1.5.4 Exposition différenciée des ports de la GED582
      • 1.5.5 Exposition en HTTPS du projet API583
      • 1.5.6 Passage de l'appel d'API en HTTPS584
      • 1.5.7 Ménage dans les paramètres585
      • 2. Fonctionnalités supplémentaires de Docker Compose589
      • 2.1 Retour sur la gestion des conteneurs589
      • 2.2 Parallélisation des traitements590
      • 2.3 Autre avantage de l'approche par conteneurs592
      • 2.4 Limites de l'application exemple594
      • 2.5 Intégration dans Visual Studio595
      • 2.5.1 Argumentaire595
      • 2.5.2 Mise en oeuvre597
      • 2.5.3 Gestion des profils de lancement600
      • 3. Exploitation d'une infrastructure Docker601
      • 3.1 Le réseau dans Docker601
      • 3.1.1 Mode de fonctionnement standard (bridge)601
      • 3.1.2 Modes de fonctionnement alternatifs604
      • 3.1.3 Support des liens entre conteneurs606
      • 3.1.4 Gestion des réseaux overlay608
      • 3.1.5 Alias préinstallés612
      • 3.2 Les volumes Docker613
      • 3.2.1 Le problème de la persistance613
      • 3.2.2 Les volumes comme solution simple613
      • 3.2.3 Lien direct sur un répertoire local615
      • 3.2.4 Partage de volumes616
      • 3.2.5 Gestion des volumes orphelins617
      • 3.2.6 Sophistication de l'approche618
      • 3.2.7 Application à la gestion des logs618
      • 3.2.8 Volumes déclarés619
      • 3.2.9 Plugins pour la gestion avancée des volumes620
      • 4. Exemples de fichier Dockerfile pour d'autres plateformes621
      • 4.1 Java622
      • 4.1.1 Image Java622
      • 4.1.2 Image openjdk623
      • 4.1.3 Image Maven623
      • 4.2 PHP626
      • 4.2.1 Mode ligne de commande626
      • 4.2.2 Mode serveur web627
      • 4.3 Node.js628
      • 4.4 Go628
      • 4.5 Python629
      • 4.6 Un mot sur les DevContainers630
      • Chapitre 7
      • Déploiement en cluster par une usine logicielle
      • 1. Le besoin d'orchestration633
      • 1.1 Objectif633
      • 1.2 Approche théorique636
      • 1.2.1 La problématique de montée en charge636
      • 1.2.2 La solution découplée638
      • 1.2.3 Conséquences sur l'approche initiale639
      • 1.3 Lien aux microservices640
      • 1.3.1 Orchestration des services640
      • 1.3.2 Elasticité641
      • 1.3.3 Robustesse641
      • 1.4 Fonctionnement pratique642
      • 1.4.1 Notion de réseau642
      • 1.4.2 Les différents types de nouds643
      • 1.4.3 Fonctionnalités du cluster644
      • 2. L'approche Docker Swarm644
      • 2.1 Gestion du cluster Swarm645
      • 2.1.1 Prérequis645
      • 2.1.2 Alternative aux prérequis646
      • 2.1.3 Initialisation649
      • 2.1.4 Liaison des agents652
      • 2.1.5 Ajout d'un manager655
      • 2.1.6 Les limites à l'ajout de managers657
      • 2.1.7 Promotion d'un noud659
      • 2.1.8 Suppression d'un noud660
      • 2.2 Test du cluster avec un cas simple663
      • 2.3 Déploiement manuel sur le cluster Swarm667
      • 2.3.1 Application exemple667
      • 2.3.2 Préparation des images668
      • 2.3.3 Lancement des services669
      • 2.3.4 Premier test674
      • 2.3.5 Mise en place d'un réseau overlay dédié675
      • 2.3.6 Validation du fonctionnement677
      • 2.3.7 Passage à l'échelle679
      • 2.3.8 Suppression des ressources déployées681
      • 2.4 Déploiement de l'application microservices681
      • 2.4.1 Récupérer l'application exemple681
      • 2.4.2 Le retour partiel de Docker Compose682
      • 2.4.3 Détail du vocabulaire682
      • 2.4.4 Compilation éventuelle des images684
      • 2.4.5 Lancement par Docker Compose686
      • 2.4.6 Déploiement d'une stack686
      • 2.4.7 Autres avertissements possibles690
      • 2.4.8 Diagnostic et validation du fonctionnement691
      • 2.4.9 Mise au point du déploiement698
      • 2.4.10 Utilisation de l'ingress703
      • 2.4.11 Déploiement de l'IAM sur Docker Swarm705
      • 2.4.12 Ajustement de la stack applicative708
      • 2.4.13 Débogage du service de traitement des messages711
      • 2.5 Considérations additionnelles715
      • 2.5.1 Provenance des images715
      • 2.5.2 Passage à l'échelle716
      • 2.5.3 Mise à jour des images717
      • 2.5.4 Gestion des contraintes720
      • 2.5.5 Arrêt de la stack721
      • 3. Outils avancés d'exposition723
      • 3.1 Traefik723
      • 3.1.1 Utilité723
      • 3.1.2 Lancement723
      • 3.1.3 Mise en ouvre sur l'application exemple725
      • 3.1.4 Vérification du fonctionnement727
      • 3.2 Caddy730
      • 3.2.1 Présentation730
      • 3.2.2 Réunification des stacks730
      • 3.2.3 Remplacement de Traefik par Caddy731
      • 3.2.4 Exposition simpliste pour test732
      • 3.2.5 Ajout d'un fichier de configuration735
      • 3.2.6 Modifications complémentaires736
      • 3.2.7 Conclusion sur Caddy737
      • 4. Introduction à Kubernetes738
      • 4.1 Positionnement738
      • 4.2 Comparaison avec Docker Swarm739
      • 4.3 Concepts740
      • 4.3.1 Pods740
      • 4.3.2 Namespaces741
      • 4.3.3 Services741
      • 4.3.4 IngressController741
      • 4.3.5 Volumes742
      • 4.3.6 ConfigMap743
      • 4.3.7 Deployment744
      • 4.4 Installation745
      • 4.4.1 Choix de la méthode745
      • 4.4.2 Création d'un cluster AKS746
      • 4.4.3 Paramétrage de l'accès au cluster749
      • 4.4.4 Accès au cluster751
      • 4.5 Premier déploiement par ligne de commande752
      • 4.5.1 Contexte752
      • 4.5.2 Création du déploiement752
      • 4.5.3 Vérification du déploiement753
      • 4.5.4 Présence d'un pod753
      • 4.5.5 Exposition par un service754
      • 4.5.6 Test de l'application755
      • 4.5.7 Nettoyage756
      • 5. Intégration et déploiement continus757
      • 5.1 Approche757
      • 5.2 Intégration continue de l'application exemple758
      • 5.2.1 Création du projet Azuré DevOps758
      • 5.2.2 Création d'un pipeline de compilation pour le projet Server.759
      • 5.2.3 Correction du problème de compilation769
      • 5.2.4 Remarques sur l'intégration des plateformes773
      • 5.3 Déploiement de l'application microservices774
      • 5.3.1 Objectifs774
      • 5.3.2 Création du namespace774
      • 5.3.3 Notion de fichier descriptif775
      • 5.3.4 Mise en place de l'ingress778
      • 5.3.5 Application au service Server781
      • 5.3.6 Gestion des paramètres784
      • 5.3.7 Déploiement du service GED786
      • 5.3.8 Gestion des secrets sous forme de fichiers788
      • 5.3.9 Digression sur la gestion des images791
      • 5.3.10 Retour sur la gestion des secrets793
      • 5.3.11 Gestion des secrets sous forme de chaînes794
      • 5.3.12 Gestion du healthcheck795
      • 5.3.13 Débogage des démarrages suspendus797
      • 5.3.14 Retour sur le ConfigMap798
      • 5.3.15 Gestion d'une application en mode console799
      • 5.3.16 Démarrage à l'échelle800
      • 5.3.17 Ajustement du DNS du service801
      • 5.3.18 Cas particulier de l'IAM801
      • 5.3.19 Gestion des consommations de ressources802
      • 5.3.20 Remarques sur les labels802
      • 5.3.21 Gestion des volumes803
      • 5.3.22 Lancement d'un seul coup803
      • 5.3.23 Arrêt de l'application805
      • 5.4 Déploiement continu avec Azuré DevOps805
      • 5.4.1 Objectif805
      • 5.4.2 Mécanisme utilisé806
      • 5.4.3 Paramétrage dans Azuré DevOps807
      • 5.4.4 Ménage814
      • 5.5 Fonctionnalités supplémentaires d'usine logicielle814
      • 5.5.1 Scan des images815
      • 5.5.2 Software Bill Of Material817
      • 5.5.3 Pour aller plus loin avec Kubernetes819
      • 6. Azure Container Instances819
      • 6.1 Principe819
      • 6.2 Préparation d'une image819
      • 6.3 Lancement du conteneur820
      • 6.4 Correction de l'erreur et relance823
      • 6.5 Coût et effort826
      • Index829

  • Origine de la notice:
    • Electre
  • Disponible - 681.44 GOU

    Niveau 3 - Informatique