go-control-plane
by
envoyproxy

Description: Go implementation of data-plane-api

View on GitHub ↗

Summary Information

Updated 18 minutes ago
Added to GitGenius on July 14th, 2023
Created on October 20th, 2017
Open Issues & Pull Requests: 25 (+0)
Number of forks: 564
Total Stargazers: 1,715 (+0)
Total Subscribers: 41 (+0)

Issue Activity (beta)

Open issues: 6
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 1,135 days
Stale 30+ days: 4
Stale 90+ days: 4

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • stale (74)
  • no stalebot (15)
  • bug (7)
  • enhancement (3)
  • help wanted (3)
  • area/delta_xds (2)
  • area/sotw (2)
  • question (2)

Most active issues this week

No issue events were indexed in the last 7 days.

Repository Insights (GitGenius)

Median issue/PR response: 16.4 hours
Mean response time: 132.3 days
90th percentile: 858.6 days
Tracked items: 48

Most active contributors

Detailed Description

The go-control-plane repository is a Go implementation of the Envoy data-plane-api that provides infrastructure for building control plane systems that manage Envoy proxy fleets. Rather than attempting to be a complete, one-size-fits-all control plane solution, the library offers reusable components that different control plane implementations can build upon to suit their specific platform requirements.

The repository's core components include a generic gRPC-based API server that implements the xDS (Extensible Discovery Service) APIs as defined in the data-plane-api specification. This API server is responsible for pushing configuration updates to Envoy proxies and is designed to be production-ready for direct use by consumers who import the library. The library also provides a configuration cache system that stores Envoy configurations in memory to enable fast responses to proxy requests. The cache uses a pre-defined hash function keyed on Node information to organize configurations, though consumers of the library bear responsibility for populating and invalidating the cache as needed.

The repository maintains synchronization with the upstream Envoy repository through an automated workflow that syncs proto files from Envoy on every upstream commit, ensuring the Go implementation stays current with the latest API definitions. The codebase requires Go 1.25 or higher and recommends running tests via the docker_tests make target to ensure consistency with the CI environment.

Three distinct cache implementations are available to support different use cases. The Simple cache provides a snapshot-based approach that maintains a consistent configuration view for proxy groups and supports both ADS (Aggregated Discovery Service) and disaggregated xDS server modes. In ADS mode, it can hold responses until all referenced resources are requested, enabling atomic updates across xDS collections. The Linear cache implements eventual consistency for single type URL collections, maintaining a linear version history and version vector to respond with only updated resources. The Mux cache serves as a combinator that allows mixing different cache types for different URLs, such as using a Simple cache for LDS/RDS/CDS while employing a Linear cache for EDS.

The repository explicitly does not attempt to translate platform-specific resource representations, such as services or service instances, into Envoy-style configurations, leaving that responsibility to consumers of the library. V2 control-plane code has been removed and is no longer supported, with the codebase now focused exclusively on current xDS API versions following Envoy's defined versioning scheme.

Activity tracking shows the repository maintains active engagement with a median issue and PR response latency of 16.4 hours across tracked items. The most active contributor tracked is valerian-roche with 62 events, followed by mmorel-35 with 12 events and easwars with 10 events. The stale label appears most frequently among issue classifications, indicating ongoing maintenance of the issue backlog. The repository shares overlapping contributors with envoyproxy/gateway, envoyproxy/envoy, and projectcontour/contour, reflecting its role as foundational infrastructure within the broader Envoy ecosystem.

go-control-plane
by
envoyproxyenvoyproxy/go-control-plane

Repository Details

Fetching additional details & charts...