DEV Community

Yan.ts
Yan.ts

Posted on

Kong API Gateway

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

Image description

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

Image description

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

Image description

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

Image description

  • 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

Image description

Primeiro temos que ir até a pagina de services e clickar no botão de adicionar um novo service

e então cadastrar ele:

Image description

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,

Image description

Quando definimos o Host somente requests que tem o host esperado vão conseguir acessar aquela rota

com o Host:
Image description

sem o Host:
Image description

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

Image description

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

Image description

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

Image description

Depois disso foi só utilizar o plugin basic auth que a minha api já está me retornando como unauthorized

Image description

Image description

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

Image description

Além disso tem todo um suporte para diversos sistemas de logs sendo facilmente possivel integrar um Datadog por exemplo

Top comments (0)