Skip to main content

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 configuration in near-realtime by responding to discovery requests.

Mechanism of Operation

tl;dr version:

* Polls HTTP/File/Other for data
* (optional) Applies transforms to the data
* Uses the data to generate Envoy configuration from templates

In a nutshell, Sovereign gathers contextual data ("sources" and "template context"), optionally applies transforms to that data (using "modifiers") and finally uses the data to generate envoy configuration from either python code, or jinja2 templates.

This is performed in a semi-stateless way, where the only state is data cached in memory.

Template context is intended to be statically configured, whereas Sources are meant to be dynamic - for example, fetching from an API, an S3 bucket, or a file that receives updates.

Modifiers can mutate the data retrieved from sources, just in case the data is in a less than favorable structure.

Both modifiers and sources are pluggable, i.e. it's easy to write your own and plug them into Sovereign for your use-case.

Currently, Sovereign supports only providing configuration to Envoy as JSON. That is to say, gRPC is not supported yet. Contributions in this area are highly appreciated!

The JSON configuration can be viewed in real-time with Sovereign's read-only web interface.

Requirements

  • Python 3.8+

Installation

pip install sovereign

Documentation

Read the docs here!

:new: Read-only user interface

Added in v0.5.3!

This interface allows you to browse the resources currently returned by Sovereign.

Sovereign User Interface Screenshot

Local development

Requirements

  • Docker
  • Docker-compose

Installing dependencies for dev

I recommend creating a virtualenv before doing any dev work

python3 -m venv venv
source venv/bin/activate
pip install -r requirements-dev.txt

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.

Metadata

Release files for sovereign 0.9.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sovereign 0.9.5
File Size Uploaded
sovereign-0.9.5.tar.gz 34.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sovereign 0.9.5
File Interpreter ABI Platform
sovereign-0.9.5-py3-none-any.whl Python 3 none any Details

Total release size: 77.5 kB

Release files / sovereign-0.9.5.tar.gz

Download URL sovereign-0.9.5.tar.gz
Size 34.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9c743520947265a45bcea136bf9441cd9888b4755f5d8ecf530159c448a15025
BLAKE2b-256 checksum
How to use checksums
7e3cf4819fea432813e19cac80036da75a2a36f4faa6dd3fc761e2d1222d5258
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.5 CPython/3.8.7 Linux/5.6.0

Release files / sovereign-0.9.5-py3-none-any.whl

Download URL sovereign-0.9.5-py3-none-any.whl
Size 42.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c009d8291ec8c54b4eaf78e95e9ec08e42f932db9b8f0667975a752ec6e53745
BLAKE2b-256 checksum
How to use checksums
539b31f865dca4d86ad9749e9beeabe86bef37704da0395ce8e225e10afc34b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.5 CPython/3.8.7 Linux/5.6.0

Release history Release notifications | RSS feed

0.32.9

2 release files

0.32.8

2 release files

0.32.6

2 release files

0.32.5

2 release files

0.32.3

2 release files

0.32.2

2 release files

0.32.0

2 release files

0.31.0

2 release files

0.29.4

2 release files

0.29.3

2 release files

0.29.1

2 release files

0.29.0

2 release files

0.27.1

1 release file

0.27.0

2 release files

0.26.0

2 release files

0.25.4

2 release files

0.25.2

2 release files

0.25.1

2 release files

0.25.0

2 release files

0.24.5

2 release files

0.24.4

2 release files

0.24.3

2 release files

0.24.2

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.2

2 release files

0.20.0

2 release files

0.19.3

2 release files

0.19.2

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.17.0

2 release files

0.16.1

2 release files

0.16.0

2 release files

0.14.2

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.2

2 release files

0.11.0

2 release files

0.10.5

2 release files

0.10.0

2 release files

0.9.7

2 release files

0.9.6

2 release files

This release

0.9.5 This release

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.6.17

2 release files

0.6.16

2 release files

0.6.14

2 release files

0.6.13

2 release files

0.6.11

2 release files

0.6.10

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.13

2 release files

0.5.12

2 release files

0.5.11

2 release files

0.5.10

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.28

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page