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
sudoo 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:
- Preparar el entorno.
- Instalar o desplegar los componentes.
- Configurar los recursos mediante archivos versionables.
- Validar el funcionamiento.
- Aplicar medidas de seguridad.
- 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.
