Skip to content

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 apply pour 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