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 !