ADR 003 â Terraform Orchestrator et lessons apprises
Contexte
Sprint 2 â Restructuration des modules Terraform en un orchestrateur unique.
Décision
Création d'un module racine terraform/main.tf
qui orchestre tous les modules :
- vpc, eks, rds, ecr, iam
Avantages
- Un seul
terraform applypour tout déployer - Variables centralisées
- Dépendances gérées automatiquement
â ïž Lessons apprises
1. NAT Gateway obligatoire pour EKS
# Sans NAT Gateway â node group bloquĂ© en CREATING 27+ min
# Les nodes dans le subnet privé ne peuvent pas :
# - S'enregistrer auprĂšs de l'API EKS
# - Puller les images systĂšme (kube-proxy, CoreDNS)
# - Accéder aux APIs AWS (ECR, S3, CloudWatch)
# TOUJOURS utiliser create_nat_gateway=true avec EKS
create_nat_gateway = true
2. State S3 et restructuration des modules
Lors de la restructuration des modules individuels vers un orchestrateur unique, les anciens states S3 deviennent orphelins.
Ancien : terraform/vpc/ â state S3 : fastapi-eks/vpc/ Nouveau : terraform/modules/vpc/ â state S3 : fastapi-eks/main/
Solution :
- Option A : terraform import pour migrer les ressources
- Option B : terraform destroy puis restructurer puis terraform apply
En dev â Option B plus simple. En prod â toujours Option A pour Ă©viter toute interruption.
3. Ressources hors state
Si une ressource existe sur AWS mais pas dans le state Terraform :
# Terraform essaie de la recrĂ©er â conflit AWS
# Solution : importer dans le state
terraform import module.ecr.aws_ecr_repository.fastapi fastapi-eks/fastapi
# Ou supprimer et recréer (dev uniquement)
aws ecr delete-repository --repository-name fastapi-eks/fastapi --force
4. create_nat_gateway variable
# Dev â test RDS seul (Ă©conomie NAT Gateway)
create_nat_gateway = false # ~0$/h
# Dev â dĂ©ploiement EKS complet (obligatoire)
create_nat_gateway = true # ~0.045$/h
# Prod â toujours true
create_nat_gateway = true
Workflow quotidien recommandé
# Matin
awslogin
terraform apply -auto-approve
aws eks update-kubeconfig --region eu-west-3 --name fastapi-eks-cluster
# Soir
terraform destroy -auto-approve
Coût infrastructure complÚte
NAT Gateway â 0.045$/h
EKS Control â 0.10$/h t3.medium node â 0.047$/h RDS db.t3.microâ 0.02$/h âââââââââââââââââââââââââ Total â ~0.21$/h 4h/jour Ă 30j â ~25$
Références
- Ticket : #22 infra: create terraform main orchestrator
- Date : 2026-05-10