DevOps

Diagrama de red de Kubernetes: pods, services, ingress y gateways

Lo más difícil de Kubernetes no es el YAML; es mantener el modelo mental de cómo llega realmente una petición a un contenedor. Un diagrama de red de Kubernetes hace que todo encaje. Así se dibuja el que importa.

A la gente no le cuesta Kubernetes porque el YAML sea difícil de escribir. Le cuesta porque hay una cadena invisible de objetos entre "llega una petición" y "un contenedor la atiende", y nada de eso está en un solo lugar. Un Pod ejecuta el código, pero nunca diriges el tráfico a un Pod. Un Service le da un nombre estable, pero un Service no termina TLS. Un Ingress o un Gateway se ocupa del mundo exterior, pero reenvía a un Service, que selecciona Pods, que pueden moverse en cualquier momento. Falta un eslabón y nada funciona, y el mensaje de error rara vez te dice cuál.

Un diagrama de esa cadena vale más que releer los manifiestos una y otra vez. Construyamos el modelo mental objeto por objeto y después dibujémoslo.

Pods: donde se ejecuta realmente el código

Un Pod es uno o más contenedores planificados juntos que comparten una identidad de red. Es la unidad que ejecuta tu proceso. El dato clave para un diagrama: los Pods son ganado, no mascotas. Se crean y se destruyen constantemente, sus IP cambian y nunca deberías depender de uno en concreto. Precisamente por eso existe todo lo que hay por encima: para dar algo estable a lo que apuntar.

Services: un nombre estable delante de Pods que se mueven

Un Service es una dirección virtual estable y una regla de balanceo de carga. Usa un selector de etiquetas para encontrar los Pods que lo respaldan, y reparte el tráfico entre los que existan en ese momento. Cuando un Pod muere y arranca otro nuevo, el Service se actualiza sin hacer ruido; quien llama nunca se entera. En tu diagrama, el Service es la caja a la que se conectan las demás cosas, con un reparto implícito hacia un conjunto cambiante de Pods detrás.

fuera client Ingress /Gateway Service Pod Pod Pod …
La cadena de la petición: del cliente al Ingress o Gateway, de ahí a un Service, que reparte entre los Pods que existan en ese momento.

Ingress y Gateway API: la puerta al exterior

Un Service por sí solo no te expone al mundo de forma útil. Ese es el trabajo de un Ingress o, en el modelo más reciente, de un Gateway. Esta capa se encarga del enrutado por host y ruta, de la terminación TLS y de las reglas que dicen "las peticiones para este host y esta ruta van a ese Service". La Gateway API generaliza el antiguo Ingress con un reparto de responsabilidades más limpio (quién es dueño del gateway frente a quién es dueño de las rutas), pero la forma en un diagrama es la misma: es la caja del borde a la que llega primero todo lo externo, y que reenvía a los Services según reglas.

Dibuja la cadena una vez y los errores empiezan a explicarse solos: un selector roto, una ruta que falta, un Service que no apunta a nada.

Por qué dibujarlo es mejor que releerlo

Cuando algo no es accesible, el diagrama es una lista de comprobación. ¿La regla del Ingress apunta al Service correcto? ¿El selector del Service coincide con las etiquetas de los Pods? ¿Hay Pods siquiera? Cada eslabón de la imagen es algo que puede fallar, y verlos dispuestos convierte un vago "no funciona" en un concreto "el selector no coincide". Esa es la diferencia entre depurar y adivinar.

Deja que los manifiestos lo dibujen

No tienes que colocar estas cajas a mano. Tus manifiestos ya codifican toda la cadena: el Ingress nombra su Service, el Service lleva su selector, el Deployment pone las etiquetas en sus Pods. Pega el YAML y las relaciones se dibujan por ti, agrupadas por namespace, para que la imagen coincida con el clúster y no con lo que supones de él.

Consejo. Genera el diagrama a partir de los mismos manifiestos que aplicas, y regenéralo después de un cambio. Una imagen que sale de la fuente de verdad es la única que sigue siendo fiable en un sistema que se replanifica constantemente.

Después, anota para las personas

Cuando los objetos estén en el lienzo, haz que la imagen enseñe. Colorea el borde externo, agrupa por namespace, marca dónde termina TLS e indica qué Service es el que está bajo carga. Un ingeniero nuevo debería poder seguir con el dedo una petición desde internet hasta un contenedor, sin abrir un solo archivo YAML. Ese es el diagrama que vale la pena conservar.

Pega tus manifiestos, mira cómo se conectan los pods, services, ingress y gateways, y por fin ten toda la ruta de la petición en la cabeza a la vez.

Mira cómo se conecta realmente tu clúster

Pega tus manifiestos de Kubernetes y obtén un diagrama de la ruta de la petición, agrupado por namespace y listo para anotar.

Abrir LetDraw gratis