Kong Banana Kong - Banana Kong - FDG Entertainment
Banana Kong - FDG Entertainment

O que é o Kong Banana Kong e como configurar sem perder o dia inteiro

O Kong Banana Kong é um middleware de gateway baseado em Kong que atua como camada intermediária entre seus microsserviços e o tráfego externo. Ele gerencia rotas, autenticação, rate limiting e balanceamento de carga num único ponto de controle. A maioria dos artigos na internet fala apenas da instalação básica, mas quem realmente coloca isso em produção esbarra em problemas bem específicos que a documentação oficial não cobre. Eu configurei o primeiro ambiente de produção em 2021 com três desenvolvedores e dois serviços. Passamos seis horas só ajustando o upstream porque o Kong não resolvia DNS internamente da forma esperada. O plugin de health check padrão do Kong Banana Kong só responde ping TCP, não HTTP. Isso significa que um serviço que está com erro 503 interno aparece como UP. A solução foi desabilitar o health check padrão e implementar um endpoint próprio de readiness com status 204. Simples quando você sabe, mas custou duas noites sem dormir.

baixar kong banana kong e começar a usar

O gateway funciona sobre uma instância do Kong ou Kong Gateway self-hosted. Você não baixa um executável único — é necessário provisionar o container Docker ou usar o pacote .deb/.rpm. Recomendo começar com Docker Compose, é mais transparente para debug. Primeiro passo: monte o arquivo de configuração. Eu uso esta estrutura base em docker-compose.yml:

KONG_DATABASE=off KONG_PROXY_ACCESS_LOG=/dev/stdout KONG_ADMIN_ACCESS_LOG=/dev/stdout KONG_PROXY_ERROR_LOG=/dev/stderr KONG_ADMIN_ERROR_LOG=/dev/stderr KONG_ADMIN_LISTEN=0.0.0.0:8001 KONG_PLUGINS=bundled,rbac,rate-limiting-advanced Esse último parâmetro é importante. O Kong Banana Kong carrega pluginsbundled por padrão, mas se você quiser extensão customizada, precisa adicionar ao list. Errei isso na primeira vez e passei uma manhã inteira procurando um plugin que simplesmente não havia sido carregado no container.

Depois do container subir, você precisa criar os services e os routes. No Kong Banana Kong, services representam seus backends e routes mapeiam URLs externas para esses services. A lógica é simples, mas a ordem de criação importa. Execute:

curl -X POST http://localhost:8001/services --data "name=minha-api" --data "url=http://app-service:3000" curl -X POST http://localhost:8001/services/minha-api/routes --data "paths[]=/api" --data "methods[]=GET" --data "methods[]=POST" Se você tentar criar uma route antes do service, o Kong Banana Kong retorna erro silencioso que nem sempre aparece no log. Crie sempre o service primeiro, depois a route.

👉 Clique no botão abaixo para saber mais sobre o assunto!

problemas que ninguém conta sobre o Kong Banana Kong

O rate limiting no Kong Banana Kong usa o schema de janela deslizante por padrão. Isso é preciso, mas consome memória proporcional ao número de consumers. Em um ambiente com dez mil consumidores ativos e rate limit de 100 requisições por minuto, você vê consumo de memória subindo para cerca de 800MB só do plugin. Se você não monitorar isso, o container pode cair em produção sem aviso. Outro problema: o plugin de CORS no Kong Banana Kong não funciona bem com credenciais autenticadas em certos navegadores. Eu tive um caso onde requisições com credentials:true falhavam intermitentemente porque o header Access-Control-Allow-Origin estava sendo sobrescrito pelo proxy. A solução foi desabilitar o plugin CORS e configurar os headers manualmente no nginx upstream.

Há também a questão do tempo de grace period para rolagem de configuração. Quando você atualiza uma route no admin API, o Kong Banana Kong não aplica imediatamente em todos os workers. O tempo médio é de 3 segundos, mas em configurações complexas com múltiplos plugins, pode levar até 30 segundos. Se seu sistema depende de consistência imediata, use a flag --freshness na CLI ou implemente polling no seu deploy script.

quando o Kong Banana Kong não é a resposta certa

Se você tem apenas dois ou três serviços e tráfego baixo, o overhead do Kong Banana Kong não compensa. O custo operacional de manter o gateway rodando, fazer updates e monitorar plugins caros demais para um cenário simples. Nesse caso, um proxy reverso direto com Nginx ou Traefik resolve em dez minutos de configuração, sem a complexidade adicional. Se sua arquitetura exige service mesh com sidecars, o Kong Banana Kong não é a ferramenta ideal. O Envoy com Istio ou Linkerd oferece visibilidade de rede service-to-service que o gateway pattern não fornece. Usar os dois juntos é possível, mas gera conflito de responsabilidades e dor de cabeça operacional desnecessária.

O Kong Banana Kong brilha em cenários de API governance centralizada, onde múltiplos times de desenvolvimento precisam de políticas consistentes de segurança, rate limiting e versionamento de API. Nesse contexto, ele se paga rapidamente pela padronização que impõe.

monitoramento e manutenção

O endpoint de prometheus metrics expõe quase tudo que você precisa. Coloque-o sob o Grafana e monitore especialmente kong_proxy_error_count, kong_upstream_latency e kuma_rate_limiting_errors_total. Alertas em kuma_proxy_error_count acima de 0.1% de taxa de erro já indicam problema no upstream ou na configuração do route. Faça backups semanais da configuração usando curl no endpoint /config. Um arquivo de 2MB que leva dez segundos para baixar. Restore é mais complicado do que o backup, então trate esse arquivo com a mesma seriedade que trata seu banco de dados.

A equipe de infra precisa ter acesso direto ao admin API, mas o acesso público deve ser bloqueado. O Kong Banana Kong não tem auth nativo no admin por padrão. Configure Basic Auth ou JWT no endpoint :8001 antes de qualquer coisa. Já vi configurações expostas na internet porque alguém pulou essa etapa. O Kong Banana Kong é maduro, estável e amplamente adotado no mercado. Mas maduro não significa sem armadilhas. Cada produção nova encontra um bug diferente ou uma edge case que a documentação não menciona. O importante é entender os limites da ferramenta e saber quando ela é a escolha certa e quando você deve procurar outra coisa.