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?

0
Subscribe to my newsletter

Read articles from Ivelin Apostolov directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ivelin Apostolov
Ivelin Apostolov