Si Kubernetes Ingress es el objeto API que proporciona reglas de enrutamiento para gestionar el acceso externo a los servicios, el controlador Ingress es la implementación real de la API Ingress. El controlador Ingress 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 en modo round-robin a través de los pods. La capa 7 (L7) se refiere al nivel de aplicación de la pila OSI: conexiones externas con equilibrio de carga entre pods, en función de las solicitudes. A menudo se prefiere la capa 7, pero debe seleccionar un controlador Ingress que cumpla con sus requisitos de equilibrio de carga y enrutamiento.
El controlador Ingress es responsable de leer la información del recurso Ingress y procesar esos datos según corresponda. A continuación se muestra un ejemplo de recurso de Ingress:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
spec:
backend:
serviceName:ServiceName
servicePort:<Port Number>
A modo de analogía, si Kubernetes Ingress es un ordenador, entonces el controlador Ingress es un programador que utiliza el ordenador y realiza acciones. Además, las reglas Ingress actúan como el gestor que dirige al programador para que realice el trabajo utilizando el ordenador. Las reglas Ingress 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 backend predeterminado.
Si lo analizamos con mayor detenimiento, el controlador Ingress es una aplicación que se ejecuta en un clúster de Kubernetes y configura un equilibrador de carga HTTP según los recursos Ingress. El equilibrador de carga puede ser un equilibrador de carga de software que se ejecuta en el clúster o un equilibrador de carga de hardware o en la nube que se ejecuta externamente. Los diferentes equilibradores de carga requieren diferentes implementaciones del controlador Ingress.
Hay varios controladores Ingress disponibles en el mercado, y es importante elegir el adecuado para gestionar el tráfico y la carga que entra en su clúster de Kubernetes.