¿Qué es Kubernetes Ingress?

Autor

Ravi Saraswathi

IBM Chief Architect

IBM Blog

Definición de Kubernetes Ingress

Kubernetes Ingress es un objeto API que proporciona reglas de enrutamiento para gestionar el acceso de usuarios externos a los servicios en un clúster de Kubernetes.

En este artículo, veremos cómo y por qué es posible que necesite exponer una aplicación al exterior de su clúster de Kubernetes, las diferentes opciones disponibles y las situaciones en las que Kubernetes Ingress es más útil. En este blog se supone que tiene conocimientos básicos de Kubernetes, pero si necesita más información general, consulte los siguientes recursos:

Opciones para exponer aplicaciones desplegadas en Kubernetes

Hay varias formas de exponer su aplicación al exterior de su clúster de Kubernetes, y querrá seleccionar la adecuada en función de su caso de uso específico. 

  Las cuatro opciones principales que compararemos en esta publicación son: ClusterIP, NodePort, LoadBalancer e Ingress. Cada uno proporciona una forma de exponer los servicios y es útil en diferentes situaciones. Un servicio es esencialmente una interfaz para su aplicación que redirige automáticamente el tráfico a los pods disponibles de manera distribuida uniformemente. Los servicios son una forma abstracta de exponer una aplicación que se ejecuta en un conjunto de pods como un servicio de red. Los pods son inmutables, lo que significa que cuando mueren, no resucitan. El clúster de Kubernetes crea nuevos pods en el mismo nodo o en un nuevo nodo una vez que un pod muere. 

Al igual que los pods y los despliegues, los servicios son Recursos en Kubernetes. Un servicio proporciona un único punto de acceso desde fuera del clúster y le permite acceder dinámicamente a un grupo de pods de réplica. 

Para el acceso a aplicaciones internas dentro de un clúster de Kubernetes, ClusterIP es el método preferido. Es una configuración predeterminada en Kubernetes y utiliza una dirección IP interna para acceder al servicio.

Para exponer un servicio a solicitudes de red externas, NodePort, LoadBalancer e Ingress son opciones posibles. Primero veremos Ingress y compararemos los servicios más adelante en este artículo.

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 Ingress y por qué es útil?

Kubernetes Ingress es un objeto API que proporciona reglas de enrutamiento para gestionar el acceso de usuarios externos a los servicios en un clúster de Kubernetes, típicamente a través de HTTPS/HTTP. Con Ingress, puede configurar fácilmente reglas para enrutar el tráfico sin crear un montón de Load Balancers o exponer cada servicio en el nodo. Esto lo convierte en la mejor opción para usar en entornos de producción. 

En entornos de producción, normalmente necesita enrutamiento basado en contenido, soporte para múltiples protocolos y autenticación. Ingress le permite configurar y administrar estas capacidades dentro del clúster.

Ingress se compone de un objeto API Ingress y el controlador Ingress. Como hemos comentado, Kubernetes Ingress es un objeto API que describe el estado deseado para exponer los servicios al exterior del clúster de Kubernetes. Un controlador de entrada es esencial porque es la implementación real de la API de entrada. Un controlador de entrada lee y procesa la información de Recursos de entrada y, por lo general, se ejecuta como pods dentro del clúster de Kubernetes.

Un Ingress proporciona lo siguiente:

  • URL accesibles externamente para aplicaciones desplegadas en clústeres de Kubernetes
  • Compatibilidad con host virtual basado en nombres y enrutamiento basado en URI
  • Reglas de equilibrio de carga y tráfico, así como terminación SSL

Para obtener una descripción general visual rápida de Kubernetes Ingress, vea el siguiente video:

¿Qué es el controlador de ingreso?

Si Kubernetes Ingress es el objeto de API que proporciona reglas de enrutamiento para gestionar el acceso externo a los servicios, Ingress Controller es la implementación real de la API de Ingress. El controlador de entrada suele ser un equilibrador de carga para enrutar el tráfico externo a su clúster de Kubernetes y es responsable de los servicios de red L4-L7. 

