Kong API: Instalação da Ferramenta

Ultimamente estive envolvido num projeto de migração de algumas aplicações internas para o modelo de micro serviço, aonde cada parte do código se tornaria um projeto independente, dessa forma agilizando os deploys e facilitando o debug das mesmas. Mesmo assim um problema acabou ocorrendo dentro dele: como gerenciar de forma fácil milhares de micro apis de forma a deixar o mais transparente possível todo o meu ambiente para as aplicações que iriam se usufruir dele? Então eis que surge o Kong API, um gateway de api que se provou uma escolha interessante para uso nesse projeto, e em outros vindouros.

Esse post tem o intuito de explicar o processo de instalação do Kong e seu funcionamento, criando uma entrada de teste.

Instalação do Kong API

Para essa instalação, estaremos utilizando uma única instância para toda a suíte (API Gateway, Database, e Dashboard), porém é possível separar todas as partes em máquinas diferentes e montar um cluster de Kong. Dependendo da quantidade de acessos, talvez essa seja uma escolha mais sensata para seu ambiente. Outra escolha que tomei liberdade de fazer foi substituir o banco de dados PostgreSQL pelo Cassandra, porém esse ponto foi mais pelo prazer de testar novas ferramentas do que por algum motivo especial. O Kong vem com suporte a ambos os bancos de dados, então acabei tomando a liberdade para testar o Cassandra e ver como funciona. Num post futuro volto a falar desse banco de dados não relacional e como foi seu comportamento armazenando os dados do Kong.

Primeiramente, atualize sua distribuição para que todos os pacotes estejam na ultima versão:

# apt update && apt dist-upgrade -y

Inclua o repositório do Cassandra na máquina. Você consegue pegar a versão mais recente através do site oficial do produto, porém para esse post usamos a versão 3.11.2 que, no momento em que estava escrevendo esse post, era a versão mais recente:

# echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
# curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -

Atualize a lista de pacotes e instale o Cassandra em seu servidor. Vale ressaltar que será necessário pelo menos 1GB de memória para que o mesmo inicialize após a instalação:

# apt update && apt install cassandra -y

Instale o Kong na máquina baixando seu pacote .deb através do site oficial. Para esse post usamos a versão 0.12.3, porém por se tratar de uma aplicação recente, novas versões estão sendo lançadas rapidamente.

# wget -O kong.deb https://bintray.com/kong/kong-community-edition-deb/download_file?file_path=dists/kong-community-edition-0.12.3.xenial.all.deb
# dpkg -i kong.deb

Com o Kong instalado, crie uma cópia do arquivo kong.conf.default e renomeie para kong.conf.

# cp /etc/kong/kong.conf.default /etc/kong/kong.conf

Agora abra o arquivo kong.conf, procure pela sessão DATASTORE e descomente a linha database e altere para informar que irá usar o cassandra para armazenar os dados do Kong. Por padrão não é necessário alterar mais nada, pois o Kong já procura uma instância local de Cassandra para trabalhar com ela.

# vim /etc/kong/kong.conf
...
database = cassandra
...

Agora basta carregar a base do Kong e sua instalação estará concluída. Para carregar a base do kong, basta usar seu cliente de linha de comando kong migrations conforme abaixo:

# kong migrations up

Para iniciar o kong, basta rodar o comando kong start após a base ter sido importada para dentro do cassandra. Por padrão o Kong irá iniciar nas portas 8000 e 8443 para usuário e 8001 e 8444 para gerência das APIs.

# kong start

Instalando Kong-Dashboard

Como dito acima, toda a gerência do Kong é feita através da porta 8001 (HTTP) e 8444 (HTTPS), enquanto a 8000 (HTTP) e a 8443 (HTTPS) fica exposta para o usuário comum. Outro ponto é que toda a gerência é feita através de requisições para API REST, ou seja, não existe interface web na versão gratuita da ferramenta. Porém ainda é possível tirar métricas e outras informações através de consultas via REST API, enquanto a parte de cadastro pode ser feita através do Kong-Dashboard. O Kong-Dashboard é uma aplicação desenvolvida por PGBI (Pierre), sendo que a aplicação não é suportada pela Kong Inc., porém supre nossa necessidade de uma forma de cadastrar nossas micro aplicações de forma fácil e rápida. Para instalar, primeiramente inclua o repositório da versão mais recente no NodeJS. Será necessário a versão mais recente pois a aplicação é desenvolvida e entregue sempre nessa versão. Para todos os fins, esse post foi feito usando a versão 8 da ferramenta.

# curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Atualize sua lista de pacotes e instale o NodeJS na máquina:

# apt update && apt install nodejs -y

Por ultimo instale o kong-dashboard através do npm

# npm install -g kong-dashboard

Para iniciar o Kong-Dashboard, basta rodar o comando passando como parâmetro o seu servidor kong. Infelizmente, após rodar esse comando o processo ficará travado no seu terminal, não permitindo que faça mais nada durante o processo. Para facilitar, criei uma unit do Systemd na qual poderá utilizar para iniciar e parar o dashboard sem ficar com  o terminal travado. Para instalar essa unit, crie um arquivo chamado kong-dashboard.service dentro de /etc/systemd/system e depois recarregue a lista de units do Systemd.

# vim /etc/systemd/system/kong-dashboard.service
[Unit]
Description=Kong-Dashboard - Open-Source Scalable API Layer
Wants=kong.service cassandra.service
After=kong.service cassandra.service

[Service]
Type=simple
ExecStart=/usr/bin/kong-dashboard start --kong-url http://kong-gateway.4linux.com.br:8001

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl start kong-dashboard

Para validar, abra o browser no endereço http://<ip_da_maquina_do_dashboard>:8080 e veja se carrega a página conforme abaixo:

Bom, esse post fica por aqui, sendo que no próximo iremos abordar como cadastrar uma API e ativar sistema de autenticação através desse dashboard. Abaixo estão os links para a documentação do processo de instalação de cada ferramenta que foi usada nesse post.

  • https://getkong.org/install/ubuntu/?_ga=2.6937969.233753989.1522207247-414182853.1522207247
  • http://cassandra.apache.org/doc/latest/getting_started/installing.html
  • https://github.com/PGBI/kong-dashboard

1 comentário

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *