Publicar una aplicación en Kubernetes implica mucho más que ejecutar un contenedor. Un despliegue confiable requiere alta disponibilidad, descubrimiento de servicios y mecanismos que permitan al clúster detectar cuándo una aplicación está lista para recibir tráfico o necesita reiniciarse automáticamente.

En esta guía aprenderás a crear una implementación básica utilizando Deployment, Service y liveness/readiness probes, siguiendo un enfoque conservador orientado a la reproducibilidad y la seguridad. Todos los pasos incluyen validaciones para minimizar riesgos antes de mover tráfico o trabajar con datos reales.

Nota: Este procedimiento está validado contra la documentación oficial de Kubernetes. Antes de utilizarlo en producción, se recomienda probarlo en un servidor Ubuntu/Debian o en una cuenta de AWS de pruebas.

¿Qué vas a construir?

Al finalizar este tutorial tendrás una implementación base de Kubernetes que podrás adaptar tanto a:

  • Un Cloud Server de DonWeb Cloud.
  • Un servidor Linux propio.
  • Un laboratorio local o entorno de pruebas.

El resultado será una configuración documentada, con comandos de verificación y recomendaciones para evolucionar desde un entorno de laboratorio hacia producción.


¿Cuándo conviene utilizar este enfoque?

Este procedimiento es especialmente útil cuando:

  • Necesitas un despliegue repetible y fácil de mantener.
  • El servicio se ejecutará en un servidor cloud con buenas prácticas de seguridad desde el primer día.
  • Quieres documentar la infraestructura como código.
  • Buscas reducir configuraciones manuales difíciles de auditar.

Requisitos previos

Antes de comenzar verifica que dispones de:

  • Un servidor Ubuntu/Debian actualizado o un clúster Kubernetes operativo.
  • Acceso mediante SSH o consola segura.
  • Un usuario con permisos sudo o privilegios equivalentes.
  • Un backup reciente si el servidor contiene información o tráfico en producción.
  • Un dominio o subdominio (si vas a publicar una aplicación web).
  • Credenciales con privilegios mínimos si trabajas sobre AWS.
  • Una ventana de mantenimiento para cambios que afecten red, firewall o credenciales.

Flujo de trabajo recomendado

La secuencia recomendada es:

  1. Preparar el entorno.
  2. Instalar o desplegar los componentes.
  3. Configurar los recursos mediante archivos versionables.
  4. Validar el funcionamiento.
  5. Aplicar medidas de seguridad.
  6. Documentar el procedimiento.

Evita modificar varias capas de la infraestructura al mismo tiempo. Los cambios incrementales simplifican el diagnóstico y permiten revertir errores con mayor facilidad.


Comandos principales

Crear el namespace:

kubectl create namespace apps

Aplicar el Deployment:

kubectl apply -f deployment.yaml

Verificar el rollout:

kubectl rollout status deploy/api -n apps

Consultar el Service:

kubectl get svc -n apps

Probar la aplicación mediante port forwarding:

kubectl port-forward svc/api 8080:80 -n apps

Configuración base de probes

Un ejemplo mínimo de probes de salud:

livenessProbe:
  httpGet:
    path: /health
    port: 8000

readinessProbe:
  httpGet:
    path: /ready
    port: 8000

La liveness probe permite que Kubernetes reinicie automáticamente un contenedor que dejó de responder, mientras que la readiness probe evita enviar tráfico a una instancia que aún no está preparada para atender solicitudes.


Paso 1: Preparar el entorno

Antes de comenzar:

  • Verifica que estás trabajando sobre el servidor correcto.
  • Confirma que existe una ventana de mantenimiento si el servicio ya recibe tráfico.
  • Realiza un backup cuando la operación pueda afectar componentes críticos.

Crea el namespace donde residirá la aplicación:

kubectl create namespace apps

Comprueba que el comando finaliza correctamente antes de continuar.

Si este paso implica cambios de red, firewall, runtime o credenciales, documenta una estrategia de rollback antes de seguir.

Paso 2: Desplegar los componentes

Aplica el manifiesto de Kubernetes:

kubectl apply -f deployment.yaml

Una vez creado el Deployment, verifica que todas las réplicas se encuentren disponibles:

kubectl rollout status deploy/api -n apps

Si el rollout queda bloqueado, revisa inmediatamente los eventos del Deployment y los logs de los Pods antes de continuar con los siguientes pasos.


Paso 3: Publicar el servicio

Comprueba que el Service fue creado correctamente:

kubectl get svc -n apps

Durante las primeras pruebas es recomendable utilizar port-forward, ya que evita exponer la aplicación públicamente mientras verificas su funcionamiento.

kubectl port-forward svc/api 8080:80 -n apps

Luego podrás acceder desde:

http://localhost:8080

Validaciones recomendadas

Antes de considerar exitoso el despliegue verifica que:

  • El Deployment finalizó correctamente.
  • Todos los Pods se encuentran en estado Running.
  • Las probes de salud responden correctamente.
  • El Service enruta el tráfico esperado.
  • No existen reinicios inesperados de contenedores.
  • Los logs no muestran errores críticos.

Buenas prácticas para producción

Antes de mover tráfico real considera incorporar:

  • Múltiples réplicas del Deployment.
  • Resource Requests y Limits.
  • ConfigMaps y Secrets para separar configuración del código.
  • Ingress con HTTPS.
  • Network Policies.
  • Monitoreo con Prometheus y Grafana.
  • Logs centralizados.
  • Backups y procedimientos de recuperación.
  • Automatización mediante CI/CD.

Conclusión

Una combinación de Deployment, Service y probes de salud constituye la base de cualquier despliegue moderno sobre Kubernetes. Implementar estos recursos desde el comienzo permite obtener aplicaciones más estables, facilitar las actualizaciones y reducir el tiempo de recuperación ante fallos.

Una vez dominada esta estructura básica, será mucho más sencillo incorporar escalado automático, observabilidad, balanceo de carga y despliegues continuos sin modificar la arquitectura principal.


Cloud Serversby Donweb

Todo el poder de la nube a tus proyectos y aplicaciones.
Alojamiento ultra rápido, escalable y con alta disponibilidad.

  • Performance que te sorprenderá
  • Rápida escalabilidad y sin limitaciones
  • Arquitectura de alta disponibilidad
  • Soporte experto y ejecutivos de cuenta
  • Pagos en tu moneda y facturación local

Descubre la mejor solución de Cloud Hosting