🚀 Expondo Kubernetes (Rancher) com Kong API Gateway
Neste guia vamos aprender a configurar o Kong API Gateway para expor APIs gerenciadas pelo Kubernetes do Rancher, com segurança e escalabilidade.
📋 Pré-requisitos
- Cluster Kubernetes gerenciado pelo Rancher
kubectl configurado e acesso ao clusterhelm (opcional para instalação via chart)- Domínio válido (ex:
api.meusite.com)
kubectl configurado e acesso ao clusterhelm (opcional para instalação via chart)api.meusite.com)🔧 1. Instalar o Kong Ingress Controller
Execute o comando abaixo para implantar o Kong no seu cluster:
kubectl apply -f https://github.com/Kong/kubernetes-ingress-controller/releases/download/v2.12.0/all-in-one-dbless.yaml
⚠️ Caso tenha problemas: Verifique se o proxy ou firewall permite acesso ao GitHub.
✅ Após rodar, verifique se os pods estão rodando:
kubectl get pods -n kong
Execute o comando abaixo para implantar o Kong no seu cluster:
kubectl apply -f https://github.com/Kong/kubernetes-ingress-controller/releases/download/v2.12.0/all-in-one-dbless.yaml
⚠️ Caso tenha problemas: Verifique se o proxy ou firewall permite acesso ao GitHub.
✅ Após rodar, verifique se os pods estão rodando:
kubectl get pods -n kong
🛠️ 2. Criar um Recurso de API Gateway (Ingress)
Agora criaremos um recurso do tipo Ingress para expor sua API.
Crie um arquivo chamado meu-ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minha-app-ingress
annotations:
kubernetes.io/ingress.class: kong
spec:
rules:
- host: seu-dominio.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: minha-app-service
port:
number: 80👉 Substitua seu-dominio.com pelo seu domínio real.
Para aplicar:
kubectl apply -f meu-ingress.yaml
📊 3. Criar Serviços para Gerenciar a API Gateway
A configuração de plugins como rate limiting protege sua API contra abusos.
Crie um arquivo chamado kong-plugin.yaml:
apiVersion: configuration.konghq.com/v1 kind: KongPlugin metadata: name: rate-limiting config: minute: 100 # 100 requisições por minuto policy: local # contagem local (não usa Redis) plugin: rate-limiting
Para aplicar o plugin:
kubectl apply -f kong-plugin.yaml
🧪 4. Testar no Laboratório
Verifique se tudo está funcionando:
# Verificar pods
kubectl get pods -n kong
# Verificar ingress
kubectl get ingress
# Testar acesso
curl -v https://seu-dominio.com
Você deve ver uma resposta da sua API. Se não funcionar, verifique os logs:
kubectl logs -n kong deployment/kong-controller
✅ Dica de LAB: Use ferramentas como Postman ou curl para simular várias requisições e testar o rate limiting.
Verifique se tudo está funcionando:
# Verificar pods kubectl get pods -n kong # Verificar ingress kubectl get ingress # Testar acesso curl -v https://seu-dominio.com
Você deve ver uma resposta da sua API. Se não funcionar, verifique os logs:
kubectl logs -n kong deployment/kong-controller
🚦 Dicas para Produção
- Configure o plugin de rate limiting com Redis para clusters maiores
- Use certificados TLS com
cert-manager - Configure domínio válido e DNS apontando para o load balancer
- Monitore com Grafana e Prometheus integrados ao Kong
cert-manager🔗 Documentação Oficial
❤️ Curtiu? Compartilhe com sua equipe de DevOps e SRE!