control-plane
This repository contains a Go-based implementation of an API server that implements the discovery service APIs defined in data-plane-api.
Proto files
The Go proto files are synced from the upstream Envoy repository (https://github.com/envoyproxy/envoy) on every upstream commit.
Synchronization is triggered using the envoy-sync.yaml workflow.
Scope
Due to the variety of platforms out there, there is no single control plane implementation that can satisfy everyone's needs. Hence this code base does not attempt to be a full scale control plane for a fleet of Envoy proxies. Instead, it provides infrastructure that is shared by multiple different control plane implementations. The components provided by this library are:
- _API Server:_ A generic gRPC based API server that implements xDS APIs as defined
- _Configuration Cache:_ The library will cache Envoy configurations in
At this moment, this repository will not tackle translating platform specific representation of resources (e.g., services, instances of services, etc.) into Envoy-style configuration. Based on usage and feedback, we might decide to revisit this aspect at a later point in time.
Requirements
- Go 1.26+
Quick start
It's recommended to run the tests with make docker_tests as it executes the tests
in the same environment as CI. This makes sure to produce a consistent set of generated files.
- Build and run tests:
make docker_tests
- Take a look at the example server.
XDS API versioning
The Envoy xDS APIs follow a well defined versioning scheme.
Deprecated
V2 control-plane code has been removed and will no longer be supported. For previous conversations on support for various xDS versions, see here:
V2.
Resource caching
Because Envoy clients are assumed to be ephemeral, and thus, can come and go away arbitrarily, the server relies on a configuration cache to minimize the client load on the server. There are several caches available in this repository:
Simplecache is a snapshot-based cache that maintains a consistent view of
Linearis an eventually consistent cache for a single type URL collection.
Muxcache is a simple cache combinator. It allows mixing multiple caches
Usage
The example server demonstrates how to integrate the go-control-plane with your code.