¿Qué es un controlador Ingress de Kubernetes?

Vista ascendente de un edificio circular

Autores

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

¿Qué es un controlador Ingress de Kubernetes?

Un controlador Ingress de Kubernetes es un componente de software especializado que gestiona el tráfico entrante a las aplicaciones que se ejecutan en entornos de Kubernetes sirviendo como puente entre los usuarios externos y los servicios contenerizados.

Las compañías modernas dependen en gran medida de aplicaciones distribuidas y cargas de trabajo creadas a partir de docenas o cientos de microservicios. Sin una orquestación adecuada del tráfico, cada servicio requeriría su propio endpoint público, lo que plantearía importantes problemas de gestión y seguridad.

Por ejemplo, una plataforma de atención médica podría necesitar puntos de acceso separados para portales de pacientes, paneles de proveedores, sistemas de facturación e informes de cumplimiento de normas, un enfoque que se vuelve costoso y operacionalmente complejo.

Un controlador Ingress de Kubernetes aborda este problema sirviendo como equilibrador de carga y enrutador de tráfico inteligente en el punto de entrada de la aplicación. Establece una ruta de tráfico centralizada para que los usuarios externos accedan a los servicios internos.

El ecosistema de Kubernetes ofrece varios controladores Ingress, incluidas herramientas de código abierto (por ejemplo, NGINX, Traefik) disponibles en plataformas como GitHub y soluciones patentadas diseñadas para satisfacer necesidades organizacionales específicas.

Las últimas noticias tecnológicas, respaldadas por los insights de expertos

Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Ya está suscrito.

Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

¿Qué es Kubernetes?

Desarrollado inicialmente por Google y donado a Cloud Native Computing Foundation (CNCF) en 2015, Kubernetes ahora impulsa la infraestructura de TI esencial para la mayoría de las empresas de Fortune 500, lo que hace que la gestión del controlador Ingress sea crítica para las operaciones empresariales. Según una encuesta de 2022, el 96% de las organizaciones emplean Kubernetes o están evaluando esta tecnología para entornos de producción.1

Antes de Kubernetes, las aplicaciones generalmente se ejecutaban en servidores dedicados o máquinas virtuales (VM), lo que hacía que el escalado fuera costoso y lento. Kubernetes introdujo contenedores: unidades livianas y portátiles que empaquetan aplicaciones con todas sus dependencias.

Kubernetes revolucionó los flujos de trabajo de DevOps y el despliegue de aplicaciones al introducir la orquestación de contenedores a escala. Esta plataforma de código abierto automatiza el despliegue, el escalado y la gestión de aplicaciones en contenedores en toda la infraestructura distribuida, lo que permite una colaboración fluida entre los equipos de desarrollo y operaciones.

Kubernetes organiza las aplicaciones en pods, las unidades desplegables más pequeñas compuestas por uno o más contenedores (normalmente contenedores Docker ). Estos pods se ejecutan en nodos dentro de clúster, mientras que un plano de control coordina todas las operaciones de clúster. Los servicios proporcionan identidades de red estables para grupos de pods, lo que permite patrones de comunicación confiables.

Los controladores Ingress suelen desplegarse como pods especializados que monitorean el estado del clúster a través de la API de Kubernetes . Estos controladores rastrean los cambios en los recursos de Ingress (objetos de configuración que definen las reglas de enrutamiento del tráfico) y actualizan de forma automática sus tablas de enrutamiento para reflejar los nuevos despliegues de aplicaciones o las actualizaciones de configuración.

IBM Cloud

Red Hat OpenShift AI on IBM Cloud: desplegar cargas de trabajo de IA

Utilice las capacidades de IA con Red Hat OpenShift on IBM Cloud. Este video explora cómo construir, desplegar y administrar cargas de trabajo de IA de manera eficiente con una plataforma escalable de operaciones de machine learning.

¿Qué es Kubernetes Ingress?

Para comprender cómo funcionan los controladores Ingress, es esencial comprender Kubernetes Ingress, el recurso API (u objeto Ingress) que define las reglas de enrutamiento que dirigen el tráfico externo a los servicios dentro de un clúster de Kubernetes.

