Comment créer un cluster Kubernetes avec l’interface en ligne de commande AWS EKS

Si vous êtes un développeur, vous voudrez généralement déployer des applications conteneurisées sur Kubernetes. Mais la question est, comment ? Pourquoi ne pas essayer AWS EKS CLI ?

Dans ce tutoriel, vous apprendrez comment configurer AWS EKS CLI pour créer un cluster Kubernetes, afin de vous concentrer sur votre code plutôt que sur la gestion de l’infrastructure.

Continuez à lire et commencez à créer votre cluster dès aujourd’hui !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir un PC et un compte AWS. Si vous n’avez pas de compte AWS, un compte gratuit est disponible.

Création d’un utilisateur administrateur

Avant de créer un cluster Kubernetes, vous allez créer un utilisateur administrateur. Un utilisateur administrateur vous permet de vous connecter à la console AWS pour configurer votre cluster. Démarrez ce tutoriel en créant un utilisateur disposant des autorisations administratives via la console AWS.

1. Connectez-vous à votre console AWS et accédez à votre tableau de bord IAM.

Cliquez sur Utilisateurs (panneau de gauche) -> Ajouter des utilisateurs (en haut à droite) comme indiqué ci-dessous pour commencer à ajouter des utilisateurs.

Initializing User Creation

2. Ensuite, fournissez un nom d’utilisateur dans le champ Nom d’utilisateur, ici K8-Admin est utilisé, cochez l’option Clé d’accès – Accès programmatique, et cliquez sur Suivant : Autorisations.

Vous sélectionnez l’option Clé d’accès – Accès programmatique car elle est accessible de manière programmatique. En conséquence, vous pouvez utiliser une application pour communiquer directement avec AWS sur les actions à entreprendre.

Configuring User Details

3. Cliquez sur l’option Attacher directement des politiques existantes, cochez la politique AdministratorAccess, et cliquez sur Suivant : Balises.

La politique AdministratorAccess donne à l’utilisateur (K8-Admin) un accès complet à AWS, et plus encore comme suit :

Setting up AdministratorAccess policies

4. Cliquez sur Suivant : Examen pour passer l’ajout de balises.

Skipping the tags screen

5. Enfin, passez en revue les détails de l’utilisateur et cliquez sur Créer un utilisateur pour finaliser la création de l’utilisateur administrateur.

Creating the admin user

Une fois la création de l’utilisateur administrateur terminée, vous recevrez un message Succès en haut de l’écran, comme celui ci-dessous. Notez l’ID de clé d’accès et la clé d’accès secrète car vous utiliserez ces clés pour vous connecter ultérieurement.

Previewing the admin user keys

Lancement d’une instance EC2

Maintenant que vous avez créé le K8-Admin, vous pouvez maintenant créer votre première instance EC2. Vous utiliserez cette instance comme votre nœud maître, où vous exécutez vos commandes pour créer le cluster.

1. Accédez à votre tableau de bord EC2, cliquez sur EC2, puis sur Lancer les instances à l’extrémité droite de la page. Cela redirige votre navigateur vers une page où vous pouvez choisir une Amazon Machine Image (AMI) (étape deux).

Launching an EC2 Instance

2. Ensuite, cliquez sur Sélectionner à côté (extrémité droite) de Amazon Linux 2 AMI (HVM) dans la liste, comme indiqué ci-dessous.

Amazon Linux 2 AMI (HVM) fournit le noyau Linux 5.10 optimisé pour des performances optimales de la dernière génération de matériel. Cette AMI possède également de nombreuses fonctionnalités requises par les clusters Kubernetes de niveau de production.

Selecting Amazon Linux 2 AMI (HVM)

3. Conservez la valeur par défaut (t2.micro) pour le type d’instance et cliquez sur Suivant : Configurer les détails de l’instance pour configurer l’instance.

Previewing the instance type

4. Activez l’option Auto-assign Public IP et Suivant : Ajouter du stockage. Cette option garantit que chacun de vos conteneurs peut accéder à l’IP publique de votre nœud maître Kubernetes et de vos instances EC2.

