Introduction
Cibles et objectifs de l’ouvrage
Kubernetes est un logiciel particulièrement complexe qui réclame énormément de connaissances aussi bien en administration système qu’en développement.
Pour autant, ce livre ne devrait pas vous réclamer de connaissances particulières. Néanmoins, certains prérequis seront un plus pour mieux comprendre les exemples présentés, et notamment :
-
des notions sur l’administration système Linux (installation de paquets, téléchargement de binaires, utilisation de sudo) ;
-
la connaissance (même minimale) d’un fournisseur d’informatique dans les nuages (Azure, Google ou AWS) ;
-
le principe de fonctionnement des couches réseau/HTTP (DNS, répartiteur de charge, proxy inverse) ;
-
des notions sur l’utilisation de Git (cloner un dépôt de code source).
Prérequis techniques et ressources documentaires
1. Prérequis techniques
Afin de pouvoir dérouler tous les exemples présents dans ce livre, vous devez être en mesure d’installer des machines virtuelles. À défaut, vous pouvez vous tourner vers l’utilisation d’un prestataire de services informatiques dans les nuages.
Dans tous les cas, il est souhaitable que vous soyez administrateur de votre poste.
2. Ressources documentaires
Ce livre contient énormément d’exemples vous permettant de vous mettre en situation :
-
déploiement d’application web ;
-
déploiement de base de données ;
-
mise en place de surveillance avec Prometheus.
Le code source de ces exemples est disponible dans un dépôt GitHub à l’adresse suivante : https://github.com/EditionsENI/kubernetes
Il est également disponible en téléchargement depuis l’onglet Compléments sous la forme d’archive tar.gz.
L’écosystème gravitant autour de Kubernetes est une cible mouvante. N’hésitez pas à vous rendre dans le dépôt GitHub du livre et à consulter les tickets ouverts et, le cas échéant, d’en ouvrir un si le problème n’aurait pas encore été traité.
N’hésitez pas non plus à consulter les ressources documentaires du projet afin de vous tenir au courant des dernières évolutions : https://kubernetes.io/fr/docs/home/
La racine des dépôts GitHub du projet constitue également un bon point d’entrée : https://github.com/kubernetes
3. Récupération des fichiers d’exemples
Le dépôt GitHub du livre est consultable à l’adresse suivante : https://github.com/EditionsENI/kubernetes
Chaque chapitre dispose de son propre répertoire. Chaque répertoire contient les fichiers de tous les exemples utilisés dans un chapitre.
Vous pouvez consulter directement ces exemples dans un navigateur en allant sur GitHub ou en récupérant...
Présentation générale
Ce livre est une troisième édition et est constitué de 26 chapitres. Chaque chapitre présente une fonctionnalité spécifique de Kubernetes. L’ordre des chapitres se veut naturel (même si certains chapitres peuvent être sautés) et vous permet de partir dans un premier temps sur une utilisation de Kubernetes pour ensuite vous acheminer vers la mise en place de toutes les briques indispensables à un cluster de production.
L’essentiel des exemples de ce livre ont été élaborés sur une machine Linux faisant tourner une version d’Ubuntu 24.04 LTS. La plupart des exemples du livre s’appuient sur une version récente de Minikube. Des tests ont également été réalisés sur les fournisseurs suivants : Google, Azure, Amazon et OVH.
1. Prérequis
Le chapitre Installation de l’environnement Kubernetes est une introduction qui vous propose d’installer certains outils indispensables au déroulement des différents exemples. Le chapitre contient également une petite introduction au langage YAML.
2. Utilisation de Kubernetes
Une fois le cluster installé, les chapitres Tableau de bord et ligne de commande, Automatisation et publication d’une application et Cycle de vie d’un conteneur dans Kubernetes permettent de se familiariser avec les concepts propres à Kubernetes, comme par exemple la notion de pod, de déploiement, la notion de service ainsi que le cycle de vie d’un pod.
Les chapitres Persistance des données, Hébergement d’application en cluster et Mise en place d’une réplication entre pods introduisent des notions plus avancées comme par exemple la persistance de données, mais également la mise en place de réplication entre plusieurs pods (notamment avec un exemple utilisant la base de données MySQL/MariaDB).
Enfin, les chapitres Gestion des briques internes de Kubernetes, Helm - Gestionnaire de package et Contextes et outils tiers Kubernetes permettent de découvrir les briques internes de Kubernetes, le gestionnaire de paquets Helm et enfin quelques outils d’administration et de sécurité.
3. Installation et configuration de Kubernetes
Les chapitres Services managés Kubernetes et Installation de Kubernetes en interne ont pour but de vous aider à mettre en place un cluster, que ce soit sur un service managé (Google, Microsoft ou Amazon) ou un cluster hébergé (on premise).
Les chapitres Exposition des applications sur Internet et Sécurisation : accès aux applications sont là pour expliquer comment exposer une application sur Internet (ou, du moins, sur l’extérieur du cluster pour des accès intranet ou extranet).
4. Extension du cluster Kubernetes et notions avancées
Les chapitres Polices réseau et Maillage de services sont consacrés à la sécurisation des accès internes du cluster ainsi qu’au chiffrement des communications entre services.
Le chapitre Montée en charge automatique introduit la montée en charge d’une application ainsi qu’une présentation sur les différents types de machines présentes dans le cloud. Les chapitres Surveillance à l’aide de Prometheus et Centralisation des journaux d’activité sont consacrés à la surveillance des applications ainsi qu’à la centralisation des journaux d’activités.
Le chapitre Maillage de services offre une introduction au maillage de services et propose une présentation d’Istio ainsi que du mécanisme d’API Gateway.
Le chapitre Restriction et délégation d’accès présente le mécanisme d’authentification et d’autorisations des administrateurs Kubernetes ainsi que la mise en place de restrictions sur la consommation de ressources.
Enfin, le chapitre Les opérateurs Kubernetes présente la notion d’opérateur. Il s’agit d’un mécanisme d’extension des capacités de Kubernetes pour simplifier la création de ressources complexes (base de données, serveurs d’applications, etc.).
5. Déploiement et intégration continue
Les chapitres Compilation et stockage d’image Docker, Usine logicielle et Packager son application avec Helm sont consacrés à la gestion de l’applicatif en lui-même :
-
Comment créer une image de conteneur ?
-
Comment mettre à jour une image automatiquement ?
-
Comment déployer une application à l’aide de Helm ?
6. Conventions utilisées
Les conventions suivantes sont employées dans le livre :
Caractères à chasse fixe : utilisés pour les exemples de code dans le texte.
Nom-de-fichier-en-gras.yaml : utilisés pour signaler que le fichier est disponible au téléchargement dans le répertoire associé au chapitre.
Les instructions précédées par un $ désignent...