HOME_ES - Dylalva/Project-CI-CD-Pipeline GitHub Wiki
📖 Descripción del Proyecto
En esta segunda parte del Proyecto de Redes, implementamos un pipeline de CI/CD para una aplicación web en Python (Flask), totalmente contenedorizada y desplegada en Azure Kubernetes Service (AKS). El flujo general es:
-
El código fuente vive en un repositorio GitHub.
-
Un servidor Jenkins, alojado en una máquina virtual de Azure, detecta cada push y:
- Construye la imagen Docker de la aplicación.
- La sube a Docker Hub (o Azure Container Registry).
-
Un cluster AKS extrae la nueva imagen y despliega la aplicación automáticamente.
Con este pipeline logramos entregas más rápidas, confiables y reproducibles de nuestra app Flask.
🔍 Flujo de Trabajo
- Push en GitHub →
- Jenkins (VM Azure) detecta cambio →
- Construye y empuja la imagen Docker →
- Actualiza tu cluster AKS →
- App Corriendo en Azure.
🧰 Tecnologías y Herramientas
- Python 3.x y Flask
- Docker (para construir imágenes y contenedores)
- Jenkins (instalado en una VM de Azure) / GitHub Actions
- Docker Hub
- Azure Kubernetes Service (AKS)
- Azure CLI y kubectl
📋 Requisitos Previos
Antes de empezar, asegúrate de tener:
- Azure Subscription activa.
- Una VM en Azure con Jenkins instalado y accesible.
- Cuenta en Docker Hub (o ACR) y credenciales disponibles.
- Cluster AKS creado, con
kubectl
configurado en la VM de Jenkins. - Azure CLI y kubectl instalados donde vayamos a ejecutar comandos.
- Acceso al repositorio GitHub con tu código Flask y
Dockerfile
listo.
🚀 Pasos para Montar Todo el Entorno
-
Clona el Repositorio
git clone https://github.com/Dylalva/Parte2Redes.git cd Parte2Redes
Aquí encontrarás:
. ├── app.py ├── Dockerfile ├── requirements.txt ├── .dockerignore ├── static/ └── templates/
-
Configura Jenkins en tu VM de Azure
Creación de la VM de Azure
Instalación y creación de Jenkins en la VM de Azure
Instalación y Configuración de Jenkins
-
Instala los plugins de Docker, Git y Azure CLI.
-
Crea Credentials para:
- Docker Hub (usuario/password).
- Azure Service Principal (para
az aks get-credentials
). - GitHub (si tu repo es privado).
-
-
Define el Pipeline en Jenkins
- Freestyle Job o Pipeline Job con un
Jenkinsfile
.
En este Repositorio se encuentra un archivo
Jenkinsfile
. - Freestyle Job o Pipeline Job con un
-
Crear Kubernetes Cluster
-
Prueba Final
- Haz un PUSH a la rama principal de tu repo GitHub.
- Observa en Jenkins cómo se dispara el pipeline.
- Una vez termine, entra a tu Load Balancer o dominio configurado para ver la app Flask en producción.