Día 42 - Desafío Final Semana 6
🌟 Desafío Final: Roxs-voting-app con CI/CD
¡Llegaste al final! Hoy no hay nuevos conceptos: vas a demostrar TODO lo que sabes.
🎯 Tu Misión
Desplegar Roxs-voting-app en Kubernetes usando:
- ✅ CI/CD con GitHub Actions
- ✅ Múltiples ambientes (dev, staging, prod)
- ✅ Health checks y rollback automático
- ✅ Helm o kubectl (tú eliges)
Tiempo: 60-90 minutos
�️ Arquitectura de la App
vote (Flask) → Redis ← worker (Node.js) → PostgreSQL ← result (Node.js)
5 Componentes:
vote
: Frontend de votación (Flask)worker
: Procesa votos de Redis a PostgreSQLresult
: Muestra resultados (Node.js)redis
: Cache de votospostgresql
: Base de datos persistente
✅ Checklist del Desafío
📋 Paso 1: Preparación
- Cluster Kubernetes funcionando
- Imágenes Docker de los 5 componentes
- Repositorio en GitHub configurado
🔧 Paso 2: Configuración K8s
- Namespaces para cada ambiente
- Manifiestos YAML o Charts de Helm
- ConfigMaps y Secrets
- PersistentVolume para PostgreSQL
🚀 Paso 3: CI/CD
- Workflow de GitHub Actions
- Deploy automático por rama
- Health checks configurados
- Rollback en caso de error
✅ Paso 4: Validación
- App funciona en dev
- Deploy a staging automático
- Aprobación manual para prod
- Votos se persisten correctamente
🎓 Resumen de la Semana 6
Has aprendido:
- ✅ Día 36: Runners escalables con ARC
- ✅ Día 37: Múltiples ambientes en K8s
- ✅ Día 38: Health checks y rollbacks
- ✅ Día 39: Gestión con Helm
- ✅ Día 40: Pipeline con Helm
- ✅ Día 41: Pipeline completo con kubectl
- ✅ Día 42: Desafío final integrado
¡Felicitaciones! Ahora tienes las herramientas para implementar CI/CD profesional en cualquier empresa.
📸 ¡Comparte tu Éxito!
Cuando termines, comparte tu logro con #DevOpsConRoxs y muestra:
- Screenshots de tu pipeline funcionando
- La voting app desplegada en los 3 ambientes
- Lo que más te costó y cómo lo resolviste
¡Nos vemos en la Semana 7! 🚀
- Tener un clúster funcionando (Minikube o KIND)
- Haber practicado CI/CD en días anteriores
💼 Estructura sugerida de archivos Kubernetes
voting-app-k8s/
├── 01-namespace.yaml
├── 02-storage.yaml
├── 03-configs-secrets.yaml
├── 04-postgres.yaml
├── 05-redis.yaml
├── 06-vote.yaml
├── 07-worker.yaml
├── 08-result.yaml
└── deploy.sh
🤝 Tips para el despliegue
-
Crea un namespace:
voting-app
-
Persistencia: PostgreSQL debe tener volumen persistente
-
ConfigMaps y Secrets: variables como
REDIS_HOST
,POSTGRES_USER
, etc. -
Despliegue ordenado:
- Namespace + Configs + Storage
- PostgreSQL + Redis
- Vote, Worker, Result
🦜 Flujo CI/CD sugerido con GitHub Actions
test
: opcional si agregaste testsbuild & push
: Docker Hub (vote, worker, result)deploy
: aplicar manifiestos YAML conkubectl
Secretos requeridos:
DOCKER_USER
,DOCKER_TOKEN
KUBE_CONFIG
(kubeconfig base64)
✨ Validación final
Para considerar este día como completado:
- Todos los pods en
Running
- Aplicaciones accesibles desde navegador
- Votos funcionando (y persistiendo)
- Logs mostrando actividad del
worker
- Resultados reflejando cambios
🧰 Cierre del Día
🚀 ¡Lo lograste! Desplegar una app distribuida en Kubernetes con CI/CD no es menor.
🧵 Compartí en Discord con #DevOpsConRoxs - Día 42 tus capturas y aprendizajes.
La semana que viene cerramos este viaje de 90 días como se debe: con monitoreo, seguridad y mucho fuego DevOps. 🔥