Configuring instance details

Gardez la valeur par défaut (Racine) dans la page Ajouter un stockage et cliquez sur Suivant : Ajouter des balises. Le volume Racine est nécessaire pour lire et écrire des données depuis l’instance.

Configuring the storage

6. Ignorez l’ajout de balises et cliquez sur Suivant : Configurer le groupe de sécurité.

Previewing the tags

7. Conservez les paramètres par défaut du groupe de sécurité, comme indiqué ci-dessous, et cliquez sur Examiner et lancer.

Previewing the Security Group

8. Examinez les détails du lancement de l’instance et cliquez sur Lancer pour démarrer l’instance. Une fenêtre contextuelle apparaîtra où vous pourrez choisir de sélectionner une paire de clés existante ou d’en créer une nouvelle (étape neuf).

Launching an instance

9. Dans la fenêtre contextuelle, configurez la paire de clés comme suit :

  • Sélectionnez Créer une nouvelle paire de clés dans la liste déroulante.
  • Choisissez RSA comme Type de paire de clés.
  • Indiquez le nom de votre paire de clés préféré Nom de la paire de clés. Mais pour ce tutoriel, le nom de la paire de clés est défini sur my-nvkp.
  • Cliquez sur Télécharger la paire de clés, puis sur Lancer les instances.
Creating a new key pair

Votre instance peut prendre une minute ou deux pour se lancer complètement. Une fois votre instance en cours d’exécution, vous la verrez répertoriée dans votre tableau de bord EC2, comme indiqué ci-dessous.

Previewing the newly-created instance

Configuration de l’outil AWS CLI

Maintenant que votre instance est en cours d’exécution, il est temps de configurer les outils en ligne de commande (CLI). Utiliser les outils CLI en conjonction avec votre compte AWS est essentiel pour créer votre cluster Kubernetes.

1. Depuis votre tableau de bord EC2, cochez la case pour sélectionner l’instance, comme indiqué ci-dessous. Cliquez sur Connecter pour initialiser la connexion à l’instance.

Connecting to the Ec2 instance.

2. Ensuite, cliquez sur le bouton Connecter pour vous connecter à l’instance que vous avez sélectionnée précédemment à l’étape un.

Connecting to the instance

Une fois connecté à votre instance EC2, votre navigateur est redirigé vers le terminal interactif affiché ci-dessous en tant que votre session SSH temporaire avec votre instance EC2.

Le terminal interactif vous permet de vous connecter à la ligne de commande et d’exécuter des commandes administratives sur votre nouvelle instance.

Previewing the interactive terminal

3. Exécutez la commande aws ci-dessous pour vérifier votre version CLI.

aws --version

Comme vous pouvez le voir dans la sortie ci-dessous, vous utilisez la version 1.18.147 sur votre instance Amazon Linux 2, qui est obsolète. Vous devez télécharger et installer AWS CLI version 2+ pour vous assurer que vous pouvez accéder à toutes les fonctionnalités de Kubernetes (étape trois).

Checking the AWS CLI version

4. Maintenant, exécutez la commande curl ci-dessous pour télécharger l’outil CLI v2+ et enregistrez-le dans un fichier zip nommé awscliv2.zip.

 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 
Downloading the CLI tool v2+

5. Exécutez les commandes suivantes pour décompresser le fichier téléchargé et déterminer où l’AWS CLI obsolète est installée.

unzip awscliv2.zip
which aws

Comme vous pouvez le voir dans la sortie ci-dessous, l’AWS CLI obsolète est installée à /usr/bin/aws. Vous devez mettre à jour ce chemin avec la version mise à jour.

Updating outdated AWS CLI

6. Exécutez la commande ci-dessous pour effectuer les opérations suivantes et mettre à jour le chemin d’installation de l’AWS CLI sur votre instance :

  • Installez les outils AWS CLI mis à jour sur votre instance Amazon Linux 2 (sudo ./aws/install).
  • Définissez le répertoire (--install-dir /usr/bin/aws-cli) où installer les outils CLI. Cela vous permet de transférer la AWS CLI mise à jour vers d’autres instances sans réinstaller les outils CLI.
  • Mettez à jour (--update) votre environnement shell actuel avec le nouveau chemin pour les outils AWS CLI s’il y en a un dans votre environnement actuel.
