Article original : How to Deploy a Kubernetes App on AWS EKS
AWS facilite grandement le déploiement d'applications conteneurisées, et l'exécution de Kubernetes dans le cloud est un moyen puissant de mettre à l'échelle et de gérer ces applications.
Parmi les nombreux services Kubernetes gérés proposés par AWS, Amazon EKS (Elastic Kubernetes Service) se distingue par son intégration transparente avec l'écosystème AWS, sa grande fiabilité et son excellent support.
Si vous êtes prêt à dépasser les configurations locales et que vous souhaitez déployer une application Kubernetes réelle sur AWS EKS, ce guide vous accompagnera tout au long du processus. Que vous travailliez sur un microservice, une application full-stack ou que vous expérimentiez simplement Kubernetes dans un environnement qui imite la production, vous trouverez ce tutoriel utile.
Dans cet article, je vous guiderai étape par étape à travers le processus de création de votre cluster EKS, le déploiement de votre application et sa mise à disposition sur Internet.
Au programme :
Prérequis
Pour commencer, assurez-vous d'avoir installé les éléments suivants sur votre machine locale :
Avoir une compréhension de base des services cloud.
Avoir une compréhension de base de la ligne de commande Linux.
Avoir un compte AWS.
Installer eksctl, un outil CLI simple pour créer et gérer des clusters EKS.
Installer kubectl, l'outil de ligne de commande standard de Kubernetes.
Installer Docker pour construire et packager votre application dans un conteneur.
Avant de configurer un cluster Kubernetes pour notre application, il est essentiel de comprendre quelques concepts de base.
Qu'est-ce qu'un cluster Kubernetes ?
Un cluster Kubernetes (également appelé K8S) est composé de machines (appelées nœuds) qui exécutent des applications conteneurisées. Il fonctionne aux côtés de moteurs de conteneurs comme CRI-O ou containerd pour vous aider à déployer et gérer vos applications plus efficacement.
Les nœuds Kubernetes se déclinent en deux types principaux :
Nœuds maîtres (plan de contrôle) : Ils gèrent le travail intellectuel, tel que la planification, la mise à l'échelle et la gestion de l'état global du cluster.
Nœuds de travail (plan de données) : Ils exécutent les applications réelles à l'intérieur des conteneurs.
Si vous débutez avec Kubernetes ou si vous souhaitez vous rafraîchir la mémoire, consultez le cours gratuit Introduction to Kubernetes (LFS158) de la Linux Foundation.
Qu'est-ce qu'Amazon Elastic Kubernetes Service ?
Amazon Elastic Kubernetes Service (EKS) est un service géré qui permet un déploiement facile de Kubernetes sur AWS, éliminant ainsi le besoin de configurer et de maintenir votre propre nœud de plan de contrôle Kubernetes.
AWS EKS s'occupe des tâches complexes en gérant le plan de contrôle, en gérant les mises à niveau et en installant les composants de base, tels que le runtime de conteneur et les processus Kubernetes essentiels. Il offre également des outils intégrés pour la mise à l'échelle, la haute disponibilité et la sauvegarde.
Avec EKS, vous ou votre équipe pouvez vous concentrer sur la création et l'exécution d'applications, tandis qu'AWS gère l'infrastructure sous-jacente.
Pourquoi utiliser Amazon EKS pour Kubernetes ?
Voici quelques avantages clés de l'utilisation d'AWS EKS :
EKS gère les mises à niveau, les correctifs et la haute disponibilité pour vous, vous offrant un plan de contrôle entièrement géré avec un effort manuel minimal.
Vous pouvez facilement mettre à l'échelle vos applications, et l'infrastructure se développe à mesure que vos besoins évoluent.
Il dispose d'un support intégré pour les rôles IAM, la mise en réseau privée et le chiffrement.
AWS EKS fonctionne sur une infrastructure hautement disponible à travers plusieurs zones de disponibilité AWS, rendant votre application disponible mondialement.
Avec Amazon EKS, vous bénéficiez de la puissance de Kubernetes sans gérer la configuration sous-jacente. Ainsi, vous pouvez rester concentré sur la création et l'exécution de vos applications.
Comment créer un cluster Kubernetes avec AWS
Voyons maintenant le processus de mise en service d'un cluster Kubernetes.

Étape 1 : Comment installer les outils nécessaires pour créer un cluster
Le moyen le plus simple et le plus convivial pour les développeurs de lancer un Elastic Kubernetes Service utilisable en production est d'utiliser eksctl. Il s'occupe de la configuration manuelle et provisionne automatiquement les ressources AWS nécessaires.
Avant de commencer, nous devons installer deux outils essentiels :
eksctl – Utilisé pour créer et gérer votre cluster EKS.
kubectl – Permet d'interagir avec votre cluster, de déployer des applications et de gérer les ressources Kubernetes.
Ces outils faciliteront la configuration de votre cluster Kubernetes et vous permettront de travailler avec lui directement depuis votre terminal.
Comment installer eksctl
Ouvrez votre navigateur et accédez à la documentation officielle de eksctl. Faites défiler jusqu'à la section Installation.
Allez aux instructions Unix si vous utilisez Ubuntu ou un système similaire. Copiez ensuite la commande d'installation et collez-la dans votre terminal.

