Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

Declare and manage Kong resources with yaml

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

From now on, manage Kong via the loopback (checks request header apikey):

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

Options --admin-url or --admin-key can be used instead, or to take precedence:

export KONG_ADMIN_URL=http://localhost:8000/kadmin
kong-incubator --admin-key={{thekeyabove}} --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 kongpose/ 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_test

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.

Filename, size & hash SHA256 hash help File type Python version Upload date
kong_incubator-0.4.9-py2.py3-none-any.whl (12.9 kB) Copy SHA256 hash SHA256 Wheel py2.py3
kong-incubator-0.4.9.tar.gz (9.9 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page