sudo ./aws/install --bin-dir /usr/bin --install-dir /usr/bin/aws-cli --update
Installing the CLI tool v2

7. Relancez la commande aws --version ci-dessous pour vérifier que la AWS CLI mise à jour est correctement installée.

aws --version

La version de l’AWS CLI installée est 2.4.7, comme indiqué ci-dessous, qui est la dernière version de l’AWS CLI au moment de la rédaction.

Checking the AWS CLI updated version

8. Ensuite, exécutez la commande aws configure pour configurer votre instance avec les nouveaux outils AWS CLI.

aws configure

Entrez les valeurs appropriées dans les invites comme ci-dessous :

  • Identifiant de clé d’accès AWS [Aucun] – Entrez l’ID de clé d’accès que vous avez noté dans la section précédente « Création de votre utilisateur administrateur ».
  • Clé d’accès secrète AWS [Aucun] – Entrez la clé d’accès secrète que vous avez notée dans la section précédente « Création de votre utilisateur administrateur ».
  • Nom de région par défaut [Aucun] – Sélectionnez une région prise en charge, comme us-east-1.
  • Format de sortie par défaut [Aucun] – Entrez json, car le format JSON est le standard préféré pour une utilisation avec Kubernetes.
Configuring the AWS Environment

Configurer l’outil de ligne de commande Amazon EKS (eksctl)

Étant donné que votre objectif est de créer un cluster Kubernetes avec AWS EKS CLI, vous allez également configurer l’outil de ligne de commande Amazon EKS (eksctl). Cet outil vous permet de créer et de gérer des clusters Kubernetes sur Amazon EKS.

1. Installez la dernière version de l’outil de ligne de commande Kubernetes (kubectl) sur votre instance EC2. Cet outil vous permet d’exécuter des commandes sur des clusters Kubernetes.

2. Ensuite, exécutez la commande curl ci-dessous pour récupérer la dernière version de la publication eksctl depuis GitHub vers votre répertoire /tmp sous la forme d’un fichier .tar.gz, puis extrayez le contenu de l’archive dans le répertoire /tmp.

Exécutez les commandes ci-dessous pour effectuer les opérations suivantes:

  • Récupérez la dernière version de la publication eksctl depuis GitHub (--location) sous la forme d’une archive .tar.gz ("<https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$>(uname -s)_amd64.tar.gz")
  • Extrayez le contenu de l’archive dans le répertoire /tmp (tar xz -C /tmp), tandis que le drapeau --silent supprime la sortie de progression de la commande.
  • Déplacez (sudo mv) le binaire eksctl (/tmp/eksctl) vers le chemin où vous avez installé AWS CLI (/usr/bin)
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/bin

3. Enfin, exécutez la commande ci-dessous pour confirmer que vous avez installé avec succès eksctl.

eksctl version

La sortie ci-dessous confirme que vous avez installé avec succès eksctl.

Checking the eksctl CLI tool version

Si vous êtes nouveau à eksctl, vous pouvez exécuter la commande ci-dessous pour obtenir une liste de toutes les commandes eksctl supportées et leur utilisation.

eksctl --help
Previewing the eksctl help page

Approvisionnement de votre cluster EKS

Maintenant que vous avez configuré eksctl, vous pouvez maintenant provisionner votre premier cluster EKS avec les commandes eksctl.

Exécutez la commande eksctl ci-dessous pour créer votre premier cluster et effectuer les actions suivantes:

  • Créez un cluster Kubernetes à 3 nœuds nommé dev avec un type de nœud t3.micro et une région us-east-1.
  • Définissez un minimum d’un nœud (--nodes-min 1) et un maximum de quatre nœuds (--nodes-max 4) pour ce groupe de nœuds géré par EKS. Le groupe de nœuds est nommé standard-workers.
  • Créez un groupe de nœuds avec le nom standard-workers et sélectionnez un type de machine pour le groupe de nœuds standard-workers.
