déployer un cluster amazon eks avec terraform : guide complet pour développeurs
02/11/2025
déployer un cluster Amazon EKS avec Terraform étape par étape
Dans ce tutoriel destiné aux ingénieurs DevOps et développeurs backend, nous allons voir comment déployer un cluster Amazon EKS avec Terraform. Vous apprendrez à écrire vos premiers fichiers Terraform, gérer les rôles IAM, créer un VPC adapté, puis provisionner un cluster Kubernetes managé (EKS) sur AWS. Enfin, vous découvrirez quelques bonnes pratiques de sécurité et d’optimisation des coûts.
1. Prérequis et installation des outils
- Un compte AWS avec les droits d’administration
- Terraform 1.5+ (téléchargeable depuis Terraform)
- AWS CLI configuré (
aws configure) kubectlethelminstallés
2. Structurer votre projet Terraform
Créez un dossier eks-terraform avec trois fichiers :
- provider.tf pour configurer AWS :
- vpc.tf pour créer le réseau :
- eks.tf pour provisionner EKS :
terraform {
required_version = ">= 1.5"
required_providers {
aws = { source = "hashicorp/aws", version = "~> 5.0" }
}
}
provider "aws" {
region = "eu-west-1"
}
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.0.0"
name = "eks-vpc"
cidr = "10.0.0.0/16"
public_subnets = ["10.0.1.0/24","10.0.2.0/24"]
private_subnets = ["10.0.3.0/24","10.0.4.0/24"]
enable_nat_gateway = true
}
module "eks" {
source = "terraform-aws-modules/eks/aws"
cluster_name = "novane-eks-cluster"
cluster_version = "1.27" # version Kubernetes
subnets = module.vpc.private_subnets
node_groups = {
default = {
desired_capacity = 2
max_capacity = 4
min_capacity = 1
instance_type = "t3.medium"
}
}
}
3. Initialiser et appliquer la configuration
- Initialisation :
terraform init - Plan :
terraform plan -out=plan.out - Application :
terraform apply "plan.out"
Attendez quelques minutes pendant le provisioning. À la fin, récupérez votre kubeconfig :
aws eks update-kubeconfig --name novane-eks-cluster --region eu-west-1
4. Déployer une application conteneurisée
Pour tester votre cluster, créez un Deployment NGINX :
kubectl create deployment nginx --image=nginx:stable
kubectl expose deployment nginx --port=80 --type=LoadBalancer
Vous pouvez lier vos conteneurs Docker à ce cluster. En savoir plus sur Docker.
5. Bonnes pratiques
- Utiliser des node groups versatil pour auto-scaling.
- Sécuriser l’accès avec AWS IAM Roles for Service Accounts (IRSA).
- Activer la rotation des clés AWS et le chiffrement des etcd.
- Surveiller avec Prometheus/Grafana ou notre service DevOps pour déléguer la gestion.
- Vérifier les quotas AWS et mettre en place un budgeting CloudWatch.
Erreurs fréquentes
| Message d’erreur | Cause probable | Solution |
|---|---|---|
| "InvalidSubnetID.NotFound" | Les subnets ne sont pas créés ou mal référencés | Vérifier module.vpc.private_subnets et relancer terraform apply |
| "AccessDenied" | Rôle IAM insuffisant | Ajouter eks:* et ec2:* dans la policy |
Conclusion
Vous disposez désormais d’un cluster Kubernetes managé EKS entièrement provisionné et versionné en Infrastructure as Code avec Terraform. Cette approche garantit reproductibilité, traçabilité et évolutivité. Vous pouvez maintenant y déployer toute application conteneurisée, monitorer votre flotte et optimiser les coûts.
Prochaines étapes : intégrer la CI/CD via Jenkins, sécuriser les ingress et mettre en place l’auto-scaling avancé.
Contactez nos experts si vous souhaitez déléguer la mise en place ou l’optimisation de votre infrastructure.
Vous pouvez aussi découvrir nos réalisations EKS et Terraform sur Novane Réalisations.

