Demostrar, de punta a punta, cómo: contenerizar aplicaciones backend y frontend, automatizar build & push de imágenes, provisionar infraestructura con IaC, desplegar en Kubernetes en EC2 y operar el cluster con observabilidad.
El foco está puesto en:
- simplicidad
- buenas prácticas
- ejecución real.
- Backend: Flask
- Frontend: Angular servido con Nginx.
- CI/CD: GitHub Actions
- CI automatico (build & push)
- CD manual (self-hosted runner)
- Registry: GitHub Container Registry (GHCR)
- Contenedores: Docker
- Orquestación: Kubernetes (k3s)
- Infraestructura: Terraform + AWS EC2
- Observabilidad: Prometheus + Grafana (Helm)
- Monorepo con
backend/yfrontend/ - CI construye y publica imágenes en GHCR
- Infraestructura provisionada con Terraform
- Cluster Kubernetes (k3s) corriendo en EC2
- Deploy vía CD manual con self-hosted runner
- Observabilidad activa sobre el cluster
Requisitos:
- Docker + Docker Compose
git clone https://github.com/AlfreMu/devops-challenge-flask-angular.git
cd devops-challenge-flask-angular/compose
docker compose up -d-
Frontend: http://localhost:8080
-
Backend: http://localhost:5000
-
Ver contenedores:
docker ps- Bajar contenedores:
docker compose downEl proyecto cuenta con un pipeline de CI unificado implementado con GitHub Actions, encargado de construir y publicar imágenes del backend y frontend en GitHub Container Registry (GHCR).
CI:
- Build automático en push y pull request a main.
- Imágenes versionadas con tags latest y sha.
- Las imágenes generadas por CI son consumidas tanto por Docker Compose como por Kubernetes.
CD:
- Self-hosted runner instalado en la EC2
- Deploy manual controlado:
git pull
kubectl apply👉 Ver documentación técnica de CI/CD:
📄 CI/CD – GitHub Actions
El proyecto incluye manifests de Kubernetes unificados y simples, preparados para desplegar el backend y frontend en un entorno real.
- Namespace dedicado (devops-challenge).
- Deployments y Services separados.
- Requests y limits de CPU/memoria definidos.
- Los manifests están preparados para ejecutarse en un cluster Kubernetes real (por ejemplo k3s sobre EC2).
👉 Ver documentación técnica de Kubernetes:
📄 Kubernetes
- AWS EC2 provisionada con Terraform
- Instalación de k3s sobre la instancia
- Security Groups mínimos
- Self-hosted runner para CD
👉 Ver documentación técnica de Infraestructura:
📄 Infraestructura
- Stack de observabilidad instalado vía Helm
- Prometheus + Grafana en namespace monitoring
- Métricas de:
-node
- pods
- recursos (CPU / memoria)
- Dashboards funcionales y targets en estado UP
👉 Ver documentación técnica de Observabilidad:
📄 Observabilidad
- ✅ Proyecto completo y funcional
- ✅ Ejecutado sobre infraestructura real
- ✅ Pensado como primer proyecto de portfolio DevOps Jr
Autor: Alfre Muñiz. Proyecto desarrollado como parte de un proceso de formación y transición a DevOps / Cloud.