eksctl create cluster --name dev --version 1.21 --region us-east-1 --nodegroup-name standard-workers --node-type t3.micro --nodes 3 --nodes-min 1 --nodes-max 4 --managed
Provisioning your EKS Cluster

2. Accédez à votre tableau de bord CloudFormation pour voir les actions effectuées par la commande. La commande eksctl create cluster utilise CloudFormation pour approvisionner l’infrastructure dans votre compte AWS.

Comme vous pouvez le voir ci-dessous, une pile CloudFormation eksctl-dev-cluster est en cours de création. Ce processus peut prendre 15 minutes ou plus pour se terminer.

Previewing the eksctl-dev-cluster stack.

3. Maintenant, accédez à votre tableau de bord EKS, et vous verrez un cluster nommé dev provisionné. Cliquez sur le lien hypertexte dev pour accéder au tableau de bord du cluster EKS de dev.

Navigating to the dev EKS Cluster dashboard.

Ci-dessous, vous pouvez voir les détails du cluster EKS de dev, tels que Nom du nœud, Type d’instance, Groupe de nœuds, et Statut.

Previewing the dev EKS Cluster dashboard.

4. Passez à votre tableau de bord EC2, et vous verrez que quatre nœuds sont en cours d’exécution, dont trois ont le rôle t3.micro dans votre compte AWS (trois nœuds de travail et un nœud maître).

Previewing the EC2 dashboard.

5. Enfin, exécutez la commande ci-dessous pour mettre à jour votre configuration kubectl (update-kubeconfig) avec l’endpoint, le certificat et les informations d’identification de votre cluster.

aws eks update-kubeconfig --name dev --region us-east-1
Updating kubectl config

Déploiement d’une application sur le cluster EKS

Vous avez créé votre cluster EKS et confirmé qu’il fonctionne parfaitement. Mais pour l’instant, le cluster EKS est simplement là. Pour cette démonstration, vous allez utiliser le cluster EKS en déployant une application NGINX.

1. Exécutez la commande yum ci-dessous pour installer git tout en acceptant automatiquement toutes les invites (-y) pendant l’installation.

sudo yum install -y git
Installing Git

2. Ensuite, exécutez la commande git clone ci-dessous pour cloner les fichiers de configuration depuis le dépôt GitHub vers votre répertoire actuel. Vous utiliserez ces fichiers pour créer un déploiement NGINX sur vos pods et créer un équilibreur de charge (ELB).

git clone https://github.com/Adam-the-Automator/aws-eks-cli.git
Cloning the configuration files

3. Exécutez les commandes suivantes pour vous déplacer dans le répertoire ata-elk et créer (kubectl apply) un service pour NGINX (./nginx-svc.yaml).

# Changer de répertoire vers ata-elk
cd ata-elk
# Appliquer la configuration dans ./nginx-svc.yaml à un pod
kubectl apply -f ./nginx-svc.yaml
Creating a service for NGINX

4. Ensuite, exécutez la commande kubectl get service pour vérifier l’état de votre service NGINX.

kubectl get service

Comme vous le voyez ci-dessous, le type de service est un équilibreur de charge, et Kubernetes a créé un service (nginx-svc), qui est votre déploiement NGINX. Vous pouvez également voir le nom de domaine externe DNS de l’équilibreur de charge créé par EKS sous la colonne IP EXTERNE.

Prenez note du nom de domaine externe DNS de l’équilibreur de charge car vous en aurez besoin plus tard pour tester l’équilibreur de charge.

Checking the status of your NGINX

5. Exécutez la commande kubectl ci-dessous pour déployer les pods NGINX.

kubectl apply -f ./nginx-deployment.yaml
Deploying the NGINX pods

6. Exécutez les commandes kubectl get suivantes pour vérifier l’état de votre déploiement NGINX et de votre pod NGINX.

