El "Doble Click" de la Infraestructura: Cuando Entendí que Kubernetes era más que Contenedores


Cuando empecé en el mundo Cloud y DevOps, mi visión de la "infraestructura" era clara: máquinas virtuales, redes, discos, balanceadores... Mi herramienta fetiche, y con razón, era Terraform. Con ella podía definir todo ese "hardware" en la nube como código, pasando de cero a un entorno listo en minutos. Para mí, esa era la automatización definitiva.
El verdadero "clic" mental, ese momento que lo cambió todo, llegó cuando me enfrenté a mi primer proyecto real de microservicios. Tenía 5 pequeños servicios en contenedores de Docker, y mi infraestructura creada con Terraform estaba lista para recibirlos. Pero entonces surgió la pregunta que me descolocó: Y ahora, ¿cómo gestiono esto?
¿Cómo me aseguro de que si un contenedor falla, se levante otro? ¿Cómo reparto el tráfico entre las 3 réplicas de mi servicio de login? ¿Cómo hago que el servicio de pagos encuentre de forma segura a la base de datos?
Ahí es donde entendí que había dos capas de infraestructura. Terraform me había dado las carreteras y los edificios, pero necesitaba a alguien que gestionara el tráfico, el suministro eléctrico y las comunicaciones dentro de esos edificios. Necesitaba la infraestructura de la aplicación.
Y ahí, amigos, es donde apareció Kubernetes y me hizo "doble clic" la cabeza.
Kubernetes: El Sistema Operativo de tus Aplicaciones
Al principio, pensaba que Kubernetes era simplemente un "orquestador", una palabra que suena compleja pero que no me decía mucho. Pero al empezar a usarlo, me di cuenta de la verdad: Kubernetes es a tus aplicaciones lo que Terraform es a tu hardware en la nube.
Kubernetes te permite definir la infraestructura de tu aplicación como código. A través de ficheros YAML
, tú declaras el estado deseado:
Pods: "Quiero que este contenedor se ejecute con esta configuración".
Deployments: "Quiero tener siempre 3 réplicas de este Pod, y si una falla, levanta otra automáticamente".
Services: "Quiero que estas 3 réplicas sean accesibles a través de un único punto de red interno, para que otros microservicios puedan encontrarlas".
Ingress: "Quiero exponer este Service al mundo exterior a través de una URL segura".
Esta aproximación declarativa es la que le da sus superpoderes:
Alta Disponibilidad Real: Ya no se trata de tener dos máquinas por si una falla. Se trata de que si una de tus 5 réplicas de la API cae, Kubernetes la detecta en segundos y levanta una nueva en otro nodo disponible sin que nadie se entere. La aplicación se "auto-repara".
Abstracción Total: Como desarrollador, dejas de pensar en "máquinas". Le entregas tu contenedor a la API de Kubernetes y confías en que él encontrará el mejor sitio para ejecutarlo. Esto es una liberación mental increíble que acelera el desarrollo una barbaridad.
Escalabilidad y Balanceo de Carga Nativos: ¿Tu web tiene un pico de tráfico? Solo tienes que decirle a Kubernetes: "Ahora quiero 10 réplicas en vez de 3". Él se encarga de crearlas y repartir la carga de trabajo entre ellas de forma equitativa.
Depuración Simplificada: Si algo falla, no tienes que bucear en los logs de un monolito gigante. Vas directamente al microservicio afectado, lo aíslas, revisas sus logs y solucionas el problema sin afectar al resto de la aplicación.
Al final, mi conclusión fue simple: Terraform y Kubernetes no compiten, son la pareja de baile perfecta. Con Terraform construyes el escenario, y con Kubernetes diriges la orquesta que toca encima. Entender esa simbiosis fue, para mí, uno de los momentos más reveladores en mi crónica como DevOps.
Y tú, ¿cuál fue tu momento "clic" con Kubernetes?
Subscribe to my newsletter
Read articles from Ivelin Apostolov directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
