Protoconf XDS is an implementation of the Envoy's External Data Service (XDS) API that uses Protoconf as a configuration backend. It provides an easy way to manage and update Envoy's configuration dynamically.
- Go 1.16 or later
- Protoconf v0.1.7 or later
-
Clone the repository:
git clone https://github.com/protoconf/protoconf-xds.git
-
Build the binary:
cd protoconf-xds go build
Start the Protoconf XDS server by running:
./protoconf-xds
By default, the server listens on port 18000. You can change the port by specifying the -port
flag:
./protoconf-xds -port 8080
Protoconf XDS reads its configuration from the environment variables or command line:
-debug
env key: PROTOCONF_XDS_DEBUG
type: bool (default false)
-nodeId value (repeatable)
env key: PROTOCONF_XDS_NODE_ID (comma separate for multiple node ids)
type: string (default [])
-port value
env key: PROTOCONF_XDS_PORT
type: uint32 (default 18000)
-prefix value
env key: PROTOCONF_XDS_PREFIX
type: string (default example)
-protoconfAgentAddr value
env key: PROTOCONF_XDS_PROTOCONF_AGENT_ADDR
type: string (default localhost:4300)
The example in this repository is inspired by Envoy's ratelimit project.
To run the protoconf
agent:
protoconf agent -dev .
To run the proxy
, mock
and ratelimit
:
docker-compose up
Protoconf XDS is licensed under the MIT License. See LICENSE
file for more information.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
This project was inspired by the Envoy xDS server example and uses Protoconf gRPC Client to communicate with the Protoconf API server.