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.