Skip to content

protoconf/protoconf-xds

Repository files navigation

Protoconf XDS Server

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.

Getting Started

Prerequisites

  • Go 1.16 or later
  • Protoconf v0.1.7 or later

Installation

  1. Clone the repository:

    git clone https://github.com/protoconf/protoconf-xds.git
  2. Build the binary:

    cd protoconf-xds
    go build

Usage

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

Configuration

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)

Running the example

The example in this repository is inspired by Envoy's ratelimit project.

Architecture diagram

To run the protoconf agent:

protoconf agent -dev .

To run the proxy, mock and ratelimit:

docker-compose up

License

Protoconf XDS is licensed under the MIT License. See LICENSE file for more information.

Contributing

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.

Acknowledgments

This project was inspired by the Envoy xDS server example and uses Protoconf gRPC Client to communicate with the Protoconf API server.