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.

Changelog

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

TODO:

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

Installation

From PyPI:

pip install --upgrade kong-incubator

Python >= 3.6 required.

Usage

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 cli.services.get_list()
    print(json.dumps(services, indent=4))

Development

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.

Publish

Twine included for uploading over HTTPS.

To Test PyPI:

make publish_testpypi

To PyPI

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.

Files for kong-incubator, version 0.4.8
Filename, size File type Python version Upload date Hashes
Filename, size kong_incubator-0.4.8-py2.py3-none-any.whl (12.9 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size kong-incubator-0.4.8.tar.gz (10.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page