Le but de cette étape est de provisionner automatiquement une infrastructure cloud robuste et scalable à l'aide de Terraform, un outil d'Infrastructure as Code (IaC). Cette infrastructure sera utilisée pour déployer une application web sur un cluster Kubernetes.
L'infrastructure peut être provisionnée sur AWS, GCP ou Azure. Pour un environnement local, Vagrant peut être utilisé avec K3s.
Si AWS est choisi, l'infrastructure inclura :
Si GCP est choisi, l'infrastructure inclura :
Si Azure est choisi, l'infrastructure inclura :
Si l'environnement local est préféré, les composants suivants seront provisionnés :
L'infrastructure sera décrite dans plusieurs fichiers Terraform.
main.tf - Définition principaleprovider "aws" { region = "us-east-1" } module "network" { source = "terraform-aws-modules/vpc/aws" version = "3.19.0" name = "my-vpc" cidr = "10.0.0.0/16" } module "eks" { source = "terraform-aws-modules/eks/aws" cluster_name = "my-cluster" cluster_version = "1.21" vpc_id = module.network.vpc_id }
variables.tf - Définition des variablesvariable "region" { default = "us-east-1" } variable "cluster_name" { default = "my-cluster" }
outputs.tf - Exportation des valeurs utilesoutput "cluster_id" { value = module.eks.cluster_id }
Les commandes suivantes sont utilisées pour déployer l'infrastructure :
terraform init # Initialisation du projet Terraform terraform plan # Aperçu des modifications terraform apply # Provisionnement effectif
Terraform stocke l'état de l'infrastructure dans un fichier terraform.tfstate. Pour réinitialiser l'infrastructure :
terraform destroy # Supprime toutes les ressources créées
L'utilisation de Terraform permet de déployer une infrastructure reproductible et scalable en quelques minutes. Cette base solide sert de fondation pour la suite du projet, notamment la configuration des serveurs et le déploiement des conteneurs sur Kubernetes.