The Envoy configuration format is written in JSON and is validated against a JSON schema. The schema can be found in source/common/json/config_schemas.cc. The main configuration for the server is contained within the listeners and cluster manager sections. The other top level elements specify miscellaneous configuration.

  "listeners": [],
  "admin": "{...}",
  "cluster_manager": "{...}",
  "flags_path": "...",
  "statsd_local_udp_port": "...",
  "statsd_tcp_cluster_name": "...",
  "stats_flush_interval_ms": "...",
  "tracing": "{...}",
  "rate_limit_service": "{...}",
  "runtime": "{...}",
(required, array) An array of listeners that will be instantiated by the server. A single Envoy process can contain any number of listeners.
(required, object) Configuration for the local administration HTTP server.
(required, object) Configuration for the cluster manager which owns all upstream clusters within the server.
(optional, string) The file system path to search for startup flag files.
(optional, integer) The UDP port of a locally running statsd compliant listener. If specified, statistics will be flushed to this port.
(optional, string) The name of a cluster manager cluster that is running a TCP statsd compliant listener. If specified, Envoy will connect to this cluster to flush statistics.
(optional, integer) The time in milliseconds between flushes to configured stats sinks. For performance reasons Envoy latches counters and only flushes counters and gauges at a periodic interval. If not specified the default is 5000ms (5 seconds).
(optional, object) Configuration for an external tracing provider. If not specified, no tracing will be performed.
(optional, object) Configuration for an external rate limit service provider. If not specified, any calls to the rate limit service will immediately return success.
(optional, object) Configuration for the runtime configuration provider. If not specified, a “null” provider will be used which will result in all defaults being used.