Optimiser le Déploiement Continu avec Kubernetes et Terraform

Introduction
Terraform provisionne le cluster, Kubernetes orchestre les applications : cette répartition des responsabilités est au coeur de tous mes projets depuis 5 ans. Chez F2R2, cette combinaison a permis de déployer une architecture AWS Multi-Compte complète avec EKS Fargate, Aurora et ArgoCD, le tout piloté par 25 modules Terraform. Retour d'expérience sur une stack qui a fait ses preuves.
Terraform pour provisionner les clusters Kubernetes
Mon approche : Terraform gère tout ce qui est sous le cluster (VPC, subnets, IAM roles, node groups, addons) et Kubernetes gère tout ce qui tourne dessus (Deployments, Services, Ingress). Chez TEKYN, j'ai provisionné l'intégralité de l'AWS Organization avec Terraform : ECS Fargate, CloudFront, Route53, et les Security Groups. Chaque environnement (dev, staging, prod) est un workspace Terraform distinct avec des tfvars spécifiques. Le résultat : une infrastructure reproductible à l'identique, où recréer un environnement complet prend 15 minutes au lieu de 2 jours manuellement.
EKS Fargate : le serverless Kubernetes en production
Chez F2R2, le choix d'EKS Fargate a simplifié l'opérationnel : plus de nodes à gérer, plus de patches OS, plus de Cluster Autoscaler. Terraform provisionne les Fargate Profiles, et chaque namespace a son propre profil avec des limites de ressources adaptées. Le coût est légèrement supérieur à EC2 Spot, mais le gain en temps d'opération compense largement. Pour les workloads batch, on a gardé des node groups EC2 Spot gérés par Karpenter, provisionné lui aussi via Terraform.
GitOps avec ArgoCD : le lien entre Terraform et Kubernetes
Une fois le cluster provisionné par Terraform, ArgoCD prend le relais pour le déploiement applicatif. Chez Padam Mobility, j'ai mis en place un workflow GitOps complet : les Helm Charts sont versionnés dans un repo dédié, ArgoCD synchronise automatiquement les changements, et chaque environnement a son propre ApplicationSet. La beauté du système : un développeur merge une PR avec un changement de version d'image, et 90 secondes plus tard l'application est déployée en staging sans intervention manuelle.
Automatiser les tests sur des environnements éphémères
Un avantage sous-exploité de Terraform + Kubernetes : la création d'environnements de test à la volée. Chez Bloomflow, chaque feature branch peut provisionner un namespace Kubernetes dédié avec ses propres bases de données (via Terraform pour les ressources cloud, Helm pour les dépendances in-cluster). Les tests d'intégration tournent dans cet environnement isolé, puis tout est nettoyé automatiquement. Le coût additionnel est négligeable (quelques euros par PR), mais la confiance dans les déploiements est maximale.
Observabilité de bout en bout
La stack d'observabilité est elle aussi déployée via Terraform (pour les ressources managed) et Helm/ArgoCD (pour les composants in-cluster). Chez Metronome, j'ai déployé Grafana, Prometheus, Loki et Tempo sur le cluster OVH avec des Helm Charts managés par ArgoCD. Les dashboards Grafana montrent en temps réel la santé des déploiements, les métriques applicatives et les logs centralisés. Quand un terraform apply modifie l'infra, les métriques de santé du cluster sont automatiquement surveillées pour détecter tout impact.
Conclusion
Terraform et Kubernetes sont complémentaires par design : l'un gère l'infrastructure, l'autre gère les applications. Avec ArgoCD comme pont GitOps entre les deux, vous obtenez un pipeline de déploiement continu complet, auditable et reproductible. C'est cette stack que je déploie systématiquement, de la startup au grand compte, et elle n'a jamais déçu.