Conforme seu projeto for crescendo, mais microsserviços surgirão e consequentemente mais rotas, services, plugins e etc serão necessários no kong. Ao mesmo tempo cresce a necessidade da gestão simples e unificada dessas configurações.
O decK fornece uma opção para configurações declarativas (YAML e JSON). Através de um yaml é possível declarar todas as rotas, services, plugins e até mesmo os certificados SSL.
Versionando esse yaml, conseguiremos saber exatamente quem fez a configuração. “Jogando” o yaml num pipeline de CI/CD, conseguiremos fechar esse fluxo de deploy automático das configurações do kong.
Veja na imagem abaixo um exemplo de YAML com declaração do service com o nome mockbin
Instalação
Você pode instalar o deck no mac, linux ou windows, mas aqui vamos rodá-lo num container docker
docker run kong/deck help
Em nossos testes o kong está rodando num container e o kong admin respondendo em http://kong:8001/
A rede do kong em teste chama-se “network-microservicos”
Deck Ping
Testando conexão com o kong admin. Repare que passei o parametro –network e o parametro –kong-addr. Assim consigo fazer com que o deck converse com o kong admin que esta em outra rede. Caso não utilize –kong-addr, ele chamará o endereço http://localhost:8001
docker run --rm \
--network=network-microservicos \
kong/deck \
--kong-addr=http://kong:8001 \
ping
Exportando sua configuração atual com o comando DUMP
Caso você ja tenha várias configurações no kong e queira jogar as mesmas para dentro de um arquivo yaml, utilize o comando a seguir para exporta-las e salvar no caminho deck/kong.yaml
docker run --rm --network=network-microservicos kong/deck --kong-addr=http://kong:8001 dump --output-file - > deck/kong.yaml
Deck Diff
Antes de aplicar as configurações, você pode verificar a diferença entre as configurações do seu .yaml e as configurações que já estão aplicadas no kong. Uma espécie de dry-mode.
docker run --rm \
--network=network-microservicos \
-v /home/onovaes/Documents/Sites/dothnews/microservicos/kong_konga/deck/:/deck/ \
kong/deck \
--kong-addr=http://kong:8001 \
diff -s deck/kong.yaml
Deck Sync
Esse é o principal comando e faz a sincronização do seu arquivo yaml local com o kong admin
docker run --rm \
--network=network-microservicos \
-v /home/onovaes/Documents/Sites/dothnews/microservicos/kong_konga/deck/:/deck/ \
kong/deck \
--kong-addr=http://kong:8001 \
sync -s deck/kong.yaml
Múltiplos YAML
Você pode também declarar vários arquivos .yaml dentro de um diretório e aplicar as configurações com o seguinte comando.
No exemplo a seguir todos os yaml estão dentro da pasta deck.
docker run --rm \
--network=network-microservicos \
-v /home/onovaes/Documents/Sites/dothnews/microservicos/kong_konga/deck/:/deck/ \
kong/deck \
--kong-addr=http://kong:8001 \
sync -s deck/
Comandos Disponíveis
Aqui é um CTRL C + CTRL V do manual! =D
convert Convert files in one format to another format
diff Diff the current entities in Kong with the one on disks
dump Export Kong configuration to a file
help Help about any command
konnect Configuration tool for Konnect (in alpha)
ping Verify connectivity with Kong
reset Reset deletes all entities in Kong
sync Sync performs operations to get Kong’s configuration to match the state file
validate Validate the state file
version Print the version of decK
Flags:
–analytics share anonymized data to help improve decK (default true)
—ca-cert string Custom CA certificate to use to verify Kong’s Admin TLS certificate.
This value can also be set using DECK_CA_CERT environment variable.
—config string config file (default is $HOME/.deck.yaml)
–headers strings HTTP Headers(key:value) to inject in all requests to Kong’s Admin API.
This flag can be specified multiple times to inject multiple headers.
-h, –help help for deck
–kong-addr string HTTP Address of Kong’s Admin API.
This value can also be set using DECK_KONG_ADDR
environment variable. (default “http://localhost:8001”)
–konnect-addr string address of the Konnect endpoint (default “https://konnect.konghq.com”)
–konnect-email string Email address associated with your Konnect account
–konnect-password string Password associated with your Konnect account, this takes precedence over –konnect-password-file flag
–konnect-password-file string File containing password to your Konnect account
–no-color disable colorized output
–skip-workspace-crud Skip API calls related to Workspaces (Kong Enterprise only)
–tls-server-name string Name to use to verify the hostname in Kong’s Admin TLS certificate.
This value can also be set using DECK_TLS_SERVER_NAME environment variable.
–tls-skip-verify Disable verification of Kong’s Admin TLS certificate.
This value can also be set using DECK_TLS_SKIP_VERIFY environment variable.
–verbose int Enable verbose verbose logging levels
Setting this value to 2 outputs all HTTP requests/responses
between decK and Kong.