Kubernetes Ingress es distinto del término general ingress, que se refiere al flujo del tráfico de red entrante en un entorno de aplicaciones en contenedores nativo de la nube . En Kubernetes, Ingress se refiere específicamente al conjunto de reglas y configuraciones que gestionan cómo se enruta el tráfico entrante a diferentes servicios. Por el contrario, la entrada en un sentido más amplio simplemente se refiere a cualquier tráfico que ingresa a un sistema (a diferencia de la salida, que se refiere al tráfico que fluye fuera del sistema).

Lea más sobre ingress versus egress en Kubernetes.

Kubernetes Ingress proporciona un enfoque declarativo para gestionar el acceso externo a los servicios dentro de un clúster. En lugar de exponer servicios individuales (por ejemplo, NodePort, servicios LoadBalancer) directamente a Internet, Ingress crea una capa de acceso controlado que enruta de forma inteligente las solicitudes en función de múltiples criterios. Esta capacidad permite la gestión eficiente del tráfico externo a los servicios, normalmente expuestos mediante el uso de ClusterIP dentro del clúster Kubernetes.

Kubernetes Ingress opera a través de dos componentes complementarios.

Recursos de Ingress

Los recursos de Ingress (también denominados recursos Kubernetes u objetos API Kubernetes) definen las reglas de enrutamiento. Se definen en YAML o JSON, especificando reglas de Ingress, certificados SSL, requisitos de autenticación y políticas de tráfico.

Por ejemplo, los usuarios pueden usar el campo ingressClassName para determinar qué controlador Ingress debe gestionar el recurso, lo que permite la dirección del tráfico a un controlador específico cuando existen varios controladores en un clúster.

Controladores Ingress

Los controladores Ingress o son componentes de software que leen y aplican reglas de configuración, actuando como proxies inversos con capacidades avanzadas de administración de tráfico.

¿Cómo funciona un controlador Ingress de Kubernetes?

Los balanceadores de carga de capa 4 tradicionales, como aquellos para rutas TCP, UDP y HTTP/HTTPS, distribuyen el tráfico basado únicamente en direcciones IP y puertos. Por el contrario, un controlador Ingress de Kubernetes funciona en la capa 7 (la capa de aplicación), lo que permite un enrutamiento más sofisticado.

Al aprovechar la API de Kubernetes Ingress y características como HTTPRoute, el controlador Ingress toma decisiones de enrutamiento basadas en atributos detallados específicos de HTTP, como:

  • Rutas de URL y nombres de host
  • Encabezados y métodos HTTP
  • Solicitar contenido y cookies
  • Tokens de autenticación y contexto de usuario

Estas decisiones se basan en reglas de configuración que dictan las políticas de enrutamiento y otros requisitos. Los controladores Ingress monitorean continuamente los cambios en estas configuraciones, actualizando automáticamente el comportamiento del enrutamiento sin intervención manual, lo que garantiza una distribución del tráfico y una gestión de la seguridad sin problemas.

Los clústeres de Kubernetes pueden ejecutar varios controladores Ingress simultáneamente, cada uno de los cuales maneja diferentes tipos de tráfico o aplicaciones. Cada controlador opera de manera basada en eventos, respondiendo a los cambios en los recursos de Ingress mediante la lectura de especificaciones, anotaciones y metadatos, y luego convirtiéndolos en instrucciones de enrutamiento ejecutables.

Funciones clave de un controlador Ingress de Kubernetes

Procesamiento de solicitudes

Los controladores Ingress de Kubernetes examinan las solicitudes entrantes y toman decisiones de enrutamiento basadas en reglas predefinidas, como nombres de host y nombres DNS . Manejan el tráfico HTTP y HTTPS, realizan la terminación SSL y toman decisiones inteligentes de equilibrio de carga en múltiples instancias de servicio.

Gestión de la configuración

Los controladores Ingress de Kubernetes monitorear continuamente la API de Kubernetes para detectar cambios en los recursos de Ingress en los espacios de nombres. Ya sea que estos cambios se apliquen a través de kubectl, canalizaciones de CI/CD u otras herramientas (por ejemplo, Helm, Terraform), el controlador actualiza automáticamente las reglas de enrutamiento sin intervención manual ni reinicios del servicio.

Equilibrio de carga

Integrada en la mayoría de los controladores Ingress de Kubernetes , la funcionalidad de equilibrio de carga distribuye las solicitudes entrantes entre varias instancias del mismo servicio, lo que garantiza un rendimiento óptimo y evita que una sola instancia se vea desbordada.

