Objetivo:
Criar o ambiente necessário para a utilização da ferramenta Kong Gateway Community com a interface de administração Konga
Pré-requisitos:
- Windows com WSL versão 2 (com a versão 1 não funcionará).
- Uma instância de Linux no WSL (eu usei Ubuntu-20.04 da Microsoft Store).
- Podman instalado na instância do Linux no WSL.*
** Os comandos para instalação do podman podem ser encontrados aqui
Para o Kong usaremos:
- O container oficial do Kong no Docker Hub.
- O container oficial do Postgres no Docker Hub, na versão 9.6.
Para o Konga usaremos:
Crie primeiro uma rede para que os containers possam se comunicar, neste tutorial chamaremos a rede de "kong-net":
podman network create kong-net
Crie o container com o banco Postgres.
Na criação já serão definidos todos os parâmetros abaixo com o valor "kong":
- Nome da base = POSTGRES_DB
- Usuário = POSTGRES_USER
- Senha = POSTGRES_PASSWORD
podman run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kong" \
postgres:9.6
Execute o migrations para preparar o banco de dados Postgres para o Kong, bem como para atualizar as variáveis de ambiente que apontam para o referido banco
podman run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:latest kong migrations bootstrap
Após o migrations ter terminado, inicie o Kong com o comando abaixo:
podman run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kong" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 127.0.0.1:8001:8001 \
-p 127.0.0.1:8444:8444 \
kong:latest
Configure o banco de dados a ser utilizado pelo Konga.
podman run --rm --network=kong-net pantsel/konga -c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga_db
**Esta instalação se utilizará do servidor Postgres já criado anteriormente para o Kong.
Inicie o container do Konga
podman run -p 1337:1337 \
--network=kong-net \
-v /var/data/kongadata:/app/kongadata \
-e "DB_ADAPTER=postgres" \
-e "DB_HOST=kong-database" \
-e "DB_USER=kong" \
-e "DB_PASSWORD=kong" \
-e "DB_DATABASE=konga_db" \
-e "KONGA_HOOK_TIMEOUT=120000" \
-e "NODE_ENV=production" \
--name konga \
pantsel/konga
** Nesta configuração do container do Konga foi definido um volume externo para a pasta /app/kongadata, desta forma, no servidor em que estiver sendo executado o container deve existir o diretório /var/data/kongadata/uploads/ com permissão de leitura e escrita
Podemos verificar os logs de cada container:
podman logs kong
podman logs kong-database
podman logs konga
Para verificar se o Kong está rodando execute:
curl -i http://localhost:8001/
Ou então execute no seu navegador local:
http://localhost:8001/
Para acessar a interface do Konga, execute no navegador local:
http://localhost:1337/
Referências: