Kong API – Instalando o API Gateway e seu Dashboard

Kong API – Instalando o API Gateway e seu Dashboard

Estive envolvido num projeto de migração, algumas aplicações internas para o modelo de micro serviço. No caso, cada parte do código se tornaria um projeto independente, dessa forma, agilizando os deploys e facilitando o debug dos mesmos. Mesmo assim, um problema acabou ocorrendo. Como gerenciar de forma fácil, milhares de micro apis, tornando o meu ambiente o mais transparente possível, para as aplicações que iriam se beneficiar? 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, utilizaremos 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. Contudo, essa escolha se deu mais pelo prazer de testar novas ferramentas, do que por algum motivo especial. O Kong oferece suporte a ambos os bancos de dados, concedendo portanto liberdade para testar o Cassandra e verificar como funciona. Num post futuro, voltarei 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 última versão:

# apt update && apt dist-upgrade -y

Inclua o repositório do Cassandra na máquina. Você conseguirá a versão mais recente através do site oficial do produto. Em minha experiência usei a versão 3.11.2, a mais atual neste momento em que escrevo o artigo:

# 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 banco de dados inicialize após a instalação:

# apt update && apt install cassandra -y

Instale o Kong na máquina. Faça download do pacote .deb através do site oficial. Utilizei a versão 0.12.3. Por se tratar de uma aplicação recente, novas versões devem ser 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

Abra o arquivo kong.conf, procure pela sessão DATASTORE e descomente a linha database, altere informando o uso do Cassandra para armazenar os dados do Kong. Por padrão, não serão necessárias outras mudanças, pois o Kong buscará uma instância local de Cassandra para trabalhar.

# 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, use seu cliente de linha de comando, kong migrations, conforme abaixo:

# kong migrations up

Inicie o kong. Após a base ser importada para dentro do Cassandra, basta rodar o comando kong start. Por padrão o Kong iniciará nas portas 8000 e 8443 para usuário e, 8001 e 8444 para gerência das APIs.

# kong start

Instalando Kong-Dashboard

Como descrito anteriormente, 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 aspecto a realçar, 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. Entretanto, ainda é possível obter métricas e outras informações através de consultas via REST API, a parte de cadastro pode ser feita através do Kong-Dashboard.

O Kong-Dashboard é uma aplicação desenvolvida por PGBI (Pierre), não sendo suportada pela Kong Inc.. No entanto, supre a nossa necessidade como um meio de cadastrar nossas micro aplicações de forma fácil e rápida.

Instale, incluindo o repositório no NodeJS. Será necessária a versão mais recente, pois a aplicação é desenvolvida e entregue sempre nessa versão. Para todos os fins, esse post foi produzido empregando 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

Instale o kong-dashboard através do npm:

# npm install -g kong-dashboard

Inicie 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 fazer mais nada durante o processo.

Para facilitar, criei uma unit do Systemd. Poderá ser utilizada para iniciar e parar o dashboard, sem que o terminal permaneça travado. Para instalar essa unit, crie um arquivo chamado kong-dashboard.service dentro de /etc/systemd/system, em seguida, 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

Abra o browser no endereço http://<ip_da_maquina_do_dashboard>:8080 para validar. Verifique o carregamento da página conforme a imagem:

Bom… esse post fica por aqui, no próximo abordarei como cadastrar uma API e ativar sistema de autenticação através desse dashboard. Seguem os links para a documentação do processo de instalação de cada ferramenta apresentada no artigo.

  • 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
Anterior Implementando Point-in-time Recovery (PITR) em PostgreSQL 9.6
Próxima 4Linux lança curso sobre infraestrutura Blockchain usando HyperLedger

About author

Você pode gostar também

Infraestrutura

PAGILA – Base de dados educativa para PostgreSQL

Quando comecei aprender sobre banco de dados, senti falta de bases de dados prontas para fins de teste com o PostgreSQL. Eu queria aplicar conceitos aprendidos sobre SELECT, INSERT, UPDATE

Destaques

Graylog – Gerenciando todos os seus Logs

Este post tem como objetivo apresentar um guia para instalação e configuração do Graylog em Debian 8 (Jessie), suportado pelos bancos de dados noSQL  MongoDB e ElasticSearch e com alta

Infraestrutura

MongoDB: como criar um Cluster Replication Set

O MongoDB é um banco com foco em escalabilidade horizontal, sendo assim ele possui um recurso chamado ReplicatSet que serve para replicar os dados em um cluster de servidores para