kubectl get deployment
kubectl get pod

Comme vous pouvez le voir dans la sortie ci-dessous, il y a trois pods de votre déploiement, et tous fonctionnent.

Checking the status of the NGINX deployment and pods

7. Ensuite, exécutez la commande kubectl get node pour vérifier l’état de vos nœuds de travail.

kubectl get node
Check the status of your worker nodes

8. Maintenant, exécutez la commande curl ci-dessous pour tester votre équilibreur de charge. Remplacez <LOAD_BALANCER_DNS_HOSTNAME> par le nom DNS que vous avez précédemment noté (étape cinq).

curl "<LOAD_BALANCER_DNS_HOSTNAME>"

Vous verrez la page de bienvenue de NGINX à partir du service NGINX créé par EKS, comme indiqué ci-dessous. La sortie ci-dessous confirme que votre équilibreur de charge fonctionne correctement et que vous pouvez accéder à vos pods NGINX.

Checking your load balancer

9. Enfin, pour vérification, copiez et collez le nom DNS de l’équilibreur de charge dans un nouvel onglet du navigateur.

Vous obtiendrez également une page de bienvenue de NGINX, ce qui indique que votre application fonctionne.

Checking your load balancer with a browser

Tester le Contrôle de Kubernetes Hautement Disponible

Maintenant que vous avez un cluster en cours d’exécution, vous testerez si le plan de contrôle de Kubernetes est hautement disponible. La disponibilité de votre application dépend de cette fonctionnalité. Si le plan de contrôle ne fonctionne pas, vos applications seront hors service et ne pourront pas servir les utilisateurs.

Avec la fonctionnalité de contrôle de Kubernetes hautement disponible, vous augmentez la disponibilité de votre application. Vous testerez cette fonctionnalité en arrêtant vos nœuds de travail EKS et en voyant si Kubernetes met en place de nouveaux nœuds pour remplacer ceux qui ont échoué.

1. Dans votre tableau de bord EC2, arrêtez toutes vos instances de nœuds de travail EKS, comme indiqué ci-dessous.

Stopping all of your EKS worker node instances

2. Ensuite, exécutez la commande suivante pour vérifier l’état du nœud de travail.

kubectl get node

Vous obtiendrez un mélange d’états, comme En attente, En cours d’exécution, et En cours de terminaison. Pourquoi ? Parce qu’en essayant d’arrêter tous les nœuds de travail, Kubernetes détecte la défaillance et déploie rapidement un autre nœud.

Checking the status of the worker node

3. Exécutez maintenant la commande kubectl get pod pour tester la fonctionnalité de contrôle Kubernetes hautement disponible.

kubectl get pod

Vous pouvez voir dans la sortie qu’il y a trois nouveaux pods (identifiés par leur âge) dans l’état En cours d’exécution. Ces nouveaux pods indiquent que la fonctionnalité de contrôle Kubernetes hautement disponible fonctionne comme prévu.

Checking the status of the pods

4. Exécutez la commande kubectl get service ci-dessous pour lister tous les services disponibles.

Vous pouvez voir ci-dessous que Kubernetes a créé un nouveau service, et le nom DNS du répartiteur de charge est maintenant différent. kubectl get service

kubectl get service
Kubernetes has created a new service

5. Enfin, copiez et collez le nom DNS du répartiteur de charge dans votre navigateur. Vous obtiendrez la page de bienvenue de NGINX comme vous l’avez fait à la dernière étape de la section « Déploiement d’une application sur le cluster EKS ».

Conclusion

Tout au long de ce tutoriel, vous avez appris comment créer un cluster EKS, déployer un service NGINX à partir de votre conteneur et tester la fonctionnalité de plan de contrôle hautement disponible.

À ce stade, vous devriez avoir une bonne compréhension de la création de clusters EKS dans votre environnement AWS.

Quelle est la prochaine étape pour vous ? Peut-être apprendre à déployer une application NodeJS à l’aide de Docker et de K8s sur AWS?

Source:
https://adamtheautomator.com/aws-eks-cli/