Vous avez envie d’apprendre kubernetes ? Ce guide est fait pour vous.
Dans cet article, vous apprendrez ce qu’est kubernetes, pourquoi nous en avons besoin et comment déployer une application simple sur un cluster kubernetes. Pour rendre les choses plus concrètes, nous utiliserons comme exemple le très populaire serveur web Nginx.
Avant de commencer, il est recommandé d’avoir une compréhension de base de ce que sont Docker et les conteneurs.
Comment installer Docker sur Ubuntu 22.04
Docker: Installation sur Windows 10
C’est quoi Kubernetes
Kubernetes, souvent abrégé en K8s, est une plateforme open source qui aide à déployer et à gérer des applications conteneurisées.
Pourquoi utiliser Kubernetes ?
Pour mieux comprendre, voyons les principales différences entre Docker et Kubernetes.
Comme vous le savez, docker vous permet d’empaqueter une application et ses dépendances dans une unité standardisée appelée conteneur. Il fournit également une interface de ligne de commande ainsi qu’une interface graphique pour la gestion des conteneurs.
Le problème est que lorsque vous avez de nombreux conteneurs, il devient compliqué de les gérer tous. Imaginez que l’un de vos conteneurs hébergeant une application critique tombe en panne, avec Docker vous devez le recréer. C’est pourquoi Docker n’est pas recommandé dans un environnement de production.
C’est là que kubernetes intervient, c’est une plateforme d’orchestration de conteneurs. Il se charge d’automatiser le déploiement et la gestion des applications conteneurisées.
Par exemple, dans le cas de K8s, si un conteneur est down, il en crée un autre parce que Kubernetes s’assure qu’un nombre spécifié de copies identiques des conteneurs sont en cours d’exécution à tout moment.
Il y a d’autres avantages de kubernetes que nous allons découvrir dans ce post.
Prérequis
Avant de vous lancer dans le processus de déploiement, assurez-vous que vous disposez des prérequis ci-dessous :
- Kubernetes Cluster: Vous devez disposer d’un cluster K8s opérationnel. Si vous n’en avez pas, des outils comme Minikube ou des services gérés comme Google Kubernetes Engine (GKE) peuvent vous aider à mettre en place un cluster local ou basé sur le cloud.
- kubectl : Cet outil de ligne de commande qui permet d’interagir avec votre cluster K8s. Assurez-vous qu’il est installé et configuré pour pointer vers votre cluster.
- Docker : Nous utiliserons Docker pour conteneuriser notre application Nginx.
Avant de commencer, nous devons d’abord comprendre certains objets de Kubernetes :
Pods : c’est la plus petite unité dans Kubernetes qui héberge le conteneur d’application. Il peut s’agir d’un seul conteneur ou d’un groupe de conteneurs.
Déploiements : dans Kubernetes, les déploiements sont une abstraction de plus haut niveau qui permet des mises à jour déclaratives des applications. Il vous permet de décrire l’état souhaité de votre application et Kubernetes s’occupe des détails pour que l’état actuel corresponde à l’état souhaité.
Avec le déploiement, si un pod tombe en panne ou le nombre des pods doit être augmenté ou réduit, le contrôleur de déploiement ajuste automatiquement le nombre de pods en cours d’exécution.
Les déploiements prennent en charge les mises à jour en continu, ce qui vous permet de modifier la version de votre application sans interruption de service. En cas de problème, vous pouvez facilement revenir à une version antérieure.
Replicaset : Nous avons vu qu’avec le déploiement, si un pod est down ou le nombre des pods doit être augmenté ou réduit, le contrôleur de déploiement ajuste automatiquement le nombre de pods en cours d’exécution, cela est pris en charge par Replicaset.
Vous êtes maintenant prêt à passer à l’étape suivante.
Etape 1: Création du fichier YAML du Nginx
Tout d’abord, créons un fichier yaml de déploiement pour Nginx. Enregistrez le contenu suivant dans un fichier nommé nginx-deployment.yaml :
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
replicas:3 indique que nous souhaitons avoir trois instances (pods) de notre application Nginx.
selector et matchLabels définir la manière dont les k8s doivent sélectionner les pods à gérer.
template décrit le modèle de pod pour le déploiement, y compris l’image du conteneur (Nginx) et le port exposé (80).
Etape 2 : Appliquer le déploiement
Afin d’appliquer la configuration du fichier YAML et créer les pods Nginx, exécutez la commande suivante :
# kubectl apply -f nginx-deployment.yaml
K8s va maintenant créer le nombre spécifié de pods Nginx et gérer leur cycle de vie.
Etape 3 : Exposé le service Nginx
Pour rendre Nginx accessible depuis l’extérieur du cluster, créez un service Kubernetes. Enregistrez le contenu suivant dans un fichier nommé nginx-service.yaml :
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
Appliquer la configuration du fichier yaml :
# kubectl apply -f nginx-service.yaml
Kubernetes va créer un service et attribuera une adresse IP externe si vous utilisez un fournisseur de cloud ( comme AWS ). Si vous utilisez Minikube, vous pouvez accéder à Nginx en utilisant l’IP Minikube et NodePort.
Etape 4 : Faire un Scale du déploiement kubernetes
L’une des forces de k8s est sa capacité à faire évoluer les applications facilement. Pour augmenter le nombre des pods pour que nginx puisse support la charge augmenté, exécutez la commande ci-dessous :
# kubectl scale deployment nginx-deployment --replicas=5
Migrer CentOS 7 vers Rocky Linux 9
Comment configurer les clés SSH sur Rocky Linux 9
nmtui : Configurer une adresse IP sous Linux
chattr : Protéger vos fichiers Linux
Fail2Ban : How to protect Linux services