O que e um Ingress no Kubernetes? Roteando trafego externo
Um Ingress e um objeto do Kubernetes que define regras de roteamento HTTP/S - por hostname e path - para o trafego externo que entra no cluster.
Pods e Services sao internos por padrao. Para expor um app ao mundo externo por HTTP ou HTTPS, voce precisa de uma forma de rotear as requisicoes para dentro e despacha-las para o Service certo. Um Ingress e o conjunto de regras declarativas para isso, e um ingress controller e o proxy que de fato as aplica.
Regras por host e path
Um Ingress mapeia requisicoes de entrada para Services de backend com base em hostname e path da URL. Por exemplo, api.example.com roteia para o Service api enquanto app.example.com roteia para o Service web - tudo atras de um unico ponto de entrada.
O ingress controller
Um objeto Ingress e inerte sem um controller. O ingress controller (NGINX, Traefik, um load balancer de nuvem) observa os objetos Ingress e configura um proxy real para aplicar as regras. Sem controller, sem roteamento.
Terminacao de TLS
O Ingress comumente termina HTTPS: voce referencia um Secret de TLS que guarda o certificado, e o controller serve TLS e encaminha HTTP puro internamente. Ferramentas como o cert-manager automatizam a emissao de certificados.
Ingress vs Service tipo LoadBalancer
- Um Service LoadBalancer expoe um Service, muitas vezes um LB de nuvem para cada.
- Um Ingress consolida muitos Services atras de um unico LB com roteamento HTTP.
- O Ingress entende paths e hostnames; Services puros nao.
Ingress no CD
Quando o CD faz o deploy de um novo Service, ele geralmente aplica um Ingress correspondente (ou valores de chart) para expo-lo. Ambientes de preview costumam receber um hostname por PR roteado pelo Ingress, depois removido no teardown.
Principais conclusões
- Um Ingress declara roteamento HTTP/S por host e path para Services internos.
- Ele precisa de um ingress controller para de fato aplicar as regras.
- O Ingress consolida muitos Services atras de um unico ponto de entrada e trata TLS.