Gestión de TLS

Los controladores Ingress de Kubernetes modernos incluyen sofisticadas capacidades de gestión SSL/TLS, como la terminación TLS, el aprovisionamiento automático de certificados, la renovación y la aplicación de comunicaciones seguras.

Comprobación de estado

Los controladores Ingress avanzados de Kubernetes monitorizan continuamente el estado de los servicios backend y desvían automáticamente el tráfico de las instancias que fallan para garantizar una alta disponibilidad y una mejor experiencia del usuario.

Casos de uso del controlador Ingress de Kubernetes

Consolidación de aplicaciones

Las grandes organizaciones utilizan controladores Ingress para consolidar cientos de aplicaciones internas detrás de puntos de acceso unificados. Este enfoque reduce los costos de infraestructura al tiempo que mejora la seguridad a través de la aplicación centralizada de políticas. Una empresa de fabricación global podría enrutar las solicitudes a diferentes sistemas ERP regionales, aplicaciones de cadena de suministro y portales de clientes a través de un único despliegue de controlador Ingress.

Entornos de desarrollo y ensayo

Los equipos de desarrollo utilizan controladores Ingress para crear entornos separados para probar nuevas características. Los equipos pueden configurar automáticamente nuevos entornos de pruebas y dirigir el tráfico correcto a cada uno según la característica que se esté desarrollando.

Integración de socios y proveedores

Las compañías emplean los controladores Ingress para compartir de forma segura las API internas con socios y proveedores. Cada organización puede tener diferentes licencias de acceso y límites de uso, todo ello gestionado a través de un único sistema sin necesidad de crear infraestructuras independientes.

Distribución global del tráfico

Las organizaciones multinacionales implementan controladores Ingress como parte de estrategias globales de administración del tráfico, encaminando a los usuarios a centros de datos geográficamente óptimos mientras mantienen políticas de seguridad y monitoreo consistentes.

Requisitos de conformidad y auditoría

Las industrias reguladas utilizan controladores Ingress para implementar el registro requerido, los controles de acceso (agregar cuando se crea la página) y las políticas de gobernanza de datos. Todo el acceso externo se puede monitorear y auditar de forma centralizada a través de la capa Ingress.

Beneficios de los controladores Ingress de Kubernetes

  • Consolidación de la infraestructura: las arquitecturas tradicionales a menudo requieren equilibradores de carga dedicados para cada aplicación, lo que genera importantes costos operativos y de hardware. Los controladores Ingress permiten a las organizaciones consolidar múltiples aplicaciones detrás de una infraestructura compartida, lo que reduce los costos de equilibrio de carga y mejora la utilización de recursos.
  • Ciclos de desarrollo acelerados: los equipos de desarrollo pueden desplegar y probar nuevas características sin involucrar a los administradores de red ni configurar equilibradores de carga externos. Los controladores Ingress admiten flujos de trabajo de GitOps en los que los cambios de enrutamiento se gestionan a través del control de versiones y canalizaciones de despliegue automatizadas.
  • Observabilidad mejorada: Para proporcionar Observabilidad mejorada, los controladores Ingress modernos proporcionan analytics detallados sobre los patrones de uso de la aplicación, el comportamiento de los usuarios y los cuellos de botella de rendimiento. Esta visibilidad permite tomar decisiones basadas en datos sobre la planificación de la capacidad, la adopción de funciones y la optimización de la experiencia del usuario.
  • Aplicación de seguridad automatizada: En lugar de configurar políticas de seguridad en varios sistemas, las organizaciones pueden aplicar autenticación, autorización, limitación de velocidad, reglas de cortafuegos de aplicaciones web y denegación distribuida del servicio (DDoS) a través de las políticas del controlador Ingress. Las actualizaciones de seguridad se pueden desplegar instantáneamente en todas las aplicaciones.
  • Portabilidad de la nube: a diferencia de los servicios de equilibrio de carga específicos de la nube, los controladores Ingress brindan una funcionalidad consistente entre diferentes proveedores de la nube y la infraestructura on premises. Las aplicaciones se pueden migrar entre entornos sin cambios arquitectónicos.
  • Capacidades de escalado dinámico: los controladores Ingress pueden ajustar automáticamente los patrones de enrutamiento en función de las condiciones de tráfico en tiempo real, la capacidad de back-end y las políticas configuradas. Esta característica permite una configuración sofisticada del tráfico que se adapta a las condiciones cambiantes del negocio.

