O Traefik está virando a opção preferida para substituir o Nginx.

O motivo de o Traefik lidar com atualizações de forma tão eficiente tem a ver com a sua arquitetura. Diferente do Nginx, que depende de um enorme arquivo de configuração em texto, o Traefik é modular.

Ele divide o ciclo de vida do roteamento em quatro etapas distintas.

▶️ EntryPoints (Os Listeners): Esta é a porta de entrada. Eles definem a interface de rede e as portas (geralmente 80 e 443). Eles não roteiam tráfego; apenas ficam “escutando” pacotes de entrada e os repassam adiante.

▶️ Routers (As Regras): Aqui é onde a lógica acontece. O Router analisa a requisição de entrada, verificando Host, Path ou Headers para ver se corresponde a uma regra específica. E, de forma crucial, é aqui que o Middleware é associado.

▶️ Middlewares (Os Modificadores): Este é o recurso que te salva do “Annotation Hell”! São interceptadores que ficam entre o Router e o seu backend. Eles podem modificar a requisição (adicionar headers, comprimir dados) ou aplicar segurança (Basic Auth, Rate Limiting). Você pode encadear vários middlewares para construir lógicas complexas sem escrever scripts customizados.

▶️ Services (Os Load Balancers): Por fim, o Service faz o encaminhamento. Ele funciona como um balanceador de carga interno, distribuindo o tráfego para as suas cargas reais de backend (seus Pods do Kubernetes).

Tipos de configuração:

O Traefik separa sua configuração em duas categorias:

1️⃣ Configuração estática: são as definições de startup, como definir EntryPoints (portas) e conectar na API do Kubernetes. Isso é definido uma vez quando o Traefik inicia.

2️⃣ Configuração dinâmica: são as definições da sua aplicação (Routers, Middlewares e Services).

O Traefik “observa” sua infraestrutura (o Provider). Quando você faz deploy de um novo container ou altera uma regra de roteamento, o Traefik atualiza a Configuração Dinâmica em memória. Isso permite aplicar mudanças imediatamente, sem precisar reiniciar o processo.

Fluxo da requisição
Requisição → EntryPoint → Router (aciona Middleware) → Service → App