déployer un cluster Kubernetes sur AWS EKS avec Terraform pour votre SaaS Node.js
06/08/2025
Pour une application SaaS Node.js, évoluer sans couture et garantir haute disponibilité passe souvent par Kubernetes. Dans ce tutoriel, nous expliquons comment provisionner un cluster Kubernetes sur AWS EKS avec Terraform
, configurer kubectl
et déployer votre service Node.js en production.
1. Prérequis et outils
- Compte AWS avec droits IAM suffisants pour EKS et IAM Roles
- AWS CLI v2 configuré (
aws configure
) - Terraform ≥ 1.5 (installer depuis terraform.io)
- kubectl configuré
- Docker pour builder votre image Node.js
2. Définir l’infrastructure avec Terraform
Créez un fichier main.tf
:
terraform {
required_providers {
aws = { source = "hashicorp/aws" version = "~> 4.0" }
}
}
provider "aws" {
region = "eu-west-1"
}
module "eks_cluster" {
source = "terraform-aws-modules/eks/aws"
version = "19.0.0"
cluster_name = "saas-nodejs-cluster"
cluster_version = "1.27"
subnets = ["subnet-xxx", "subnet-yyy"]
vpc_id = var.vpc_id
node_groups = {
default = {
desired_capacity = 2
max_capacity = 4
min_capacity = 2
instance_type = "t3.medium"
}
}
}
Exécutez ensuite :
terraform init
terraform apply -auto-approve
3. Configurer kubectl et déployer l’application
Récupérez la config du cluster :
aws eks --region eu-west-1 update-kubeconfig --name saas-nodejs-cluster
Créez un deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: saas-app
spec:
replicas: 3
selector:
matchLabels:
app: saas
template:
metadata:
labels:
app: saas
spec:
containers:
- name: nodejs
image: your-account.dkr.ecr.eu-west-1.amazonaws.com/saas-nodejs:latest
ports:
- containerPort: 3000
Appliquez ensuite :
kubectl apply -f deployment.yaml
kubectl expose deployment saas-app --type=LoadBalancer --port=80 --target-port=3000
4. Activer l’auto-scaling et le monitoring
Installez le Metrics Server pour le HPA (Horizontal Pod Autoscaler) :
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Puis créez un HPA :
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: saas-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: saas-app
minReplicas: 2
maxReplicas: 6
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
5. Bonnes pratiques sécurité et coûts
- Attribuez des IAM Roles dédiés aux Worker Nodes (module EKS
worker_iam_role_name
). - Activez les Pod Security Policies ou Admission Controller pour limiter les privilèges.
- Privilégiez les spot instances pour réduire jusqu’à 70 % des coûts du compute.
- Activez la rotation des secrets via AWS Secrets Manager pour vos variables sensibles (DB, API keys).
Observabilité avancée
Pour suivre la performance en temps réel, déployez Prometheus & Grafana en service. Vous pouvez exposer les métriques au format /metrics
et configurer des alertes sur la latence ou l’usage CPU.
Optimisation des temps de déploiement
- Utilisez des build pipelines avec GitHub Actions pour automatiser le
docker build
et leterraform apply
. - Empaquetez vos modules Terraform en registry privée pour réduire les temps d’init.
Vous disposez maintenant d’un cluster EKS scalable et sécurisé pour faire évoluer votre SaaS Node.js en toute sérénité.
Besoin d’aide pour implémenter cette architecture ? Contactez nos experts.