Une fois l'opération terminée, exécutez eksctl version pour confirmer que l'installation a réussi.

Comment installer kubectl
L'étape suivante consiste à installer kubectl. Vous trouverez les instructions d'installation dans la documentation officielle de Kubernetes, qui propose des étapes basées sur votre système d'exploitation.

Étape 2 : Comment créer le cluster Elastic Kubernetes Service (EKS)
Maintenant que vous avez installé les outils nécessaires, il est temps de lancer le cluster.
Pour commencer, ouvrez votre terminal et exécutez la commande suivante :
# Créer un cluster EKS nommé "k8s-example" dans eu-west-2 (Londres)
eksctl create cluster --name k8s-example --region eu-west-2

L'un des grands avantages d'utiliser AWS EKS est qu'une fois votre cluster Kubernetes créé, il met automatiquement à jour votre fichier ~/.kube/config. Cela signifie que vous pouvez commencer à interagir avec votre cluster immédiatement, en utilisant kubectl, sans configuration supplémentaire.

Après avoir exécuté la commande (comme indiqué dans le GIF ci-dessus), votre cluster Kubernetes est créé avec succès.

Rendez-vous sur la console AWS, et vous verrez votre nouveau cluster listé avec un statut Active.
Votre cluster étant opérationnel, il est temps de tester la connexion. Vous pouvez le faire en exécutant quelques commandes kubectl dans votre terminal pour lister les nœuds, les pods et les espaces de noms (namespaces) de votre cluster.
Pour tester la connexion :
kubectl get nodes
Cette commande liste tous les nœuds de votre cluster.
kubectl get pods
Cette commande liste tous les pods en cours d'exécution.
kubectl get namespaces
Cette commande liste tous les espaces de noms actuellement actifs.

Si chaque commande renvoie une liste de ressources, félicitations ! Votre connexion au cluster Kubernetes est réussie.
Étape 3 : Comment créer des manifestes Kubernetes
Définissons l'application à l'aide d'un fichier YAML. Dans ce fichier, vous allez créer deux ressources clés : un Deployment et un Service.
Le Deployment garantit que votre application s'exécute de manière fiable en spécifiant le nombre de réplicas à exécuter, l'image du conteneur à utiliser et la manière de gérer les mises à jour.
Le Service rend votre application accessible — à la fois au sein du cluster Kubernetes et, si nécessaire, depuis Internet, même si les pods sous-jacents changent ou redémarrent.
Ensemble, ces ressources orchestrent votre application afin qu'elle puisse s'exécuter de manière cohérente dans différents environnements.
#deployment-example.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: amazon-deployment
namespace: default
labels:
app: amazon-app
spec:
replicas: 5
selector:
matchLabels:
app: amazon-app
tier: frontend
version: 1.0.0
template:
metadata:
labels:
app: amazon-app
tier: frontend
version: 1.0.0
spec:
containers:
- name: amazon-container
image: ooghenekaro/amazon:2
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: amazon-service
labels:
app: amazon-app
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 3000
selector:
app: amazon-app
Le service utilise un type LoadBalancer, ce qui indique à AWS de provisionner un Elastic Load Balancer (ELB) et d'acheminer le trafic vers les pods.
Étape 4 : Comment déployer l'application sur EKS
Maintenant que votre fichier YAML est défini et que le cluster Kubernetes sur AWS EKS est prêt, il est temps de déployer votre application.
Pour ce faire, exécutez la commande suivante dans votre terminal pour appliquer la configuration définie dans votre fichier manifeste :
kubectl apply -f deployment-example.yaml
Cette commande indique à Kubernetes de créer les pods et services nécessaires selon les spécifications du manifeste.
Ensuite, vous pouvez vérifier le statut de vos pods et services :
kubectl get pods
kubectl get svc or service
kubectl get all

Étape 5 : Comment accéder à votre application
Pour voir votre application dans le navigateur, exécutez la commande suivante pour lister vos services :
kubectl get svc
Cherchez l'EXTERNAL-IP de votre service.

Copiez l'adresse IP et collez-la dans votre navigateur. Votre application devrait maintenant être en ligne !

Conclusion
Déployer une application Kubernetes sur AWS EKS peut sembler complexe au début, mais avec des outils comme eksctl et kubectl, le processus est étonnamment accessible.
Que vous soyez un développeur expérimentant Kubernetes ou une équipe cherchant à mettre à l'échelle des charges de travail de production, EKS offre une base solide et évolutive qui soutient vos applications au fur et à mesure de leur croissance.
Ressources
Merci de m'avoir lu !