Formation DevOps | Formation kubernetes​ : B - Mise en place d'un cluster Kubernetes sur AWS

www.itgalaxy.io

Comment Kubernetes est géré coté AWS avec le service Amazon Elastic Kubernetes Service (Amazon EKS) ?

Amazon Elastic Kubernetes Service (Amazon EKS) est un service géré qui vous permet d’exécuter facilement Kubernetes sur AWS sans devoir installer ni gérer votre propre plan de contrôle Kubernetes.

Amazon EKS exécute les instances de plan de contrôle , les composants master de Kubernetes sur plusieurs zones de disponibilité afin de garantir une haute disponibilité.

Amazon EKS détecte et remplace automatiquement les instances de plan de contrôle défectueuses, et fournit des mises à niveau de version automatisées et des correctifs.

Amazon EKS est également intégré à de nombreux services AWS, ce qui permet d’offrir scalabilité et sécurité à vos applications, y compris :

Amazon ECR pour les images de conteneur.
Elastic Load Balancing pour la répartition des charges.
IAM pour l’authentification (Indentity and Access managment).
Amazon VPC pour l’isolement.





ENI* : Elastic Network interface .
VPC* :Virtual Private Cloud .



Amazon EKS exécute les composants master (control plan) Kubernetes à un seul locataire pour chaque cluster, et l’infrastructure des composants master (control plan) n’est pas partagée entre les clusters ou les comptes AWS.

• les composants master (control plan) se compose d’au moins deux nœuds de serveur d’API et de trois nœuds etcd qui s’exécutent dans trois zones de disponibilité au sein d’une région.

Amazon EKS détecte et remplace automatiquement les instances de plan de contrôle défectueuses, en les redémarrant dans les zones de disponibilité au sein de la région si nécessaire.

Amazon EKS utilise l’architecture des régions AWS pour maintenir une haute disponibilité .

Amazon EKS utilise des stratégies réseau Amazon VPC afin de restreindre le trafic entre les composants du plan de contrôle au sein d’un cluster unique. Les composants du plan de contrôle pour un cluster ne peuvent pas afficher ou recevoir des communications d’autres clusters ou d’autres comptes AWS, sauf en cas d’autorisation avec des stratégies RBAC Kubernetes.

Les applications s'exécutant sur Amazon EKS sont entièrement compatibles avec les applications s'exécutant sur n'importe quel environnement Kubernetes standard .

Cela signifie que vous pouvez facilement faire migrer n'importe quelle application Kubernetes standard vers Amazon EKS sans devoir modifier le code .

Déployer un cluster kubernetes Amazon EKS

Il est très simple de commencer à utiliser Amazon EKS :

  1. Commencez par créer un cluster Amazon EKS dans la AWS Management Console, avec l’AWS CLI ou avec l’un des kits SDK AWS.

  2. Lancez ensuite les nœuds de travail qui s’enregistrent auprès du cluster Amazon EKS.

  3. Lorsque votre cluster est prêt, vous pouvez configurer vos outils Kubernetes préférés (la commande kubectl par exemple) afin qu’ils communiquent avec votre cluster.

  4. Déployez et gérez les applications sur votre cluster Amazon EKS de la même manière qu’avec n’importe quel autre environnement Kubernetes.

Install Kubectl sur Linux

Installer le binaire de kubectl avec curl sur Linux

Téléchargez la dernière release avec la commande :

curl -LO https://dl.k8s.io/release/$(curl -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl

