Introducción

En este módulo, exploraremos dos herramientas fundamentales en el ecosistema de CI/CD: Docker y Kubernetes. Docker facilita la creación y gestión de contenedores, mientras que Kubernetes se encarga de la orquestación de estos contenedores a gran escala. Juntas, estas tecnologías permiten una implementación más eficiente y escalable de aplicaciones.

Docker

Conceptos Básicos

  • Contenedor: Un contenedor es una unidad estándar de software que empaqueta el código y todas sus dependencias para que la aplicación se ejecute de manera rápida y confiable en diferentes entornos.
  • Imagen: Una imagen de Docker es una plantilla inmutable que contiene el conjunto de instrucciones necesarias para crear un contenedor.
  • Dockerfile: Un archivo de texto que contiene todas las instrucciones para construir una imagen de Docker.

Instalación de Docker

Para instalar Docker, sigue las instrucciones específicas para tu sistema operativo en la documentación oficial de Docker.

Creación de una Imagen de Docker

Un ejemplo básico de un Dockerfile para una aplicación Node.js podría ser:

# Usar una imagen base de Node.js
FROM node:14

# Establecer el directorio de trabajo
WORKDIR /app

# Copiar el archivo package.json y package-lock.json
COPY package*.json ./

# Instalar las dependencias
RUN npm install

# Copiar el resto del código de la aplicación
COPY . .

# Exponer el puerto en el que la aplicación se ejecutará
EXPOSE 3000

# Comando para ejecutar la aplicación
CMD ["node", "app.js"]

Construcción y Ejecución de una Imagen

Para construir y ejecutar una imagen de Docker, utiliza los siguientes comandos:

# Construir la imagen
docker build -t my-node-app .

# Ejecutar un contenedor basado en la imagen
docker run -p 3000:3000 my-node-app

Ejercicio Práctico

Objetivo: Crear una imagen de Docker para una aplicación simple de Node.js y ejecutarla en un contenedor.

  1. Crea un archivo Dockerfile en el directorio raíz de tu proyecto.
  2. Copia el contenido del ejemplo anterior en tu Dockerfile.
  3. Construye la imagen usando el comando docker build -t my-node-app ..
  4. Ejecuta el contenedor con el comando docker run -p 3000:3000 my-node-app.
  5. Accede a http://localhost:3000 en tu navegador para ver la aplicación en funcionamiento.

Kubernetes

Conceptos Básicos

  • Cluster: Un conjunto de máquinas (nodos) que ejecutan contenedores gestionados por Kubernetes.
  • Pod: La unidad más pequeña y básica de Kubernetes, que puede contener uno o más contenedores.
  • Deployment: Un objeto de Kubernetes que gestiona la creación y escalado de Pods.
  • Service: Un objeto de Kubernetes que define una política de acceso a los Pods.

Instalación de Kubernetes

Para instalar Kubernetes, puedes utilizar herramientas como Minikube para entornos locales o seguir las instrucciones de la documentación oficial de Kubernetes.

Creación de un Deployment

Un archivo de configuración YAML para un Deployment de Kubernetes podría ser:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-node-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-node-app
  template:
    metadata:
      labels:
        app: my-node-app
    spec:
      containers:
      - name: my-node-app
        image: my-node-app:latest
        ports:
        - containerPort: 3000

Creación de un Service

Un archivo de configuración YAML para un Service de Kubernetes podría ser:

apiVersion: v1
kind: Service
metadata:
  name: my-node-app-service
spec:
  selector:
    app: my-node-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
  type: LoadBalancer

Despliegue en Kubernetes

Para desplegar tu aplicación en Kubernetes, sigue estos pasos:

  1. Asegúrate de tener una imagen de Docker disponible en un registro accesible por Kubernetes.
  2. Aplica los archivos de configuración YAML usando kubectl:
# Crear el Deployment
kubectl apply -f deployment.yaml

# Crear el Service
kubectl apply -f service.yaml

Ejercicio Práctico

Objetivo: Desplegar una aplicación Node.js en un clúster de Kubernetes.

  1. Crea un archivo deployment.yaml con el contenido del ejemplo anterior.
  2. Crea un archivo service.yaml con el contenido del ejemplo anterior.
  3. Asegúrate de que tu imagen de Docker esté disponible en un registro (por ejemplo, Docker Hub).
  4. Aplica los archivos de configuración usando kubectl apply -f deployment.yaml y kubectl apply -f service.yaml.
  5. Verifica que los Pods y el Service se hayan creado correctamente usando kubectl get pods y kubectl get services.

Conclusión

En este módulo, hemos cubierto los conceptos básicos y la configuración de Docker y Kubernetes. Docker permite empaquetar aplicaciones y sus dependencias en contenedores, mientras que Kubernetes facilita la orquestación y gestión de estos contenedores a gran escala. Con estas herramientas, puedes mejorar significativamente la eficiencia y escalabilidad de tus procesos de CI/CD.

Resumen

  • Docker: Herramienta para crear y gestionar contenedores.
  • Kubernetes: Plataforma para la orquestación de contenedores.
  • Ejercicios Prácticos: Creación de imágenes de Docker y despliegue en Kubernetes.

Con estos conocimientos, estás preparado para integrar Docker y Kubernetes en tus pipelines de CI/CD, mejorando así la entrega continua de tus aplicaciones.

© Copyright 2024. Todos los derechos reservados