Skip to content

Instantly share code, notes, and snippets.

@silvioascruz
Last active January 26, 2021 20:27
Show Gist options
  • Save silvioascruz/9e15a06e3af24826d93d054d2f374b78 to your computer and use it in GitHub Desktop.
Save silvioascruz/9e15a06e3af24826d93d054d2f374b78 to your computer and use it in GitHub Desktop.
Kong com podman no Windows

Kong + Konga com podman no Windows

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

Criando container do Kong com base Postgres

Para o Kong usaremos:

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

Criando container do Konga com base Postgres

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

Verificando os logs

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:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment