En este tema, aprenderemos cómo desplegar una aplicación web en un clúster de Kubernetes. Cubriremos los siguientes puntos:
- Preparación del Entorno
- Creación del Dockerfile
- Construcción y Publicación de la Imagen Docker
- Creación de Manifiestos de Kubernetes
- Despliegue de la Aplicación
- Verificación del Despliegue
- Exposición de la Aplicación al Exterior
- Preparación del Entorno
Antes de comenzar, asegúrate de tener instalado y configurado lo siguiente:
- Docker
- Kubernetes (minikube o un clúster real)
- kubectl
- Creación del Dockerfile
Primero, necesitamos crear un Dockerfile para nuestra aplicación web. Supongamos que tenemos una aplicación web simple escrita en Node.js. Aquí está un ejemplo de Dockerfile:
# Usa una imagen base de Node.js FROM node:14 # Establece el directorio de trabajo WORKDIR /app # Copia el package.json y package-lock.json COPY package*.json ./ # Instala las dependencias RUN npm install # Copia el resto de la aplicación COPY . . # Expone el puerto en el que la aplicación correrá EXPOSE 3000 # Comando para correr la aplicación CMD ["node", "app.js"]
- Construcción y Publicación de la Imagen Docker
Construye la imagen Docker y publícala en un registro de contenedores (Docker Hub, Google Container Registry, etc.).
# Construye la imagen docker build -t <tu-usuario>/mi-aplicacion-web:1.0 . # Inicia sesión en Docker Hub docker login # Publica la imagen docker push <tu-usuario>/mi-aplicacion-web:1.0
- Creación de Manifiestos de Kubernetes
Necesitamos crear los manifiestos de Kubernetes para desplegar nuestra aplicación. Crearemos un Deployment y un Service.
deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: mi-aplicacion-web spec: replicas: 3 selector: matchLabels: app: mi-aplicacion-web template: metadata: labels: app: mi-aplicacion-web spec: containers: - name: mi-aplicacion-web image: <tu-usuario>/mi-aplicacion-web:1.0 ports: - containerPort: 3000
service.yaml
apiVersion: v1 kind: Service metadata: name: mi-aplicacion-web spec: selector: app: mi-aplicacion-web ports: - protocol: TCP port: 80 targetPort: 3000 type: LoadBalancer
- Despliegue de la Aplicación
Aplica los manifiestos de Kubernetes para desplegar la aplicación.
- Verificación del Despliegue
Verifica que los pods estén corriendo correctamente.
Verifica que el servicio esté creado y tenga una IP asignada.
- Exposición de la Aplicación al Exterior
Si estás usando minikube, puedes exponer el servicio usando el siguiente comando:
Esto abrirá tu navegador web y te llevará a la URL donde tu aplicación está corriendo.
Conclusión
En esta sección, hemos cubierto cómo desplegar una aplicación web en Kubernetes. Aprendimos a crear un Dockerfile, construir y publicar una imagen Docker, crear manifiestos de Kubernetes, desplegar la aplicación y verificar el despliegue. Ahora deberías tener una comprensión básica de cómo desplegar aplicaciones web en Kubernetes.
En el siguiente tema, exploraremos cómo integrar CI/CD con Kubernetes para automatizar el despliegue de aplicaciones.
Curso de Kubernetes
Módulo 1: Introducción a Kubernetes
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Módulo 2: Componentes Principales de Kubernetes
Módulo 3: Gestión de Configuración y Secretos
Módulo 4: Redes en Kubernetes
Módulo 5: Almacenamiento en Kubernetes
Módulo 6: Conceptos Avanzados de Kubernetes
Módulo 7: Monitoreo y Registro
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster