// This proto is expected to be provided on disk or via the command-line to // Envoy. It provides sufficient information for Envoy to fetch the rest of // its configuration from either disk or management server(s). syntax = "proto3"; package envoy.api.v2; import "api/address.proto"; import "api/base.proto"; import "api/discovery.proto"; import "api/cds.proto"; import "api/lds.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/struct.proto"; message LightstepConfig { // The cluster manager cluster that hosts the LightStep collectors. string collector_cluster = 1; // File containing the access token to the LightStep API. string access_token_file = 2; } message ZipkinConfig { // The cluster manager cluster that hosts the Zipkin collectors. Note that the // Zipkin cluster must be defined under clusters in the cluster manager // configuration section. string collector_cluster = 1; // The API endpoint of the Zipkin service where the spans will be sent. When // using a standard Zipkin installation, the API endpoint is typically // /api/v1/spans, which is the default value. string collector_endpoint = 2; } message Tracing { // Provides configuration for the HTTP tracer. message Http { // The name of the HTTP trace driver to instantiate. The name must match a // supported HTTP trace driver. "envoy.lightstep" and "envoy.zipkin" are built-in // trace drivers. string name = 1; // Trace driver specific configuration which depends on the driver being // instantiated. See the trace drivers for further documentation. google.protobuf.Struct config = 2; } Http http = 1; } message Admin { // The path to write the access log for the administration server. If no // access log is desired specify ‘/dev/null’. string access_log_path = 1; // The cpu profiler output path for the administration server. If no profile // path is specified, the default is ‘/var/log/envoy/envoy.prof’. string profile_path = 2; // The TCP address that the administration server will listen on. Address address = 3; } message ClusterManager { // Name of the local cluster (i.e., the cluster that owns the Envoy running // this configuration). In order to enable zone aware routing this option must // be set. If local_cluster_name is defined then clusters must contain a // definition of a cluster with the same name. string local_cluster_name = 1; // Optional global configuration for outlier detection. message OutlierDetection { string event_log_path = 1; } OutlierDetection outlier_detection = 2; // Optional configuration used to bind newly established upstream connections. // This may be overridden on a per-cluster basis by upstream_bind_config in the cds_config. BindConfig upstream_bind_config = 3; // A management server endpoint to stream load stats to, as per // StreamLoadStats in eds.proto. This must have api_type GRPC. ApiConfigSource load_stats_config = 4; } // Stats proto for built-in "envoy.statsd" sink. message StatsdSink { oneof statsd_specifier { // The UDP address of a running statsd compliant listener. If specified, // statistics will be flushed to this address. Address address = 1; // 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. string tcp_cluster_name = 2; } } message StatsSink { // The name of the stats sink to instantiate. The name must match a supported // stats sink. "envoy.statsd" is a built-in sink suitable for emitting to // statsd. string name = 1; // Stats sink specific configuration which depends on the sink being // instantiated. See the supported sinks for further documentation. google.protobuf.Struct config = 2; } message Watchdog { // The duration after which Envoy counts a nonresponsive thread in the // “server.watchdog_miss” statistic. If not specified the default is 200ms. google.protobuf.Duration miss_timeout = 1; // The duration after which Envoy counts a nonresponsive thread in the // “server.watchdog_mega_miss” statistic. If not specified the default is // 1000ms. google.protobuf.Duration megamiss_timeout = 2; // If a watched thread has been nonresponsive for this duration, assume a // programming error and kill the entire Envoy process. Set to 0 to disable // kill behavior. If not specified the default is 0 (disabled). google.protobuf.Duration kill_timeout = 3; // If at least two watched threads have been nonresponsive for at least this // duration assume a true deadlock and kill the entire Envoy process. Set to 0 // to disable this behavior. If not specified the default is 0 (disabled). google.protobuf.Duration multikill_timeout = 4; } message Runtime { // The implementation assumes that the file system tree is accessed via a // symbolic link. An atomic link swap is used when a new tree should be // switched to. This parameter specifies the path to the symbolic link. Envoy // will watch the location for changes and reload the file system tree when // they happen. string symlink_root = 1; // Specifies the subdirectory to load within the root directory. This is // useful if multiple systems share the same delivery mechanism. Envoy // configuration elements can be contained in a dedicated subdirectory. string subdirectory = 2; // Specifies an optional subdirectory to load within the root directory. If // specified and the directory exists, configuration values within this // directory will override those found in the primary subdirectory. This is // useful when Envoy is deployed across many different types of servers. // Sometimes it is useful to have a per service cluster directory for runtime // configuration. See below for exactly how the override directory is used. string override_subdirectory = 3; } message RateLimitServiceConfig { // Specifies the cluster manager cluster name that hosts the rate limit // service. The client will connect to this cluster when it needs to make rate // limit service requests. string cluster_name = 1; } message Bootstrap { // Node identity to present to the management server and for instance // identification purposes (e.g. in generated headers). Node node = 1; // Statically specified resources. message StaticResources { repeated Listener listeners = 1; // If a network based configuration source is specified for cds_config, it's // necessary to have some initial cluster definitions available to allow Envoy // to know how to speak to the management server. These cluster definitions // may not use EDS (i.e. they should be static IP or DNS-based). repeated Cluster clusters = 2; } StaticResources static_resources = 2; // xDS configuration sources. message DynamicResources { // All Listeners are provided by a single LDS configuration source. ConfigSource lds_config = 1; // All post-bootstrap Cluster definitions are provided by a single CDS // configuration source. ConfigSource cds_config = 2; // A single ADS source may be optionally specified. This must have api_type GRPC. ApiConfigSource ads_config = 3; message DeprecatedV1 { // This is the global SDS config when using v1 REST for CDS/EDS. ConfigSource sds_config = 1; } DeprecatedV1 deprecated_v1 = 4; } DynamicResources dynamic_resources = 3; // Configuration for the cluster manager which owns all upstream clusters // within the server. ClusterManager cluster_manager = 4; // Optional file system path to search for startup flag files. string flags_path = 5; // Optional set of stats sinks. repeated StatsSink stats_sinks = 6; // Optional duration 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). google.protobuf.Duration stats_flush_interval = 7; // Optional watchdog configuration. Watchdog watchdog = 8; // Configuration for an external tracing provider. If not specified, no // tracing will be performed. Tracing tracing = 9; // Configuration for an external rate limit service provider. If not // specified, any calls to the rate limit service will immediately return // success. RateLimitServiceConfig rate_limit_service = 10; // Configuration for the runtime configuration provider. If not specified, a // “null” provider will be used which will result in all defaults being used. Runtime runtime = 11; // Configuration for the local administration HTTP server. Admin admin = 12; }