Esse projeto usa Terraform para provisionar infraestrutura completa na AWS: VPC, RDS PostgreSQL e cluster EKS.
- Instalar Terraform: https://developer.hashicorp.com/terraform/install
- Configurar AWS CLI:
aws configurecom suas credenciais - Verificar acesso:
aws sts get-caller-identity
accountId = "964022050595" # Seu AWS Account ID
roleName = "LabRole" # Nome da sua IAM Role
# Usar role existente (obrigatório para AWS Academy)
eks_cluster_role_arn = "arn:aws:iam::964022050595:role/LabRole"
eks_node_group_role_arn = "arn:aws:iam::964022050595:role/LabRole"# Account ID
aws sts get-caller-identity --query Account --output text
# Role ARN (extrair o nome da role)
aws sts get-caller-identity --query Arn --output textcd infra
# 1. Inicializar Terraform
terraform init
# 2. Validar configuração
terraform validate
# 3. Ver plano de execução
terraform plan
# 4. Aplicar mudanças (aguardar ~15 minutos)
terraform apply
# 5. Anotar os outputs
terraform output- VPC (10.0.0.0/16)
- Subnet Pública (10.0.1.0/24) - us-east-1a
- Subnet Privada (10.0.2.0/24) - us-east-1a
- Subnet Privada B (10.0.3.0/24) - us-east-1b
- Security Groups para EKS e RDS
- RDS PostgreSQL 14.9
- Instância: db.t3.micro
- Storage: 20GB gp2
- Multi-AZ: Não
- Backup: Desabilitado (skip_final_snapshot)
- Cluster EKS (garage-cluster)
- Node Group com 2-3 instâncias t3.medium
- Auto-scaling: 1 min, 3 max, 2 desired
- Usa LabRole existente (sem criar IAM roles)
# Configurar kubectl
aws eks update-kubeconfig --region us-east-1 --name garage-cluster
# Verificar conexão
kubectl get nodes# Endpoint do cluster EKS
terraform output kubeconfig
# Endpoint do RDS (usar no ConfigMap do Kubernetes)
terraform output rds_endpoint
# Porta do RDS
terraform output rds_portSolução: Use a LabRole existente no terraform.tfvars (já configurado)
Solução: Versão 14.9 é estável e amplamente suportada
Solução: Aguarde até 20 minutos, é normal para criação de cluster
# ATENÇÃO: Remove TODOS os recursos
terraform destroy