Se o Kubernetes Ingress é o objeto de API que fornece regras de roteamento para gerenciar o acesso externo a serviços, o Controlador do Ingress é a implementação real da API do Ingress. O Controlador do Ingress geralmente é um LoadBalancer para rotear tráfego externo para seu cluster do Kubernetes e é responsável pelos serviços de rede L4-L7.
A camada 4 (L4) refere-se ao nível de conexão da stack de OSI — conexões externas com balanceamento de carga de maneira round-robin entre pods. A camada 7 (L7) refere-se ao nível de aplicação da stack de OSI—conexões externas com balanceamento de carga entre pods, com base nas solicitações. A camada 7 é frequentemente preferida, mas você deve selecionar um Controlador do Ingress que atenda a seus requisitos de balanceamento de carga e roteamento.
O Controlador do Ingress é responsável por ler as informações do Ingress Resource e processar esses dados adequadamente. Veja a seguir um exemplo de Ingress Resource:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
spec:
backend:
serviceName:ServiceName
servicePort:<Port Number>
Como analogia, se o Kubernetes Ingress é um computador, então o Controlador do Ingress é um programador usando o computador e agindo. Além disso, os Ingress Rules atuam como o gerente que orienta o programador a fazer o trabalho usando o computador. Os Ingress Rules são um conjunto de regras para processar o tráfego HTTP de entrada. Um Ingress sem regras envia todo o tráfego para um único serviço de back-end padrão.
Olhando mais a fundo, o Controlador do Ingress é uma aplicação que é executada em um cluster do Kubernetes e configura um LoadBalancer HTTP de acordo com os Ingress Resources. O LoadBalancer pode ser um LoadBalancer de software executado no cluster ou um LoadBalancer de hardware ou nuvem executado externamente. Diferentes LoadBalancers exigem diferentes implementações do Ingress Controller.
Vários Controlador do Ingresss estão disponíveis no mercado, e é importante escolher o certo para gerenciar o tráfego e a carga que chegam ao seu cluster do Kubernetes.