¿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 Kubernetes, sirviendo como puente entre los usuarios externos y los servicios contenerizados.

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

Por ejemplo, una plataforma sanitaria podría necesitar puntos de acceso independientes para los portales de pacientes, los paneles de control de los proveedores, los sistemas de facturación y los informes de cumplimiento, un enfoque que resulta caro y complejo desde el punto de vista operativo.

Un controlador Ingress de Kubernetes aborda este problema al actuar 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 organizativas específicas.

Las últimas novedades sobre tecnología, respaldadas por conocimientos de expertos

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

¡Gracias! Está suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. 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 la Cloud Native Computing Foundation (CNCF) en 2015, Kubernetes ahora impulsa la infraestructura de TI esencial para la mayoría de las empresas de la Fortune 500, lo que hace que la gestión del controlador Ingress sea crítica para las operaciones empresariales. Según una encuesta realizada en 2022, el 96 % de las organizaciones utilizan Kubernetes o están evaluando esta tecnología para entornos de producción1.

Antes de Kubernetes, las aplicaciones solían ejecutarse en servidores dedicados o máquinas virtuales (VM), lo que hacía que el escalado resultara caro y llevara mucho tiempo. Kubernetes introdujo contenedores, unidades ligeras y portátiles que empaquetan aplicaciones con todas sus dependencias.

Kubernetes revolucionó los flujos de trabajo de DevOps y la implementación de aplicaciones al introducir la orquestación de contenedores a escala. Esta plataforma de código abierto automatiza la implementación, el escalado y la gestión de aplicaciones contenerizadas 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 implementables más pequeñas compuestas por uno o más contenedores (normalmente contenedores Docker). Estos pods se ejecutan en nodos dentro de clústeres, mientras que un plano de control coordina todas las operaciones del clúster. Los servicios proporcionan identidades de red estables para grupos de pods, lo que permite patrones de comunicación fiables.

Los controladores Ingress suelen implementarse como pods especializados que monitorizan 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 las nuevas implementaciones de aplicaciones o las actualizaciones de configuración.

IBM Cloud

Red Hat OpenShift AI en IBM Cloud: Implemente cargas de trabajo de IA

Utilice las capacidades de IA con Red Hat OpenShift on IBM Cloud. Este vídeo explora cómo crear, implementar y gestionar 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 Kubernetes.

Kubernetes Ingress se diferencia del término general "ingress" (entrada), que se refiere al flujo de tráfico de red entrante en un entorno de aplicaciones contenerizadas nativas 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 los diferentes servicios. Por el contrario, ingress en un sentido más amplio se refiere simplemente a cualquier tráfico que entra en un sistema (en contraposición a "egress", o salida, que se refiere al tráfico que sale del sistema).

Leer 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 de Kubernetes. 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 varios criterios. Esta capacidad permite gestionar de forma eficiente el tráfico externo hacia los servicios, que normalmente se expone mediante ClusterIP dentro del clúster de Kubernetes.

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

Recursos de entrada

Los recursos de Ingress (también denominados recursos de Kubernetes u objetos API de 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 utilizar el campo ingressClassName para determinar qué controlador Ingress debe gestionar el recurso, lo que permite dirigir el tráfico a un controlador específico cuando existen varios controladores en un clúster.

Controladores Ingress

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

¿Cómo funciona un controlador Ingress de Kubernetes?

Los equilibradores de carga tradicionales de capa 4, como los de las rutas TCP, UDP y HTTP/HTTPS, distribuyen el tráfico basándose ú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 URL y nombres de host
  • Cabeceras 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 monitorizan continuamente los cambios en estas configuraciones y actualizan 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 fluidas.

Los clústeres de Kubernetes pueden ejecutar varios controladores Ingress de manera simultánea, cada uno de los cuales gestiona diferentes tipos de tráfico o aplicaciones. Cada controlador funciona de manera impulsada por 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. Gestionan el tráfico HTTP y HTTPS, realizan la terminación SSL y toman decisiones inteligentes de equilibrio de carga entre varias instancias de servicio.

Gestión de la configuración

Los controladores Ingress de Kubernetes monitorizan continuamente la API de Kubernetes en busca de cambios en los recursos de Ingress en todos los espacios de nombres. Independientemente de si estos cambios se aplican a través de kubectl, pipelines 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 sobrecargada.

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 de usuario.

Casos de uso del controlador Ingress de Kubernetes

Consolidación de aplicaciones

Las grandes organizaciones utilizan los controladores Ingress para consolidar cientos de aplicaciones internas detrás de puntos de acceso unificados. Este enfoque reduce los costes de infraestructura a la vez que mejora la seguridad mediante la aplicación centralizada de políticas. Una empresa de fabricación global puede dirigir las solicitudes a diferentes sistemas ERP regionales, aplicaciones de cadena de suministro y portales de clientes a través de una única implementación del controlador Ingress.

Entornos de desarrollo y preproducción

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 de ellos en función de la característica que se esté desarrollando.

Integración de partners y proveedores

Las empresas utilizan los controladores Ingress para compartir de forma segura las API internas con partners y proveedores. Cada organización puede tener diferentes permisos de acceso y límites de uso, todos ellos gestionados a través de un único sistema sin necesidad de crear una infraestructura independiente.

Distribución global del tráfico

Las organizaciones multinacionales implementan controladores Ingress como parte de las estrategias globales de gestión del tráfico, enrutando a los usuarios a centros de datos geográficamente óptimos y manteniendo políticas de seguridad y monitorización coherentes.

Requisitos de cumplimiento y auditoría

Los sectores regulados utilizan controladores Ingress para implementar las políticas necesarias de información de registro, control de acceso (añadir cuando se cree la página) y gobierno de datos. Todo el acceso externo se puede monitorizar 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 costes operativos y de hardware. Los controladores Ingress permiten a las organizaciones consolidar varias aplicaciones detrás de una infraestructura compartida, lo que reduce los costes de equilibrio de carga y mejora la utilización de los recursos.
  • Ciclos de desarrollo acelerados: los equipos de desarrollo pueden implementar 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 pipelines de implementación automatizados.
  • Observabilidad mejorada: para proporcionar una observabilidad mejorada, los controladores Ingress modernos proporcionan análisis detallados sobre los patrones de uso de la aplicación, el comportamiento de los usuarios y los cuellos de botella en el rendimiento. Esta visibilidad permite tomar decisiones basadas en datos sobre la planificación de la capacidad, la adopción de características y la optimización de la experiencia del usuario.
  • Aplicación automatizada de la seguridad: en lugar de configurar políticas de seguridad en varios sistemas, las organizaciones pueden aplicar la autenticación, la autorización, la limitación de velocidad, las reglas WAF (firewall de aplicaciones web) y la protección contra DDoS a través de las políticas del controlador Ingress. Las actualizaciones de seguridad se pueden implementar al instante 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 proporcionan una funcionalidad coherente en diferentes proveedores de servicios en la nube y en on-premises. Las aplicaciones se pueden migrar entre entornos sin necesidad de realizar cambios en la arquitectura.
  • Capacidades de escalado dinámico: los controladores Ingress pueden ajustar automáticamente los patrones de enrutamiento en función de las condiciones del tráfico en tiempo real, la capacidad del backend y las políticas configuradas. Esta característica permite un sofisticado modelado del tráfico que se adapta a las condiciones cambiantes del negocio.

Retos de los controladores Ingress

  • Consideraciones sobre el rendimiento: todo el tráfico externo fluye a través de los controladores Ingress, lo que los convierte en potenciales cuellos de botella en entornos de producción. Las organizaciones deben planificar cuidadosamente la capacidad, aplicar una monitorización adecuada y diseñar estrategias de redundancia para garantizar una alta disponibilidad.
  • Curva de aprendizaje y sobrecarga operativa: los equipos deben desarrollar conocimientos especializados 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 formación y un ajuste operativo considerables.

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 de personalización. El ecosistema maduro de NGINX proporciona documentación completa, opciones de soporte comercial y escalabilidad probada.
  • Controlador Traefik Ingress: Traefik está diseñado para entornos modernos nativos de la nube, con un énfasis en la detección automática de servicios y la facilidad de uso. Traefik sobresale en los entornos dinámicos en los que los servicios de Kubernetes cambian con frecuencia, y ofrece una integración incorporada con mallas de servicios y registros de contenedores.
  • Controlador HAProxy Ingress: basado en el equilibrador de carga HAProxy estándar del sector, el controlador HAProxy Ingress proporciona un rendimiento robusto para escenarios de alto tráfico. Este controlador permite algoritmos avanzados de equilibrio de carga, estadísticas detalladas y control de tráfico detallado.
  • Istio Gateway: como parte de la plataforma integral de malla de servicios Istio, Istio Gateway presenta características avanzadas de gestión de tráfico, seguridad y observabilidad. Istio Gateway también admite capacidades sofisticadas, como la división del tráfico, la inyección de fallos y el rastreo distribuido.
  • Soluciones de proveedores de servicios en la nube: los principales proveedores de servicios en la nube ofrecen controladores Ingress optimizados que se integran en profundidad 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 fluida 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 suelen incluir autenticación integrada, limitación de velocidad y funcionalidad de puerta de enlace API, lo que las hace adecuadas para organizaciones que desarrollan estrategias integrales 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.

Descubra 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 e implementación rápida.

Explore los contenedores
Servicios de consultoría en la nube 

Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de consultoría de nube de IBM. Descubra cómo cocrear soluciones, acelerar la transformación digital y optimizar el rendimiento mediante estrategias de nube híbrida y colaboraciones con expertos.

Servicio en la nube
Dé el siguiente paso

Comience con una plataforma Red Hat OpenShift totalmente gestionada o explore la flexibilidad del ecosistema IBM Cloud Kubernetes. Acelere su proceso de desarrollo e implementación con soluciones escalables y seguras adaptadas a sus necesidades.

Descubra Red Hat OpenShift Explore Kubernetes