Murabei DS disponibiliza imagem de Api-Gateway Kong com auto-bootstrap do banco de dados

A Murabei DS disponibiliza uma imagem contendo Kong, um api gateway para auto-discovery de serviços, com um script que faz o bootstrap da base de dados e aguarda essa estar disponível. Isso é importante principalmente para o ambiente de testes para microserviços, o qual muitas vezes é iniciado do “zero”.

O Kong é um API-Gateway baseado em NGINX que apresenta código open-source e uma série de extensões pagas que permitem gerenciar login, segurança, cache entre outras funcionalidades. Ele utiliza uma base de dados (Postgres/Cassandra) para salvar os serviços e compartilhar entre diferentes replicas para aumentar a disponibilidade, isso também facilita caso o serviço caia tornando o service discovery state-full. É possível registrar os end-points através de chamadas JSON, veja mais no site https://konghq.com/kong/.

 

Murabei DS disponibiliza imagem de Api-Gateway Kong com auto-bootstrap do banco de dados

Antes do Kong cuidar da configuração do service discovery era pior que pentear macaco.

 

No caso de testes é comum iniciar a base de um container “limpo” e fazer com que cada um dos microserviços faça seu registro para que possam ser expostos pelo Kong. A imagem disponibilizada resolve dois problemas encontrados nesses casos:

Esperar a base de dados ficar disponível

No caso do postgres, existe um período que o container demora para que a base de dados fique disponível para que possa ser usada. Caso o Kong tente inicializar sem a base encontrar-se disponível esse entra em erro e o container é fechado. Para contornar esse problema foi desenvolvido um script bash que antes de iniciar o Kong, entra em um loop que só sairá caso a base de dados fique disponível.

Fazer o bootstrap da base de dados para o Kong

Antes de que possa rodar o Kong precisa criar as tabelas e index necessários para guardar as informações dos serviços, para isso é necessário rodar o comando de bootstrap no Kong. Este é rodado antes de inicializar o api gateway, caso já existam as bases o comando não tem efeito

GitHub e Docker Hub

Os códigos para a imagem e a própria imagem foram disponibilizados no GitHub/Docker Hub:

https://hub.docker.com/repository/docker/andrebaceti/autoboostrap-kong/general

https://github.com/andrebaceti/autoboostrap-kong