Skip to content

AlfreMu/devops-challenge-flask-angular

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevOps Challenge — Flask (Backend) + Angular (Frontend)

Objetivo:

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.

Stack

  • 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)

Arquitectura

  • Monorepo con backend/ y frontend/
  • 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

Quick start — Docker Compose (local)

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

Accesos

docker ps
  • Bajar contenedores:
docker compose down

CI/CD

CI
CD

El 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

Kubernetes

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

Infraestructura como Codigo (IaC):

  • 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

Observabilidad:

  • 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


Estado del proyecto

  • ✅ 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.

About

Challenge DevOps Jr: Dockerizar Flask + Angular, servir Angular con Nginx, CI/CD build & push, Docker Compose y manifests Kubernetes básicos, con documentación clara.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors