L'objectif de cette série d'exercices est d'apprendre à démystifier Kubernetes (K8s) en s'intéressant aux concepts fondamentaux de cet orchestrateur. Nous commencerons par expliquer comment créer un cluster K8s sur son poste de développeur afin de pouvoir manipuler les concepts tels que les Pods
, les Deployments
, les Services
et les Volumes
.
Ci-dessous sont détaillés les exercices de ce tutoriel :
- préparer son environnement d'orchestration K8s : différentes configurations sont détaillées (avec K3d pour créer un cluster K8s avec Docker ou avec K3s pour créer un cluster K8s depuis des machines virtuelles voir physiques) ;
- créer un premier
Pod
et manipuler son environnement d'orchestration K8s : créer et déployer une représentation logique de conteneurs en écrivant un fichier de configuration basé sur un objetPod
puis utiliser les outils kubectl et K9s ; - créer et déployer une représentation logique de
Pods
: créer unDeployment
et gérer la montée en charge desPods
(ReplicaSets
) ; - communiquer avec les Pods : créer et déployer des services de type
ClusterIP
etNodePort
; - communiquer avec les Pods via des règles de routage : créer et déployer un objet de type
Ingress
; - conserver les données : créer des volumes et des volumes persistants (
PersistentVolume
etPersistentVolumeClaim
).
Buts pédagogiques : mettre en place un cluster K8s, créer un Pod
, communiquer avec un Pod
, partager des données entre des Pods
, utiliser des outils d'administration (kubectl et K9s).
Avant de démarrer cette série d'exercices, veuillez préparer votre poste de développeur en installant les outils suivants :
- Un PC ou un Mac avec au minimum 8 Go de mémoire et les options de virtualisation actives ;
- Docker ;
- Editeur de texte : vim, emacs ou VSCode ;
- cURL.
Récupérer le contenu de ce dépôt :
$ git clone https://github.com/mickaelbaron/microservices-kubernetes-gettingstarted-tutorial
Choisir votre environnement d'orchestration Kubernetes :
- K3d (solution Docker in Docker) : solution adaptée aux configurations matérielles légères (8 Go de mémoire)
- K3s (solution à base de machines virtuelles) : solution adaptée aux configurations matérielles plus robustes (16 Go de mémoire)
Seul un environnement est nécessaire pour réaliser les expérimentations de cette série d'exercices.
Ce tutoriel a été testé avec les systèmes suivants :
- macOS Sonoma ;
- Linux Ubuntu 20, Debian 11.
Attention si vous réalisez cette série d'exercices dans le cadre d'une formation avec plusieurs participants. Il est fortement recommandé d'utiliser un registre d'images Docker privé pour éviter les limites imposer par l'utilisation de Docker Hub. En effet, chaque nœud de votre cluster K8s devra télécharger plusieurs images Docker et la limite imposée par Docker pour récupérer des images (100 en anonyme et 200 pour un compte gratuite toutes les six heures) peut être rapidement atteinte.
Retrouver les précédents tutoriels sur le sujet des conteneurs :
Pour aller plus loin, vous pouvez consulter les ressources suivantes :
- Support de cours sur une introduction aux architectures microservices ;
- Support de cours sur les outils et bibliothèques pour la mise en œuvre d'architectures microservices ;
- Support de cours sur Kubernetes (K8s).
L'apprentissage de Kubernetes m'a pris un certain temps et j'ai pu compter sur de nombreuses ressources sur Internet. J'ai pu également compter sur de nombreuses personnes pour m'aiguiller à qui j'ai posé de nombreuses questions. Je voulais en profiter pour les remercier :
- Guilhem Lettron (@guilhemlettron)
- Idriss Neumann (@idriss_neumann)