Despliegue de JavaScript (Node.js) en Kubernetes: guía paso a paso

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Despliegue de JavaScript (Node.js) en Kubernetes: guía básica práctica



El desarrollo web moderno es impensable sin contenedorización y orquestación. Si programas en JavaScript (Node.js), tarde o temprano surgirá la pregunta: ¿cómo ejecutar la aplicación en producción de manera confiable, garantizar su escalabilidad y alta disponibilidad? La respuesta es Kubernetes. No es solo una herramienta de moda, sino el estándar de facto para gestionar aplicaciones contenedorizadas.

En esta guía, analizaremos el ciclo completo de despliegue de una aplicación Node.js simple en Kubernetes. Aprenderás cómo empaquetar el código en una imagen Docker, crear los manifiestos necesarios y ejecutar todo en un clúster. El material está dirigido a desarrolladores que ya conocen los fundamentos de Node.js y desean aprender prácticas de DevOps.



1. Preparación de la aplicación Node.js para la contenedorización

Antes de desplegar la aplicación en Kubernetes, debes empaquetarla en un contenedor. Para ello, crearemos una aplicación Express simple. Asegúrate de tener instalados Node.js y npm.

Crea el archivo app.js:

const express = require('express');const app = express();const port = process.env.PORT || 3000;

app.get('/', (req, res) => { res.json({ message: 'Hello from Node.js on Kubernetes!' });});

app.get('/health', (req, res) => { res.status(200).send('OK');});

app.listen(port, () => { console.log(`Server running on port ${port}`);});

Es importante agregar el endpoint /health — Kubernetes lo usará para verificar el estado de funcionamiento (liveness probe).

Ahora crea el Dockerfile en la raíz del proyecto:

FROM node:18-alpine

WORKDIR /usr/src/app

COPY package*.json ./RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "app.js"]

Construye la imagen y pruébala localmente:

docker build -t my-node-app:latest .docker run -p 3000:3000 my-node-app:latest

Abre http://localhost:3000 — deberías ver una respuesta JSON.



2. Manifiestos básicos de Kubernetes para Node.js

Kubernetes trabaja con configuraciones declarativas (YAML). Para desplegar una aplicación Node.js, necesitaremos al menos dos recursos principales: Deployment y Service.



2.1. Deployment

El Deployment gestiona las réplicas de tu aplicación. Crea el archivo deployment.yaml:

apiVersion: apps/v1kind: Deploymentmetadata:  name: node-app-deployment  labels:    app: node-appspec:  replicas: 3  selector:    matchLabels:      app: node-app  template:    metadata:      labels:        app: node-app    spec:      containers:      - name: node-app        image: my-node-app:latest        ports:        - containerPort: 3000        env:        - name: PORT          value: "3000"        livenessProbe:          httpGet:            path: /health            port: 3000          initialDelaySeconds: 5          periodSeconds: 10        readinessProbe:          httpGet:            path: /            port: 3000          initialDelaySeconds: 3          periodSeconds: 5

Puntos importantes:

  • replicas: 3 — Kubernetes creará 3 copias de tu aplicación para alta disponibilidad.
  • livenessProbe — verifica si la aplicación está activa. Si no hay respuesta, Kubernetes reiniciará el contenedor.
  • readinessProbe — verifica si la aplicación está lista para recibir tráfico. Hasta que la verificación no sea exitosa, el pod no recibe solicitudes.


2.2. Service

El Service proporciona acceso de red a los pods. Crea service.yaml:

apiVersion: v1kind: Servicemetadata:  name: node-app-servicespec:  selector:    app: node-app  ports:    - protocol: TCP                

Blogs

Book Recommendations