Tecnologia
Ingress-as-a-Service: Exposição de serviços locais
2 minutos de leitura
Durante alguns ciclos e desenvolvimento é necessário que um dado serviço seja exposto para ser consumido na internet. Um típico cenário para isso é o desenvolvimento de webhooks. Em um cenário de webhook talvez seja necessário que um serviço externo sensibilize o endpoint que está sendo desenvolvimento. Entre as soluções mais tradicionais estão a publicação da aplicação em alguma plataforma serverless como por exemplo ECS, Beanstalk ou Hiroku. Esse artigo apresenta uma alternativa rápida, que expõe o seu serviço local.
A facilidade do uso das clouds permite que em poucos minutos uma aplicação esteja disponível e publicada, porém demanda um esforço para que isso aconteça. Esse esforço envolve normalmente o provisionamento de ambientes e a sua publicação a cada alteração. Uma alternativa para exposição de serviços é rotear o acesso diretamente para a aplicação local. Essa estratégia elimina a necessidade de publicações para testes e /ou validações. Sem o uso de ferramentas esse processo tende a ser demorado, manual e pouco eficiente.
Ngrok – Ingress-as-a-Service
O Ngrok é uma ferramenta super esperta que, através da utilização de um agente local, permite redirecionar todo o tráfego de uma DNS temporário para uma porta local específica. Isso significa que toda a requisição feita para esse DNS temporário é redirecionada para a porta local do seu dispositivo.
Implementando o Webhook com Ngrok
Durante a integração como o webhook do Azure DevOps foi necessário expor uma URL válida para receber os eventos do Azure DevOps. Para agilizar o processo do laboratório inicial, utilizei um DNS temporário criado pelo Ngrok para que a aplicação rodando localmente fosse sensibilizada.
Para ser sensibilizado pelo webhook do Azure DevOps coloquei a aplicação para executar localmente na porta 5084.
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5084
Uma vez que o Ngrok está instalado com sua chave de API configurada, basta executar o agente para criar o DNS temporário e iniciar o redirecionamento.
ngrok http 5084
Em alguns segundos o redirecionamento estará concluído.
No teste abaixo, observamos que a requisição de teste feita pelo painel de Service Hook do Azure DevOps é recebida diretamente na aplicação que está rodando localmente em modo debug.
Conclusão
Em cenários de laboratórios, testes ou integrações rápidas, a estratégia com o Ngrok é uma excelente alternativa para evitar o investimento de tempo e energia em itens de infraestrutura que estejam fora do escopo. O Ngrok está disponível para Windows, Mac e Linux e a sua licença free permite a criação de um redirecionamento.
Dica
A instalação do Ngrok está disponível nos principais gerenciadores de pacotes.
- brew install ngrok/ngrok/ngrok
- choco install ngrok
- snap install ngrok