Saltar a contenido

Service Mesh

¿Qué es un Service Mesh (Malla de Servicios)?

En términos simples, un Service Mesh es una capa de infraestructura dedicada que controla, asegura y observa la comunicación (el tráfico de red) entre los diferentes microservicios de una aplicación distribuida.

Imagina que tienes decenas o cientos de microservicios en tu clúster de Kubernetes. En lugar de programar la lógica de reintentos en caso de fallo, la encriptación de los datos o el balanceo de carga dentro del código fuente de cada aplicación (por ejemplo, en Java, Python o Go), el Service Mesh extrae toda esa complejidad de la red y la gestiona desde la infraestructura subyacente.

Los Tres Pilares de un Service Mesh

Independientemente de la herramienta que utilices, todo Service Mesh busca resolver tres grandes desafíos:

  1. Conectividad y Gestión de Tráfico: Permite un balanceo de carga avanzado, migraciones de tráfico graduales (como despliegues Canary o Blue/Green), redirecciones inteligentes y tolerancia a fallos (mediante reintentos automáticos y circuit breaking).
  2. Seguridad (Zero Trust): Garantiza que todo el tráfico entre microservicios viaje encriptado (mediante mTLS o IPsec/WireGuard) y aplica políticas estrictas de autenticación y autorización. Cada servicio debe demostrar quién es antes de hablar con otro.
  3. Observabilidad: Ofrece una visibilidad profunda de lo que ocurre en la red. Extrae métricas de latencia, trazas distribuidas y logs, permitiendo a los operadores saber exactamente qué servicio se comunica con cuál y dónde están los cuellos de botella.

El Enfoque Tradicional vs. La Revolución de Cilium

El modelo tradicional de Service Mesh (utilizado por tecnologías como Istio o Linkerd) funciona inyectando un contenedor adicional llamado "sidecar proxy" (generalmente Envoy) dentro de cada Pod de tu aplicación. Esto significa que si tienes 1,000 pods, tendrás 1,000 proxies consumiendo memoria y CPU.

Sin embargo, en el mundo de Cilium, abordamos este desafío de una manera mucho más eficiente gracias a la tecnología eBPF. Cilium empuja las capacidades de red, seguridad y observabilidad directamente al kernel (núcleo) del sistema operativo de cada nodo. Esto nos permite ejecutar un Service Mesh "Sidecarless" (sin sidecars), procesando las reglas de red a una velocidad extrema y consumiendo una fracción mínima de los recursos en comparación con el modelo antiguo.


Cilium Ingress

¿Qué es el Cilium Ingress?

En Kubernetes, un recurso Ingress es básicamente un conjunto de reglas de enrutamiento que define cómo el tráfico externo (HTTP/HTTPS) puede acceder a los servicios que están dentro de tu clúster. Para que estas reglas funcionen, necesitas un "Ingress Controller" (el más famoso históricamente ha sido NGINX Ingress).

Cilium Ingress Controller es la solución nativa de Cilium para manejar este tráfico de entrada. En lugar de obligarte a instalar y mantener un controlador externo separado, Cilium habilita esta capacidad directamente desde su propio agente utilizando el poder de eBPF y Envoy Proxy.

¿Por qué Cilium Ingress es diferente (y más eficiente)?

Si tuvieras que usar un controlador Ingress tradicional, el flujo de red generalmente pasa por varias capas de iptables (gestionadas por kube-proxy) antes de llegar al Ingress Controller, y luego vuelve a pasar por la red para llegar finalmente al Pod de tu aplicación. Esto añade latencia y complejidad.

Con Cilium Ingress, la historia cambia gracias a sus tecnologías subyacentes:

  1. Aceleración con eBPF: Cilium utiliza eBPF para interceptar el tráfico en el momento exacto en que llega a la tarjeta de red del nodo. Puede enrutar el paquete directamente hacia el destino sin tener que atravesar el complejo y lento laberinto de iptables del kernel de Linux.
  2. Envoy Proxy Integrado: Para el tráfico de Capa 7 (HTTP, gRPC), Cilium integra Envoy directamente dentro del agente de Cilium. Envoy es un proxy de altísimo rendimiento. Cuando configuras un Ingress, Cilium le dice automáticamente a Envoy cómo debe enrutar esas rutas (por ejemplo, enviar el tráfico de midominio.com/api al servicio de backend).
  3. Visibilidad Total (Hubble): Al estar integrado en el mismo plano de datos, puedes usar Hubble para observar no solo las IPs que se conectan, sino también los métodos HTTP (GET, POST), las rutas exactas y la latencia de las peticiones externas, todo en tiempo real.

Características clave para tu examen CCA

Al configurar Cilium Ingress, debes recordar que soporta funcionalidades avanzadas como:

  • Terminación TLS: Puede manejar los certificados de seguridad para que el tráfico entre al clúster de forma encriptada (HTTPS).
  • Balanceo de carga de Capa 7: Capacidad para enrutar basándose en el nombre de host (Host header) o en la ruta de la URL (Path).
  • Compatibilidad con Gateway API: Cilium no solo soporta el recurso clásico de Ingress, sino que es totalmente compatible con Kubernetes Gateway API, que es el nuevo estándar moderno para la gestión del tráfico en Kubernetes.

Básicamente, Cilium Ingress te permite consolidar tu infraestructura: eliminas la necesidad de instalar herramientas de terceros para el Ingress y centralizas la red, la seguridad y la observabilidad en una sola herramienta hiper-eficiente.