O Ingress do Kubernetes sempre foi o método tradicional para expor serviços fora do cluster, oferecendo roteamento, terminação TLS e balanceamento de carga. Só que, conforme as necessidades de rede no Kubernetes ficaram mais complexas, o Ingress começou a mostrar limitações, principalmente em ambientes multi-tenant, controle avançado de tráfego e extensibilidade.
É aí que entra a Gateway API. Pensada como a sucessora natural do Ingress, ela traz recursos mais robustos, mais flexibilidade e uma abordagem mais nativa do Kubernetes para lidar com tráfego externo. A Gateway API introduz funcionalidades importantes, como acesso baseado em papéis para recursos de rede, uma forma padronizada de definir políticas de tráfego e suporte a padrões de service mesh.
A escolha entre Ingress e Gateway API depende dos requisitos de cada projeto. A Gateway API se sai melhor em roteamentos complexos e cenários com requisitos rigorosos de segurança, enquanto o Ingress costuma ser mais indicado para abordagens nativas do Kubernetes. Neste post, vamos explorar a ferramenta ingress2gateway e mostrar como ela ajuda na migração do Ingress para a Gateway API.
O que é o **ingress2gateway?**
A ferramenta Ingress2gateway foi criada para simplificar a transição dos recursos de Ingress do Kubernetes para a Gateway API, mais poderosa e expressiva. Ela entrega um processo de conversão automatizado e robusto, garantindo uma migração tranquila e com o mínimo de interrupções.
Principais recursos e funcionalidades:
✅ Conversão automática
- Analisa de forma inteligente os recursos de Ingress existentes e gera as configurações equivalentes da Gateway API, incluindo Gateway, HTTPRoute e BackendPolicy.
- Lida com regras, anotações e configurações complexas do Ingress, traduzindo-as para as especificações correspondentes da Gateway API.
✅ Preserva as regras de roteamento:
- Mapeia com precisão caminhos de URL, hostnames e serviços de backend das regras do Ingress para regras de HTTPRoute.
- Garante que o roteamento de tráfego continue se comportando da mesma forma após a migração, evitando interrupções inesperadas no serviço.
- Suporta vários recursos de roteamento, como correspondência de caminho (prefixo, exato, regex), correspondência por hostname e roteamento baseado em headers.
✅ Suporta vários Ingress Controllers
- Hoje, a ferramenta suporta os providers apisix, cilium, ingress-nginx, istio, gce, kong e openapi, e a comunidade segue trabalhando para incluir outros.
✅ Facilita a migração gradual:
- Permite a adoção incremental da Gateway API, com conversão seletiva de recursos do Ingress.
- Suporta o modo dry-run para visualizar o resultado da conversão antes de aplicar mudanças no cluster.
- Permite testar lado a lado os recursos de Ingress e da Gateway API.
Ingress2gateway na prática
Para testar a ferramenta, você precisa de um cluster Kubernetes com a Gateway API instalada. Vários projetos oferecem suporte à Gateway API, e alguns provedores de nuvem também disponibilizam uma implementação totalmente gerenciada.
No exemplo a seguir, estou usando o Google Kubernetes Engine e o ingress controller padrão do GKE, o ingress-gce.
Implantando workloads e recurso de Ingress de exemplo
- Faça o deploy da workload de exemplo httpbin.
---
apiVersion: v1
kind: Service
metadata:
name: httpbin
labels:
app: httpbin
spec:
ports:
- name: http
port: 8000
targetPort: 80
selector:
app: httpbin
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpbin
spec:
replicas: 1
selector:
matchLabels:
app: httpbin
template:
metadata:
labels:
app: httpbin
spec:
containers:
- image: docker.io/kennethreitz/httpbin
imagePullPolicy: IfNotPresent
name: httpbin
ports:
- containerPort: 80

Exemplo de deployment e service do Kubernetes
- Crie um recurso de Ingress para o deployment do httpbin.
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: httpbin-ingress
namespace: default
spec:
rules:
- host: httpbin.example.com
http:
paths:
- backend:
service:
name: httpbin
port:
number: 8000
path: /
pathType: Prefix

Exemplo de recurso de Ingress
Instale e execute o ingress2gateway
- Siga a documentação de instalação para instalar o ingress2gateway ou baixe o binário na página de releases.
- Execute o ingress2gateway para o seu provider. A ferramenta lê os recursos de Ingress e/ou CRDs específicos do provider em um cluster Kubernetes ou em um arquivo e gera, no stdout, os recursos equivalentes da Gateway API em formato YAML/JSON.
A saída ficará assim:

Exemplo de recursos da Gateway API gerados pelo ingress2gateway
Observação: o ingress2gateway não foi feito para copiar anotações do Ingress para a Gateway API. Em vez disso, a ferramenta converte as anotações em CRDs da Gateway; anotações e/ou CRDs específicos de provider muito utilizados podem ainda não ter suporte. Consulte os providers suportados para ver a lista atual e a documentação de cada um.

Exemplo de recursos da Gateway API
- Confira o manifesto gerado para garantir que ele tem todas as configurações necessárias antes de aplicá-lo em produção. Faça um teste ponta a ponta antes de remover os recursos de Ingress existentes.
O Ingress tradicional cumpriu bem o seu papel, mas a Gateway API leva o controle e a flexibilidade do gerenciamento de tráfego no Kubernetes a outro patamar. Com roteamento avançado, políticas de segurança mais robustas e suporte nativo a multi-tenancy, a Gateway API foi pensada para atender às necessidades em constante evolução do networking nativo da nuvem. Pronto para fazer o upgrade? O ingress2gatewayapi, mantido pela comunidade, simplifica a migração e garante uma transição sem sobressaltos.
Espero que este post tenha sido útil. Se você quiser saber mais ou tiver interesse nos nossos serviços, fale com a gente. É só entrar em contato por aqui.