Logo
Back to projects

xds

In Progress

A production-ready control plane for Envoy Proxy, implementing the xDS (Discovery Service) protocol. It dynamically configures Envoy proxies across a cluster or service mesh without restarting them or dropping connections.

GoEnvoygRPCDevOps

What it does

The control plane serves configuration to connected Envoy proxies over gRPC. Each xDS API is configured from its own file, loaded, validated, and hot-reloaded independently of the others — all five files are polled every 2 seconds.

  • CDSCluster Discovery Serviceupstream clusters — required
  • LDSListener Discovery Servicelisteners — required
  • EDSEndpoint Discovery Serviceendpoints within clusters — optional
  • RDSRoute Discovery Servicerouting rules — optional
  • SDSSecret Discovery ServiceTLS certificates and secrets — optional

Highlights

  • Each xDS API is loaded from its own YAML file, validated, and hot-reloaded independently — a failure parsing one file leaves the others’ last-good config untouched.
  • Cross-resource validation: a listener’s RDS reference and a cluster’s EDS reference must resolve to a loaded resource, or the load (or reload) fails instead of reaching Envoy as an empty config.
  • Admin HTTP server alongside the gRPC server: /healthz, /readyz, and a Prometheus /metrics endpoint.
  • Built on the official envoyproxy/go-control-plane library, serving config over gRPC via ADS.

Stack

Go, gRPC/Protobuf (Envoy API v3), and go-control-plane for the snapshot cache.

View source on GitHub