La capa 4 (L4) se refiere al nivel de conexión de la pila de red OSI: conexiones externas con equilibrio de carga de forma rotativa entre pods. La capa 7 (L7) se refiere al nivel de aplicación de la pila OSI: conexiones externas con carga equilibrada en los pods, en función de las solicitudes. A menudo se prefiere la capa 7, pero debe seleccionar un controlador de entrada que cumpla con sus requisitos de equilibrio de carga y enrutamiento.

El controlador de ingreso es responsable de leer la información del recurso de ingreso y procesar esos datos en consecuencia. El siguiente es un recurso de entrada de muestra:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress 
spec:
  backend:
    serviceName:ServiceName
    servicePort:<Port Number>

Como analogía, si Kubernetes Ingress es una computadora, entonces Ingress Controller es un programador que usa la computadora y toma medidas. Además, las reglas de ingreso actúan como el administrador que dirige al programador para que haga el trabajo usando la computadora. Las reglas de ingreso son un conjunto de reglas para procesar el tráfico HTTP entrante. Un Ingress sin reglas envía todo el tráfico a un único servicio de backend predeterminado. 

Mirando más a fondo, el Ingress Controller es una aplicación que se ejecuta en un clúster y configura un equilibrador de carga HTTP de acuerdo con los Recursos de Ingress. El equilibrador de carga puede ser un equilibrador de carga de software que se ejecute en el clúster o un equilibrador de carga de hardware o en la nube que se ejecute externamente. Los diferentes equilibradores de carga requieren diferentes implementaciones de Ingress Controller.

Hay varios controladores de entrada disponibles en el mercado, y es importante elegir el adecuado para gestionar el tráfico y la carga que llegan a su clúster de Kubernetes.

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.

Ingress vs. ClusterIP vs. NodePort vs. LoadBalancer

Ingress, ClusterIP, NodePort y LoadBalancer son formas de obtener tráfico externo en su clúster, y cada una lo hace de manera diferente. Echemos un vistazo a cómo funciona cada uno y dónde los usaría.

ClusterIP

ClusterIP es la opción preferida para el acceso al servicio interno y utiliza una dirección IP interna para acceder al servicio. Algunos ejemplos de dónde ClusterIP podría ser la mejor opción incluyen la depuración de servicios durante el desarrollo y las pruebas, el tráfico interno y los paneles.

NodePort

Un NodePort es una máquina virtual (VM) que se utiliza para exponer un servicio en un número de puerto estático. Se utiliza principalmente para exponer servicios en un entorno que no es de producción (de hecho, no se recomienda el uso en producción). Por ejemplo, se utilizaría un NodePort para exponer un único servicio (sin requisitos de equilibrio de carga para múltiples servicios).

Equilibrio de carga

Este método utiliza un LoadBalancer externo para exponer los servicios a Internet. Puede usar LoadBalancer en un entorno de producción, pero a menudo se prefiere Ingress.

Ingress

Ingress le permite consolidar las reglas de enrutamiento del tráfico en un único recurso y se ejecuta como parte de un clúster de Kubernetes. Algunas de las razones por las que Kubernetes Ingress es la opción preferida para exponer un servicio en un entorno de producción incluyen las siguientes:

  • El enrutamiento del tráfico se controla mediante reglas definidas en el recurso de entrada.
  • Ingress forma parte del clúster de Kubernetes y se ejecuta como pod.
  • Un equilibrador de carga externo es costoso y debe administrarlo fuera del clúster de Kubernetes. Kubernetes Ingress se gestiona desde dentro del clúster.

En entornos de producción, normalmente se utiliza Ingress para exponer aplicaciones a Internet. Se accede a una aplicación desde Internet a través del puerto 80 (HTTP) o el puerto 443 (HTTPS), e Ingress es un objeto que permite el acceso a sus Kubernetes Service desde fuera del clúster. 

Resumen

La API de Kubernetes Ingress le permite exponer sus aplicaciones desplegadas en un clúster de Kubernetes a Internet con reglas de enrutamiento en una única fuente. Para implementar Ingress, debe configurar un controlador de Ingress en su clúster: es responsable de procesar la información de recursos de Ingress y permitir el tráfico basado en las reglas de Ingress. Es importante elegir el servicio adecuado con la configuración adecuada para exponer su aplicación a Internet en función de las pautas enumeradas anteriormente. 

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