En este ejercicio, aprenderás a configurar y ejecutar un despliegue continuo en un entorno de producción utilizando una herramienta de CI/CD. Este ejercicio te permitirá aplicar los conceptos aprendidos en los módulos anteriores y te dará una experiencia práctica en la implementación de un pipeline de despliegue.

Objetivos del Ejercicio

  1. Configurar un pipeline de despliegue continuo.
  2. Automatizar el proceso de despliegue en un entorno de producción.
  3. Implementar estrategias de despliegue seguras y eficientes.
  4. Monitorear y verificar el despliegue.

Requisitos Previos

  • Conocimiento básico de CI/CD.
  • Familiaridad con una herramienta de CI/CD (Jenkins, GitLab CI/CD, CircleCI, etc.).
  • Acceso a un entorno de producción (puede ser un servidor en la nube como AWS, Azure, o Google Cloud).
  • Conocimiento básico de Docker y Kubernetes (opcional, pero recomendado).

Paso 1: Configuración del Pipeline de Despliegue

1.1. Definir el Pipeline

Primero, definiremos un pipeline básico para el despliegue. Aquí utilizaremos GitLab CI/CD como ejemplo, pero puedes adaptar los pasos a tu herramienta preferida.

stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - echo "Building the application..."
    - ./build.sh

test:
  stage: test
  script:
    - echo "Running tests..."
    - ./test.sh

deploy:
  stage: deploy
  script:
    - echo "Deploying to production..."
    - ./deploy.sh
  environment:
    name: production
    url: http://your-production-url.com

Explicación del Código

  • stages: Define las etapas del pipeline (build, test, deploy).
  • build: Etapa de construcción donde se compila la aplicación.
  • test: Etapa de pruebas donde se ejecutan los tests automatizados.
  • deploy: Etapa de despliegue donde se despliega la aplicación en el entorno de producción.
  • environment: Define el entorno de despliegue (producción) y la URL del entorno.

Paso 2: Automatización del Despliegue

2.1. Crear el Script de Despliegue

Crea un script deploy.sh que contenga los comandos necesarios para desplegar tu aplicación en el entorno de producción.

#!/bin/bash

# Detener el contenedor existente
docker stop my_app_container || true
docker rm my_app_container || true

# Descargar la última imagen de Docker
docker pull my_dockerhub_username/my_app:latest

# Ejecutar el nuevo contenedor
docker run -d --name my_app_container -p 80:80 my_dockerhub_username/my_app:latest

echo "Despliegue completado con éxito."

Explicación del Código

  • docker stop: Detiene el contenedor existente.
  • docker rm: Elimina el contenedor existente.
  • docker pull: Descarga la última imagen de Docker desde Docker Hub.
  • docker run: Ejecuta un nuevo contenedor con la última imagen.

Paso 3: Implementar Estrategias de Despliegue

3.1. Despliegue Azul-Verde

Una estrategia común para minimizar el tiempo de inactividad es el despliegue azul-verde. Aquí, mantienes dos entornos (azul y verde) y alternas entre ellos para los despliegues.

deploy:
  stage: deploy
  script:
    - echo "Deploying to green environment..."
    - ./deploy_green.sh
  environment:
    name: production
    url: http://your-production-url.com

3.2. Crear el Script de Despliegue Verde

#!/bin/bash

# Detener el contenedor verde existente
docker stop my_app_container_green || true
docker rm my_app_container_green || true

# Descargar la última imagen de Docker
docker pull my_dockerhub_username/my_app:latest

# Ejecutar el nuevo contenedor verde
docker run -d --name my_app_container_green -p 8080:80 my_dockerhub_username/my_app:latest

# Actualizar el balanceador de carga para apuntar al contenedor verde
./update_load_balancer.sh my_app_container_green

echo "Despliegue verde completado con éxito."

Explicación del Código

  • update_load_balancer.sh: Un script adicional que actualiza el balanceador de carga para apuntar al nuevo contenedor verde.

Paso 4: Monitorear y Verificar el Despliegue

4.1. Monitoreo

Utiliza herramientas de monitoreo como Prometheus, Grafana o ELK Stack para monitorear el estado de tu aplicación y el entorno de producción.

4.2. Verificación

Realiza pruebas manuales y automatizadas para verificar que el despliegue se ha realizado correctamente y que la aplicación funciona como se espera.

Ejercicio Práctico

  1. Configura un pipeline de despliegue continuo en tu herramienta de CI/CD preferida utilizando los ejemplos proporcionados.
  2. Crea y ejecuta el script de despliegue para desplegar tu aplicación en el entorno de producción.
  3. Implementa una estrategia de despliegue azul-verde y actualiza el balanceador de carga para alternar entre los entornos azul y verde.
  4. Monitorea y verifica el despliegue utilizando herramientas de monitoreo y pruebas automatizadas.

Solución

Pipeline de Despliegue

stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - echo "Building the application..."
    - ./build.sh

test:
  stage: test
  script:
    - echo "Running tests..."
    - ./test.sh

deploy:
  stage: deploy
  script:
    - echo "Deploying to green environment..."
    - ./deploy_green.sh
  environment:
    name: production
    url: http://your-production-url.com

Script de Despliegue Verde

#!/bin/bash

# Detener el contenedor verde existente
docker stop my_app_container_green || true
docker rm my_app_container_green || true

# Descargar la última imagen de Docker
docker pull my_dockerhub_username/my_app:latest

# Ejecutar el nuevo contenedor verde
docker run -d --name my_app_container_green -p 8080:80 my_dockerhub_username/my_app:latest

# Actualizar el balanceador de carga para apuntar al contenedor verde
./update_load_balancer.sh my_app_container_green

echo "Despliegue verde completado con éxito."

Retroalimentación y Consejos

  • Errores Comunes: Asegúrate de que los nombres de los contenedores y las imágenes de Docker sean correctos. Verifica que los scripts tengan permisos de ejecución (chmod +x script.sh).
  • Consejos Adicionales: Implementa pruebas de integración y de extremo a extremo (E2E) en tu pipeline para garantizar que la aplicación funcione correctamente después del despliegue.

Conclusión

En este ejercicio, has aprendido a configurar y ejecutar un despliegue continuo en un entorno de producción. Has implementado un pipeline de despliegue, automatizado el proceso de despliegue, aplicado estrategias de despliegue seguras y monitoreado el despliegue. Estos conocimientos te preparan para gestionar despliegues en entornos reales de manera eficiente y segura.

© Copyright 2024. Todos los derechos reservados