Skip to main content

Declare the Kong you want in yaml (fork of aio-kong)

Project description

kongman (fork of aio-kong)

Declare the Kong you want, with yaml. Stop manual curls and maintaining docs of them. Manages resources via Kong Admin API (REST, async HTTP, JSON). Includes an example to add authorization to the Admin API itself.


Some changes backwards incompatible with aio-kong by Luca Sbardella.

  • Patch tests (SNI, consumer) to pass on Kong 0.14.x and 1.0.0rc2
  • Add docker-compose stack for tests
  • Add make rules for flake8, mypy, test, build, publish_pypi, ...
  • Add creating ./venvs for dev and release, handled by make rules
  • Add (opinionated) pytest plugins, to help myself
  • Add --output to limit output to a JSON property (for scripts), or have None
  • Add ./examples for Kong Admin API loopback and example endpoint via it
  • Add KONG_ADMIN_URL, defaults to http://localhost:8001
  • Add KONG_ADMIN_KEY to use Kong Admin API via loopback and key-auth
  • Add --admin-url and --admin-key to take precedence over above two
  • Remove KONG_URL BWIC
  • Remove --ip BWIC


  • Add compatibility for <0.14 Kongs, PR the >=0.14 parts back to aio-kong.


From PyPI:

pip install --upgrade kong-incubator

Python >= 3.6 required.


KONG_ADMIN_URL defaults http://localhost:8001.

Create or upgrade resources (is a Mockbin proxy):

kong-incubator --yaml ./examples/mockbin.yaml

Generate a random key for its consumer:

kong-incubator --key-auth mocker

Output only if key has been already set.

Running with a changed --yaml only upgrades the changed parts. Resources been removed from the file are not deleted from Kong. To delete a resource from Kong, add ensure: absent for it in YAML.

See kong-incubator --help for all options.

Securing Kong Admin API

Creates Kong Admin API Loopback requiring key-auth:

kong-incubator --yaml ./examples/kadmin.yaml
kong-incubator --key-auth root --output key

The KONG_ADMIN_KEY is sent in request headers:

export KONG_ADMIN_KEY={{thekeyabove}}
export KONG_ADMIN_URL=http://localhost:8000/kadmin
kong-incubator --yaml ..

In Kubernetes/OpenShift, remove routes to 8001 and 8444.

Use as lib

import json
from kong.client import Kong

async with Kong() as cli:
    services = await
    print(json.dumps(services, indent=4))


Tests assume you have Kong Admin API running at http://localhost:8001.

If you have docker-compose available, you can run make dc to get test env as a git submodule and start it on background for tests. Use make dc_rm to stop and remove the stack, including the volumes for DBs.

Run make as a shortcut for three other rules:

  • make test creates ./venvs/dev that has also dev requirements installed. To re-run only the failed tests, if any, use make retest which also skips installation of requirements. Both clean up the Kong resources they create.

  • make build creates ./venvs/release on each run, installs build tools and builds source and wheel dists.

  • make install to install package from source tree.

Run make clean to remove ./venvs, builds, dists and caches.

See make help for all options.


Twine included for uploading over HTTPS.

To Test PyPI:

make publish_testpypi


make publish_pypi

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kong-incubator-0.4.8.tar.gz (10.0 kB view hashes)

Uploaded source

Built Distribution

kong_incubator-0.4.8-py2.py3-none-any.whl (12.9 kB view hashes)

Uploaded py2 py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page