Dominando la contenerización en la nube: Una guía paso a paso para implementar contenedores en la nube

Los contenedores han transformado la forma en que implementamos, escalamos y gestionamos aplicaciones al empaquetar código y dependencias en una unidad estandarizada que puede ejecutarse de manera consistente en cualquier entorno. Cuando se utilizan en entornos en la nube, los contenedores ofrecen:

  • Portabilidad a lo largo del desarrollo, pruebas y producción.
  • Escalabilidad para adaptarse rápidamente al tráfico y la demanda.
  • Eficiencia con una sobrecarga reducida en comparación con las máquinas virtuales tradicionales.

En este tutorial, recorreremos la configuración completa de una aplicación contenerizada alojada en la nube, cubriendo:

  1. Conceptos básicos de contenedores y por qué son ideales para la nube.
  2. Configuración de una aplicación Dockerizada.
  3. Implementación del contenedor en un proveedor de la nube (usando Google Cloud Platform como ejemplo).
  4. Escala y gestión de su contenedor en la nube.

Conceptos básicos de contenedores: Cómo encajan los contenedores en los flujos de trabajo en la nube

Los contenedores encapsulan todas las bibliotecas y dependencias necesarias para ejecutar una aplicación. A diferencia de las máquinas virtuales tradicionales, en las cuales cada una tiene un sistema operativo, los contenedores comparten el sistema operativo del host, lo que los hace ligeros y eficientes.

¿Por qué contenedores para la nube?

  • Los tiempos de inicio rápidos significan una escalabilidad más rápida para manejar el tráfico variable.
  • La consistencia entre entornos garantiza que el código se comporte de la misma manera desde las laptops de los desarrolladores hasta la producción.
  • La eficiencia de recursos permite un despliegue de alta densidad en la misma infraestructura.

Componentes centrales de la contenedorización en la nube

  • Motor de Contenedores: Gestiona y ejecuta contenedores (por ejemplo, Docker, containerd).
  • Orquestación: Asegura la fiabilidad de la aplicación, escalado y balanceo de carga (por ejemplo, Kubernetes, ECS).
  • Registro: Almacena imágenes de contenedores para acceso entre entornos (por ejemplo, Docker Hub, GCR).

Configuración de una aplicación Dockerizada

Comenzaremos contenedorizando una simple aplicación de Node.js.

Paso 1: Crear la Aplicación

1. En una carpeta de proyecto, inicializa un proyecto de Node.js:   

Shell

 

2. Crea un archivo de servidor básico, app.js:

JavaScript

 

 

3. Agrega Express al proyecto:    

Shell

 

Paso 2: Crear un Dockerfile

Este Dockerfile especifica cómo empaquetar la aplicación en un contenedor Docker.

Dockerfile

 

Paso 3: Construir y Probar la Imagen Docker Localmente

1. Construye la imagen Docker:   

Shell

 

2. Ejecuta el contenedor localmente:

Shell

 

 

3. Visita `http://localhost:3000` en tu navegador. Deberías ver “¡Hola, Contenedor en la Nube!” mostrado.

Implementando el Contenedor en la Plataforma de Google Cloud (GCP)

En esta sección, vamos a subir la imagen del contenedor al Registro de Contenedores de Google (GCR) y desplegarlo en el Motor de Kubernetes de Google (GKE).

Paso 1: Configurar un Proyecto en GCP

1. Crea un Proyecto en GCP. Ve a la [Consola de Google Cloud] (https://console.cloud.google.com) y crea un nuevo proyecto.

2. Habilita las APIs de Kubernetes Engine y Container Registry para tu proyecto.

Paso 2: Subir la Imagen al Registro de Contenedores de Google

1. Etiqueta la imagen Docker para Google Cloud:

Shell

 

 

2. Sube la imagen a GCR:

Shell

 

Paso 3: Crear un Cluster de Kubernetes

1. Inicializa un Cluster de GKE:

Shell

 

   

2. Configura kubectl para conectarlo a tu nuevo cluster:

Shell

 

Paso 4: Desplegar la Aplicación Contenerizada en GKE

1. Crea un archivo k8s-deployment.yaml para definir el despliegue y el servicio:

YAML

 

2. Despliega la aplicación en GKE:

Shell

 

3. Obtiene la IP externa para acceder a la aplicación:

Shell

 

Escalar y Gestionar Contenedores en GKE

Paso 1: Escalar el Despliegue

Para ajustar el número de réplicas (por ejemplo, para manejar un tráfico más alto), utiliza el siguiente comando:

Shell

 

GKE escalará automáticamente la aplicación añadiendo réplicas y distribuyendo la carga.

Paso 2: Monitorear y Administrar Registros

1. Utiliza el siguiente comando para ver los registros de un pod específico en Kubernetes:

Shell

 

2. Habilitar el panel de GKE para monitorear el estado y uso de recursos de los pods y administrar despliegues visualmente.

Conclusión: Aprovechando Contenedores para Despliegues Escalables en la Nube

Este tutorial cubrió:

  1. Contenerización de una aplicación Node.js usando Docker.
  2. Desplegar en Google Kubernetes Engine (GKE) para alojamiento escalable y administrado.
  3. Administrar y escalar contenedores de forma efectiva en la nube.

Con contenedores en la nube, tus aplicaciones obtienen escalabilidad, portabilidad y eficiencia, asegurando que estén listas para manejar la demanda, adaptarse rápidamente y mantenerse consistentes en diferentes entornos.

Source:
https://dzone.com/articles/a-step-by-step-guide-to-deploying-containers-in-the-cloud