Pour télécharger une version spécifique, remplacez $(curl -s https://dl.k8s.io/release/stable.txt) avec la version spécifique.

Par exemple, pour télécharger la version 1.28.4 sur Linux, tapez :

curl -LO https://dl.k8s.io/release/v1.28.4/bin/linux/amd64/kubectl

Rendez le binaire kubectl exécutable.

chmod +x ./kubectl

Déplacez le binaire dans votre PATH.

sudo mv ./kubectl /usr/local/bin/kubectl

Testez pour vous assurer que la version que vous avez installée est à jour:

kubectl version --client

Création d’un cluster Amazon EKS

Command Line :

Installation de la CLI AWS : Lien de l’nstallation de la CLI aws .

aws help

Ensuite configuration de la CLI avec les credentiales de votre compte AMAZON :

aws configure

Faut bien configurer aws cli avec vos credentials pourque vous puissez deployer votre cluster sur aws avec vos ressourses :

    Faut bien avoir tous les droits pour le deploiment sur votre master account , de mon coté je suis admin sur mon master account , on peut aussi profiter de l'offre Gratuite d'AWS pour deployer un premier cluster kubernetes sur AWS , si vous avez des difficultées vous pouvez nous contacter et je peux vous aider pour cette partie .

AWS Access Key ID : ********
AWS Secret Access Key : ******
Default region name : *****





         
Clicker sur My security credentials













Ensuite faut regarder dans Access Keys






aws configure



Pour mettre en place plus de sécurité

Si nécessaire, exécutez la commande suivante pour obtenir un nouveau token de sécurité pour l’AWS CLI.

Pour plus d’informations, consultez get-session-token dans la référence des commandes AWS CLI.

Par défaut, le token est valable 15 minutes. Pour modifier le délai d’expiration de session par défaut, transmettez l’indicateur –duration-seconds.

Par exemple:

Utilisation de la CLI EKS pour la mise en place d’un cluster kubernetes sur AWS

Dans un premier temps on va utiliser la CLI EKSCTL qui permet de manipuler le service EKS ,cette CLI récupére la config de AWS stocké dans

Je vous ai préparé un jolie avec toute la documentation dessus : gitlab eks

.aws/config qui était faite via la ligne de command de aws configure .

Installation de la command eksctl pour la création de cluster et aussi des nodes workers :

Pour Unix

    # for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`

    ARCH=amd64
    
    PLATFORM=$(uname -s)_$ARCH

    curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"

    # (Optional) Verify checksum
    
    curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check

    tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz

    sudo mv /tmp/eksctl /usr/local/bin

Docker

Pour chaque version et RC, une image de conteneur est poussée vers le référentiel ECR public.ecr.aws/eksctl/eksctl. En savoir plus sur l’utilisation sur ECR Public Gallery - eksctl. Par exemple,

docker run --rm -it public.ecr.aws/eksctl/eksctl version

Pour Windows :

Lien pour l’installation ( meme si je suis pas super fun :p )

Direct download (latest release): AMD64/x86_64 - ARMv6 - ARMv7 - ARM64

Make sure to unzip the archive to a folder in the PATH variable.

Optionally, verify the checksum:

  1. Download the checksum file: latest
  2. Use Command Prompt to manually compare CertUtil’s output to the checksum file downloaded.
REM Replace amd64 with armv6, armv7 or arm64
CertUtil -hashfile eksctl_Windows_amd64.zip SHA256
  1. Using PowerShell to automate the verification using the -eq operator to get a True or False result:
# Replace amd64 with armv6, armv7 or arm64
 (Get-FileHash -Algorithm SHA256 .\eksctl_Windows_amd64.zip).Hash -eq ((Get-Content .\eksctl_checksums.txt) -match 'eksctl_Windows_amd64.zip' -split ' ')[0]

Using Git Bash

# for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`
ARCH=amd64
PLATFORM=windows_$ARCH

curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.zip"

# (Optional) Verify checksum
curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check

unzip eksctl_$PLATFORM.zip -d $HOME/bin

rm eksctl_$PLATFORM.zip

Mise en place d’un cluster K8S avec eksctl :

En utilisant Config Files:

Vous pouvez créer un cluster à l’aide d’un fichier de configuration (recommandé)

Ce cluster est un cluster de test et de formation , il y a un cours dédié au niveau la création

Tout d’abord, créez le fichier cluster.yaml

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: basic-cluster
  region: eu-west-1

nodeGroups:
  - name: ng-1
    instanceType: t2.micro
    desiredCapacity: 4
    volumeSize: 8
    ssh: 
      publicKeyName: eks-formations ### le nom de la clés ssh crée sur votre console
eksctl create cluster -f 00-cluster.yaml



    ekctl utilise CloudFormation le service Infrastructure as a code d’AWS , pour la création du cluster .



kubectl config get-contexts 



kubectl config get-nodes 








1. Nous contactez


2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io