Cours > Module > Chapitre

Lab : Déploiement d’un Cluster Amazon EKS avec une Application Web

Objectif

  • Créer un cluster Amazon EKS avec des nœuds managés.
  • Déployer une application Nginx sur le cluster.
  • Exposer l’application via un Load Balancer.
  • Mettre en place l’autoscaling des pods.

Gérer l’accès réseau avec des Security Groups et IAM Roles.

Pré-requis

  • Un compte AWS actif.
  • AWS CLI installé et configuré.
  • eksctl, kubectl, et Helm installés.

Étape 1 : Création du cluster EKS

1.1 – Définir des variables

export CLUSTER_NAME=my-eks-cluster
export REGION=us-east-1
export NODEGROUP_NAME=my-nodegroup

 

1.2 – Créer le cluster avec eksctl

 

eksctl create cluster \

  --name $CLUSTER_NAME \

  --region $REGION \

  --nodegroup-name $NODEGROUP_NAME \

  --node-type t3.medium \

  --nodes 2 \

  --nodes-min 2 \

  --nodes-max 4 \

  --managed
  • t3.medium : Type de machine pour les nœuds.
  • 2 nœuds min, 4 max : Autoscaling des nœuds.
  • –managed : AWS gère les mises à jour du nœud.

Étape 2 : Vérification du cluster

aws eks --region $REGION update-kubeconfig --name $CLUSTER_NAME
kubectl get nodes
  • Vérifiez que les nœuds sont Ready.

Étape 3 : Déploiement d’une application Web

3.1 – Créer un fichier YAML de déploiement

				
					# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - containerPort: 80

				
			

Appliquer le déploiement :

				
					kubectl apply -f nginx-deployment.yaml
kubectl get pods

				
			

Étape 4 : Exposer l’application avec un Load Balancer

4.1 – Créer un Service de type LoadBalancer

yaml

				
					# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

				
			

Appliquer la configuration :

kubectl apply -f nginx-service.yaml
kubectl get svc

Notez l’adresse IP publique du Load Balancer.

Étape 5 : Mettre en place l’AutoScaling des Pods

5.1 – Activer Metrics Server

bash

				
					kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
				
			

Vérifiez que Metrics Server fonctionne :

bash

				
					kubectl get deployment metrics-server -n kube-system
				
			

5.2 – Configurer l’Horizontal Pod Autoscaler (HPA)

bash

				
					kubectl autoscale deployment nginx-deployment --cpu-percent=50 --min=2 --max=5
kubectl get hpa
				
			
  • Kubernetes ajuste le nombre de pods en fonction de l’utilisation CPU.

Étape 6 : Sécurisation du cluster

6.1 – Vérification des Security Groups

bash

aws ec2 describe-security-groups --region $REGION
  • Assurez-vous que le port 80 est ouvert sur le SG du Load Balancer.

6.2 – Vérification des IAM Roles

bash

eksctl get iamidentitymapping --cluster $CLUSTER_NAME
  • Assurez-vous que les rôles ont les permissions nécessaires (AmazonEKSWorkerNodePolicy).

Étape 7 : Nettoyage des ressources

eksctl delete cluster --name $CLUSTER_NAME --region $REGION
  • Supprime toutes les ressources AWS créées.

Conclusion

🎯 Dans ce lab, nous avons :

  • Créé un cluster EKS avec eksctl.
  • Déployé une application Nginx sur Kubernetes.
  • Exposé l’application avec un Load Balancer.
  • Configuré l’autoscaling des pods.
  • Sécurisé les accès avec Security Groups et IAM Roles.

Prêt à aller plus loin ? 🔥 Vous pouvez : ✅ Ajouter Ingress Controller avec Nginx Ingress.
✅ Mettre en place EFS pour le stockage persistant.
✅ Configurer Prometheus et Grafana pour la surveillance.

🚀 Bon apprentissage sur AWS EKS !

×

Panier