Alguns pontos sobre o kong
- Api Gateway Open Source e gratuito
- Caracteristicas Micro Gateway ou seja, ele não prove configurações para controles de ciclo de vida
- Deployment flexível
- Pronto para kubernets
- Extensível via plugins
Modelos de deployment
O kong tem 3 modelos de deployment
DB-Less
Fazemos a configuração dele por um arquivo Yaml ou JSON e subimos ele com base no arquivo, quando ele subir essa configuração ver carregada na memoria de cada nó do Kong.
Com danco de dados
As configurações ficam todas em um banco de dados compartilhado por todos os nós. Um dos nós vai agir como control-plane e passar as configurações para o postgres que passa para os outros nós
Hibrido
O modelo de deployment hibrido é o modelo recomendado pela equipe do Kong, a ideia é ter um control-plane que somente ele vai acessar o banco de dados, diferente do deploy com banco onde todas as instancias tem acesso ao banco. Nesse modelo hibrido os outros nós vão sempre receber as configurações do control-plane
Konga
- Interface administrativa para o Kong
- Visualização de métricas das instâncias
- Controle de usuarios
- Gerencia mais de um Kong
Servicos
Um serviço é uma entidade que representa uma API ou microsserviço upstream. Por exemplo um microsserviço de pagamentos ou de cadastro etc..
Criando um novo serviço
Primeiro temos que ir até a pagina de services e clickar no botão de adicionar um novo service
e então cadastrar ele:
Rotas
As rotas são os caminhos de url que permite que um serviço cadastrado no nosso API Gateway seja acessado através do gateway
Para cadastrar uma rota temos que ir dentro do serviço cadastrado e ir na opção "Routes" quando criamos uma rota podemos definir algumas configurações uma delas sendo o Host,
Quando definimos o Host somente requests que tem o host esperado vão conseguir acessar aquela rota
Plugins
Plugins são um pedaço de código que pode ser executado dentro de um ciclo de vida de uma requisição HTTP, tanto no request como no response, em outras Gateways isso pode ser encontrado como policy mas no Kong se chama plugin
Os plugins podem ser configurados nas Rotas, Serviços, Consumers e Globalmente, tem uma precedência para as configurações
essa é a ordem de precedência, quanto menor, mais prioridade
Podemos escrever nossos proprios plugins em Lua, Javascript e Golang. Porêm o suporte é muito maior para Lua.
Consumers
É quem pode consumir sua API, para testar essa parte, criei dois consumidores, um que é um usuário e uma app
no usuário fui até a parte de credentials e criei uma senha para esse usuário, enquanto na app fui nessa parte também porem criei uma API key
Depois disso foi só utilizar o plugin basic auth que a minha api já está me retornando como unauthorized
Apesar de não ser uma solução de fato muito segura, é muito interessante a facilidade para aplicar isso
Observabilidade
O kong tem plugins de suporte ao prometheus além de um dashboard oficial no grafana basta subirmos o prometheus e o grafana no docker-compose e instalar o plugin do prometheus no kong que temos um dashboard totalmente funcional
Além disso tem todo um suporte para diversos sistemas de logs sendo facilmente possivel integrar um Datadog por exemplo
Top comments (0)