Skip to main content

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

Submit new issues here

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

Read the docs here!

Local development

Requirements

  • uv
  • Docker
  • Docker-compose

Installing dependencies for dev

Dependencies and creation of virtualenv is handled by uv

uv sync
uv venv activate
uv run <command>

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

sovereign-1.0.0b206.tar.gz (133.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sovereign-1.0.0b206-py3-none-any.whl (163.4 kB view details)

Uploaded Python 3

File details

Details for the file sovereign-1.0.0b206.tar.gz.

File metadata

  • Download URL: sovereign-1.0.0b206.tar.gz
  • Upload date:
  • Size: 133.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sovereign-1.0.0b206.tar.gz
Algorithm Hash digest
SHA256 52b2e5980429a6dce7d4c9b562c8e9cc10468a085551b8110c6a4d9b0bd65de4
MD5 e872ba3ce5aa96ae31cda29a09d9c501
BLAKE2b-256 2b703e90ddfbc81fc12f3e290cea0c4ffe1cdcd4b2c78cee2b1b5187a9c05c6e

See more details on using hashes here.

File details

Details for the file sovereign-1.0.0b206-py3-none-any.whl.

File metadata

  • Download URL: sovereign-1.0.0b206-py3-none-any.whl
  • Upload date:
  • Size: 163.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sovereign-1.0.0b206-py3-none-any.whl
Algorithm Hash digest
SHA256 a3dbbda1521acd12d43ba8cef4d03f4832df758fbbf007520401f0b9ea31d409
MD5 e3d2bd3720fc4e8b2d28816350f1987c
BLAKE2b-256 a448c5e37c1a6824d4814a6969c3046a44200464133db3597f66e9cde82fd51e

See more details on using hashes here.

Supported by

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