Envoy Proxy control-plane written in Python
Project description
sovereign
Mission statement
This project implements a JSON control-plane based on the envoy data-plane-api
The purpose of sovereign
is to supply downstream envoy proxies with dynamic configuration.
Mechanism of Operation
Sovereign allows you to define templates that represent each resource type provided by Envoy. For example, clusters, routes, listeners, secrets, extension_configs, etc.
In order to enrich the templates with data, Sovereign has ways of polling data out-of-band which it then includes as variables that can be accessed within the templates.
This allows Sovereign to provide configuration to Envoy that changes over time depending on the data sources, without needing to redeploy the control-plane.
Sovereign provides some built-in ways of polling data (such as over HTTP, or on-disk) but also exposes extension points, allowing you to write your own plugins in Python.
Support
If you're unable to submit an issue on Bitbucket, send an email to vsyrakis@atlassian.com
Release
See [RELEASE.md]
Roadmap
- Performance improvements
- Data persistence
- Push API (versus polling)
- Client for Sovereign
- gRPC
Requirements
- Python 3.8+
Installation
pip install sovereign
Documentation
Local development
Requirements
- Poetry
- Docker
- Docker-compose
Installing dependencies for dev
Dependencies and creation of virtualenv is handled by poetry
poetry install
poetry shell
Running locally
Running the test env
make run
Running the test env daemonized
make run-daemon
Pylint
make lint
Unit tests
make unit
Acceptance tests
make run-daemon acceptance
Contributors
Pull requests, issues and comments welcome. For pull requests:
- Add tests for new features and bug fixes
- Follow the existing style
- Separate unrelated changes into multiple pull requests
See the existing issues for things to start contributing.
For bigger changes, make sure you start a discussion first by creating an issue and explaining the intended change.
Atlassian requires contributors to sign a Contributor License Agreement, known as a CLA. This serves as a record stating that the contributor is entitled to contribute the code/documentation/translation to the project and is willing to have it used in distributions and derivative works (or is willing to transfer ownership).
Prior to accepting your contributions we ask that you please follow the appropriate link below to digitally sign the CLA. The Corporate CLA is for those who are contributing as a member of an organization and the individual CLA is for those contributing as an individual.
License
Copyright (c) 2018 Atlassian and others. Apache 2.0 licensed, see LICENSE.txt file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sovereign-0.32.3.tar.gz
.
File metadata
- Download URL: sovereign-0.32.3.tar.gz
- Upload date:
- Size: 99.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.11.13 Linux/6.1.79
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
9206d2b8f25a804481f1b6285acaa7b2acc1027d664e43cdbb641ce3d86e8029
|
|
MD5 |
ec80742720f303e29b5030dbe5d5a652
|
|
BLAKE2b-256 |
200e1d4959a6de454215558de80a0fe6bb2c3c720bec5ec4e1b9ce10cf86e47d
|
File details
Details for the file sovereign-0.32.3-py3-none-any.whl
.
File metadata
- Download URL: sovereign-0.32.3-py3-none-any.whl
- Upload date:
- Size: 115.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.11.13 Linux/6.1.79
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
7137d8c7a167ababda49fb6295fed40c1e8d62abeba23513df2ee78093d15fdf
|
|
MD5 |
f7e31f5b614ff5daa5c14d05c275cd17
|
|
BLAKE2b-256 |
408a129b832d8b73e4538291f8862756f8b5b15aa1822e9d23eecfc5b1cbe07f
|