Desafíos de los controladores Ingress

  • Consideraciones de rendimiento: todo el tráfico externo fluye a través de los controladores Ingress, lo que los convierte en posibles cuellos de botella en los entornos de producción. Las organizaciones deben planificar cuidadosamente la capacidad, implementar un monitoreo adecuado y diseñar estrategias de redundancia para garantizar una alta disponibilidad.
  • Curva de aprendizaje y gastos generales operativos: los equipos deben desarrollar experiencia en conceptos de redes de Kubernetes, gestión de configuración YAML y resolución de problemas de sistemas distribuidos, lo que puede requerir una capacitación y un ajuste operativo significativos.

Opciones del controlador Ingress de Kubernetes

La elección del controlador Ingress de Kubernetes adecuado depende de los requisitos de la organización, la infraestructura existente y las capacidades del equipo. Cada implementación ofrece ventajas distintas para casos de uso específicos:

  • Controlador NGINX Ingress: la opción más adoptada, el controlador NGINX Ingress (ingress-nginx), ofrece un rendimiento de nivel empresarial y amplias capacidades. El ecosistema maduro de NGINX proporciona documentación completa, opciones de soporte comercial y escalabilidad comprobada.
  • Controlador Traefik Ingress: Traefik está diseñado para entornos modernos nativos de la nube, con énfasis en el descubrimiento automático de servicios y la facilidad de uso. Traefik sobresale en entornos dinámicos donde los servicios de Kubernetes cambian con frecuencia, ya que ofrece integración con mallas de servicios y Container Registry.
  • Controlador HAProxy Ingress: construido sobre el equilibrador de carga HAProxy estándar de la industria, el controlador HAProxy Ingress proporciona un rendimiento sólido para escenarios de alto tráfico. Este controlador permite algoritmos avanzados de equilibrio de carga, estadísticas detalladas y control de tráfico de grano fino.
  • Istio Gateway: Como parte de la plataforma integral de malla de servicios Istio, Istio Gateway cuenta con características avanzadas de gestión del tráfico, seguridad y Observabilidad. Istio Gateway también admite capacidades sofisticadas, como división de tráfico, inyección de fallas y rastreo distribuido.
  • Soluciones de proveedores de la nube: los principales proveedores de la nube ofrecen controladores Ingress optimizados que se integran profundamente con sus plataformas. AWS Load Balancer Controller, Google Cloud Load Balancer, Azure Application Gateway Ingress Controller e IBM Cloud Application Load Balancer proporcionan una integración perfecta con servicios nativos de la nube, escalado automatizado y facturación simplificada.
  • Controladores basados en Envoy: los controladores Ingress basados en el proxy Envoy, incluidos Ambassador y Emissary-Ingress, ofrecen una gestión del tráfico de alto rendimiento con características avanzadas de observabilidad. Estas soluciones a menudo incluyen autenticación integrada, limitación de velocidad y funcionalidad de puerta de enlace API, lo que las hace adecuadas para organizaciones que crean estrategias de gestión de API.
Soluciones relacionadas
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud es una plataforma de contenedores OpenShift (OCP) totalmente gestionada.

Conozca Red Hat OpenShift
Soluciones de contenedores

Las soluciones de contenedores ejecutan y amplían cargas de trabajo en contenedores con seguridad, innovación de código abierto y despliegue rápido.

Explorar contenedores
Servicios de consultoría en la nube 

Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de IBM de asesoramiento sobre la nube. Descubra cómo crear conjuntamente soluciones, acelerar la transformación digital y optimizar el rendimiento a través de estrategias de nube híbrida y asociaciones de expertos.

Servicios en la nube
Dé el siguiente paso

Dé los primeros pasos con una plataforma Red Hat OpenShift totalmente gestionada o explore la flexibilidad del ecosistema IBM Cloud Kubernetes. Acelere su proceso de desarrollo y despliegue con soluciones escalables y seguras adaptadas a sus necesidades.

Conozca Red Hat OpenShift Conozca Kubernetes