Este documento describe cómo se provisiona y opera la infraestructura cloud del proyecto utilizando Infrastructure as Code (IaC).
El objetivo es demostrar un flujo simple, reproducible y real, adecuado para un proyecto de portfolio DevOps Jr.
- Provisionar infraestructura cloud desde código
- Ejecutar Kubernetes real (k3s)
- Soportar el deploy de aplicaciones backend y frontend
- Integrarse con CI/CD
- Mantener un alcance simple (sin overengineering)
- Cloud provider: AWS
- IaC: Terraform
- Compute: EC2
- OS: Ubuntu Server 22.04 LTS
- Orquestación: Kubernetes (k3s)
- CI/CD: GitHub Actions (self-hosted runner)
Componentes principales:
- 1 instancia EC2 (
t3.medium) - Security Group con reglas mínimas
- k3s instalado sobre la instancia
- Self-hosted runner para CD manual
- Aplicaciones desplegadas en Kubernetes
- Observabilidad corriendo en el mismo cluster
No se utilizan servicios administrados (EKS, ALB, RDS, etc.) para mantener el proyecto simple y enfocado.
infra/
└── terraform/
├── main.tf
├── variables.tf
├── outputs.tf
└── provider.tf
- Terraform instalado
- Credenciales AWS configuradas (
aws configure) - Key Pair existente en AWS (para acceso SSH)
La infraestructura se despliega en:
- Región:
sa-east-1(São Paulo) - Tipo de instancia:
t3.medium - Sistema operativo: Ubuntu Server 22.04 LTS
La elección de t3.medium permite ejecutar:
- k3s
- workloads de aplicación
- observabilidad básica (Prometheus + Grafana)
sin problemas de memoria.
Desde el root del repositorio:
cd infra/terraform
terraform init
terraform plan
terraform applyTerraform crea y mantiene:
- 1 instancia EC2
- 1 Security Group
- Reglas de red asociadas
No se utilizan servicios administrados (EKS, ALB, etc.) para mantener el alcance simple.
El Security Group define reglas mínimas y explícitas, pensadas para operación y demo.
Reglas de entrada (Inbound)
- SSH (22)
- Permitido solo desde la IP del operador
- NodePort — Frontend
- Acceso a la aplicación Angular
- NodePort — Backend
- Acceso a la API Flask
- NodePort — Grafana
- Acceso a dashboards de observabilidad (solo para demo)
SSH no se expone de forma permanente a 0.0.0.0/0.
El Security Group define reglas mínimas y explícitas, pensadas para operación y demo.
Reglas de salida (Outbound)
Todo el tráfico permitido (configuración por defecto)
- EC2 en lugar de EKS para reducir complejidad
- k3s para Kubernetes liviano y real
- Infra mínima, reproducible y fácil de entender