Prueba tu despliegue de Next.js
Prerrequisitos
Antes de comenzar, asegúrate de haber completado lo siguiente:
- Completa todas las secciones anteriores de esta guía, comenzando con Contenerizar una aplicación Next.js.
- Activa Kubernetes en Docker Desktop.
¿Eres nuevo en Kubernetes?
Visita el tutorial de conceptos básicos de Kubernetes para familiarizarte con el funcionamiento de los clústeres, pods, despliegues (deployments) y servicios.
Descripción general
Esta sección te guía a través del despliegue de tu aplicación Next.js contenerizada de forma local usando el Kubernetes integrado de Docker Desktop. Ejecutar tu aplicación en un clúster de Kubernetes local te permite simular de cerca un entorno de producción real, lo que te permite probar, validar y depurar tus cargas de trabajo con confianza antes de promoverlas a entornos de pruebas (staging) o producción.
Crear un archivo YAML de Kubernetes
Sigue estos pasos para definir tu configuración de despliegue:
En la raíz de tu proyecto, crea un nuevo archivo llamado:
nextjs-sample-kubernetes.yamlAbre el archivo en tu IDE o editor de texto preferido.
Agrega la siguiente configuración y asegúrate de reemplazar
{DOCKER_USERNAME}y{DOCKERHUB_PROJECT_NAME}con tu nombre de usuario de Docker Hub y el nombre del repositorio reales de la sección anterior Automatiza tus construcciones con GitHub Actions.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nextjs-sample
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: nextjs-sample
template:
metadata:
labels:
app: nextjs-sample
spec:
containers:
- name: nextjs-container
image: {DOCKER_USERNAME}/{DOCKERHUB_PROJECT_NAME}:latest
imagePullPolicy: Always
ports:
- containerPort: 3000
env:
- name: NODE_ENV
value: "production"
- name: HOSTNAME
value: "0.0.0.0"
---
apiVersion: v1
kind: Service
metadata:
name: nextjs-sample-service
namespace: default
spec:
type: NodePort
selector:
app: nextjs-sample
ports:
- port: 3000
targetPort: 3000
nodePort: 30001Este manifiesto define dos recursos clave de Kubernetes, separados por ---:
Deployment
Despliega una única réplica de tu aplicación Next.js dentro de un pod. El pod utiliza la imagen de Docker construida y subida por tu flujo de trabajo de CI/CD de GitHub Actions
(consulta Automatiza tus construcciones con GitHub Actions).
El contenedor escucha en el puerto3000, que es el puerto predeterminado para las aplicaciones Next.js.Service (NodePort)
Expone el pod desplegado a tu máquina local.
Reenvía el tráfico desde el puerto30001de tu host al puerto3000dentro del contenedor.
Esto te permite acceder a la aplicación en tu navegador en http://localhost:30001.
NotePara aprender más sobre los objetos de Kubernetes, consulta la documentación de Kubernetes.
Desplegar y comprobar tu aplicación
Sigue estos pasos para desplegar tu aplicación Next.js contenerizada en un clúster de Kubernetes local y verificar que se esté ejecutando correctamente.
Paso 1. Aplicar la configuración de Kubernetes
En tu terminal, navega al directorio donde se encuentra tu archivo nextjs-sample-kubernetes.yaml, luego despliega los recursos usando:
$ kubectl apply -f nextjs-sample-kubernetes.yaml
Si todo está configurado correctamente, verás la confirmación de que tanto el Deployment como el Service fueron creados:
deployment.apps/nextjs-sample created
service/nextjs-sample-service createdEsta salida significa que tanto el Deployment como el Service se crearon con éxito y ahora se están ejecutando dentro de tu clúster local.
Paso 2. Comprobar el estado del despliegue
Ejecuta el siguiente comando para verificar el estado de tu despliegue:
$ kubectl get deployments
Deberías ver una salida similar a:
NAME READY UP-TO-DATE AVAILABLE AGE
nextjs-sample 1/1 1 1 14sEsto confirma que tu pod está en funcionamiento con una réplica disponible.
Paso 3. Verificar la exposición del servicio
Comprueba si el servicio NodePort está exponiendo tu aplicación a tu máquina local:
$ kubectl get services
Deberías ver algo como:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nextjs-sample-service NodePort 10.100.244.65 <none> 3000:30001/TCP 1mEsta salida confirma que tu aplicación está disponible a través de NodePort en el puerto 30001.
Paso 4. Acceder a tu aplicación en el navegador
Abre tu navegador y navega a http://localhost:30001.
Deberías ver tu aplicación de ejemplo Next.js lista para producción ejecutándose, servida por tu clúster de Kubernetes local.
Paso 5. Limpiar los recursos de Kubernetes
Una vez que hayas terminado las pruebas, puedes eliminar el despliegue y el servicio usando:
$ kubectl delete -f nextjs-sample-kubernetes.yaml
Salida esperada:
deployment.apps "nextjs-sample" deleted
service "nextjs-sample-service" deletedEsto asegura que tu clúster se mantenga limpio y listo para el próximo despliegue.
Resumen
En esta sección, aprendiste a desplegar tu aplicación Next.js en un clúster de Kubernetes local usando Docker Desktop. Esta configuración te permite probar y depurar tu aplicación contenerizada en un entorno similar al de producción antes de desplegarla en la nube.
Lo que lograste:
- Creaste un Deployment y un Service NodePort de Kubernetes para tu aplicación Next.js
- Usaste
kubectl applypara desplegar la aplicación de forma local - Verificaste que la aplicación se estuviera ejecutando y estuviera accesible en
http://localhost:30001 - Limpiaste tus recursos de Kubernetes después de las pruebas
Recursos relacionados
Explora las referencias oficiales y las mejores prácticas para perfeccionar tu flujo de trabajo de despliegue en Kubernetes:
- Documentación de Kubernetes – Aprende sobre conceptos clave, cargas de trabajo, servicios y más.
- Desplegar en Kubernetes con Docker Desktop – Usa el soporte de Kubernetes integrado en Docker Desktop para pruebas y desarrollo locales.
- Referencia de CLI de
kubectl– Gestiona clústeres de Kubernetes desde la línea de comandos. - Recurso Deployment de Kubernetes – Comprende cómo gestionar y escalar aplicaciones utilizando Deployments.
- Recurso Service de Kubernetes – Aprende cómo exponer tu aplicación al tráfico interno y externo.