Realicé un análisis de brechas de habilidades sobre mi trayectoria como ingeniero DevOps buscando mi siguiente reto profesional y detecté que, aunque había construido proyectos pequeños, aún no había desarrollado un proyecto cloud native de grado de producción que integrara todas las prácticas clave de DevOps. Me propuse diseñar, desplegar y gestionar una aplicación Student Tracker basada en FastAPI con backend en MongoDB, poniendo el foco en funcionalidades DevOps más que en la interfaz de usuario. Este proyecto me permitió unificar containerización, Kubernetes, Helm, CI CD, GitOps, monitoring y observabilidad en un único flujo de trabajo.

Resumen del proyecto: diseño e implementación de una aplicación de seguimiento de estudiantes con FastAPI y MongoDB, desplegada en contenedores Docker, orquestada con Kubernetes y gestionada con Helm y ArgoCD en un enfoque GitOps, además de incluir pipelines de CI CD y un stack de observabilidad con Prometheus, Grafana, Loki y Tempo.

Requisitos previos: editor de código como VS Code, una terminal, opcionalmente una instancia en la nube, conocimientos básicos de Docker y Kubernetes, y herramientas como kubectl, helm y kind. En mi caso utilicé una instancia EC2 en AWS para replicar un entorno similar a producción.

Términos clave y componentes: Docker para construir y empaquetar la aplicación. Kubernetes para automatizar despliegues y escalado. Ingress para enrutar tráfico HTTP y HTTPS hacia servicios dentro del cluster. Helm y Helm charts como gestor de paquetes para Kubernetes. GitOps como modelo que toma a Git como única fuente de verdad. ArgoCD como controlador que sincroniza el estado en clúster con el estado deseado en Git. Monitoring y observabilidad para correlacionar métricas, logs y trazas y entender el estado interno de la aplicación. Vault para la gestión segura de secretos como credenciales y claves.

Proceso paso a paso: 1 Probar la aplicación localmente. Instalé Python, creé y activé un entorno virtual, instalé dependencias desde requirements.txt, exporté credenciales de Vault por CLI y ejecuté la app con uvicorn. Probé la API desde el navegador o herramienta de pruebas REST en http://ip_publica:8000 y registré usuarios de prueba. 2 Containerizar y publicar en Docker Hub. Creé un Dockerfile, construí la imagen y la probé localmente en contenedor con las variables de entorno necesarias. Autenticado en Docker Hub desde la CLI, subí la imagen al repositorio. 3 Crear un clúster Kubernetes con Kind para pruebas locales. Kind ejecuta nodos Kubernetes como contenedores Docker; requiere un archivo de configuración y Docker instalado. 4 Desplegar en Kubernetes. Definí manifiestos Kubernetes para namespace, secrets, deployment, service e ingress. Instalé un controlador de ingress como nginx ingress controller y expuse la aplicación mediante un host de ingress. Verifiqué recursos con kubectl get all -n namespace y accedí a la app vía host de ingress. 5 Desplegar con Helm. Creé un chart desde cero, personalicé Chart.yaml y templates, añadí el repositorio del controlador nginx ingress y lo instalé con Helm. Instalé mi chart indicando namespace y fichero de valores personalizados para parametrizar imagen, replicas, recursos y secrets. 6 Implementar CI CD con GitHub Actions. Definí workflows en .github/workflows que reaccionan a push en main. El pipeline construye la imagen, ejecuta pruebas, y despliega a una instancia EC2 mediante ssh o acciones específicas. Guardé credenciales e IPs como secrets en GitHub y verifiqué el despliegue en la instancia destino. Como desarrollador añadí una vista admin en la app y al pushear los cambios el pipeline volvió a desplegar y la ruta /admin quedó accesible. 7 Adoptar GitOps con ArgoCD. Para separar responsabilidades creé un repositorio GitOps independiente que contiene las definiciones de aplicación y valores Helm. Instalé ArgoCD con Helm en un namespace argocd, configuré el servidor para acceso y utilicé la UI y/o manifiestos application para registrar mi aplicación. Automatizé el flujo para que un pipeline actualice la imagen en values.yaml y al hacer commit ArgoCD detecta el cambio y sincroniza el clúster. 8 Implementar monitoring y observabilidad con LGTP. Modifiqué el código para exponer métricas Prometheus, y desplegué kube-prometheus-stack que incluye Prometheus y Grafana, además de Tempo y Loki para trazas y logs. Definí aplicaciones ArgoCD siguiendo el patrón app of apps para gestionar los distintos componentes desde una aplicación padre. Añadí las fuentes de datos en Grafana y construí dashboards para métricas críticas, paneles de logs en Loki y trazas en Tempo.

Errores comunes y soluciones: Error 1 problemas de acceso por puertos cerrados. Detecté mediante nmap que solo estaba accesible el puerto 22 y parcheé el deployment del controlador ingress para usar hostNetwork en Kind porque los pods en contenedores no exponen puertos del host por defecto. Error 2 despliegue en ArgoCD fallido por usar un fichero de valores personalizado. Solución: mantener valores por defecto en values.yaml y especificar en ArgoCD el fichero my-values.yaml a usar. Error 3 module not found en los logs de ArgoCD por rutas incorrectas en el Dockerfile tras reorganizar el proyecto. Solución: corregir rutas y estructura del Dockerfile para que Python encuentre los módulos correctamente.

Conclusión: este proyecto fue un antes y un después en mi camino DevOps. Construir un Student Tracker cloud native con FastAPI, MongoDB y todo el ecosistema DevOps me enseñó a diseñar flujos end to end desde el testing local hasta despliegues listos para producción, a cómo GitOps con ArgoCD simplifica la gestión de clústeres, y a la importancia de unir logs, métricas y trazas para lograr observabilidad. Los errores forman parte del aprendizaje y el debugging aporta más que los despliegues sin fricciones.

Sobre Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software centrada en ofrecer soluciones a medida y servicios profesionales en áreas como aplicaciones a medida, software a medida, inteligencia artificial y ciberseguridad. Diseñamos y desplegamos arquitecturas cloud y pipelines DevOps adaptadas a las necesidades de cada cliente y ofrecemos servicios de desarrollo de aplicaciones a medida que incluyen integración continua, despliegues automatizados y seguridad desde el diseño. Además apoyamos infraestructuras en la nube con servicios cloud AWS y Azure, ofrecemos soluciones de inteligencia de negocio y power bi y desarrollamos agentes IA y proyectos de ia para empresas para impulsar la automatización y la analítica avanzada. Si buscas un partner que combine experiencia en DevOps, observabilidad, bases de datos NoSQL como MongoDB y capacidades de inteligencia artificial y ciberseguridad, Q2BSTUDIO ofrece equipos multidisciplinares capaces de llevar iniciativas desde la prueba de concepto hasta producción.

Palabras clave integradas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.