envoy.config.bootstrap.v2.bootstrap.proto Maven / Gradle / Ivy
// [#protodoc-title: Bootstrap]
// This proto is supplied via the :option:`-c` CLI flag and acts as the root
// of the Envoy v2 configuration. See the :ref:`v2 configuration overview
// ` for more detail.
syntax = "proto3";
package envoy.config.bootstrap.v2;
option java_outer_classname = "BootstrapProto";
option java_multiple_files = true;
option java_package = "io.envoyproxy.envoy.config.bootstrap.v2";
import "envoy/api/v2/core/address.proto";
import "envoy/api/v2/core/base.proto";
import "envoy/api/v2/auth/cert.proto";
import "envoy/api/v2/core/config_source.proto";
import "envoy/api/v2/cds.proto";
import "envoy/api/v2/lds.proto";
import "envoy/config/trace/v2/trace.proto";
import "envoy/config/metrics/v2/stats.proto";
import "envoy/config/overload/v2alpha/overload.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
import "validate/validate.proto";
// Bootstrap :ref:`configuration overview `.
message Bootstrap {
// Node identity to present to the management server and for instance
// identification purposes (e.g. in generated headers).
envoy.api.v2.core.Node node = 1;
message StaticResources {
// Static :ref:`Listeners `. These listeners are
// available regardless of LDS configuration.
repeated envoy.api.v2.Listener listeners = 1;
// If a network based configuration source is specified for :ref:`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 :ref:`EDS ` (i.e. they should be static
// IP or DNS-based).
repeated envoy.api.v2.Cluster clusters = 2;
// These static secrets can be used by :ref:`SdsSecretConfig
// `
repeated envoy.api.v2.auth.Secret secrets = 3;
}
// Statically specified resources.
StaticResources static_resources = 2;
message DynamicResources {
// All :ref:`Listeners ` are provided by a single
// :ref:`LDS ` configuration source.
envoy.api.v2.core.ConfigSource lds_config = 1;
// All post-bootstrap :ref:`Cluster ` definitions are
// provided by a single :ref:`CDS `
// configuration source.
envoy.api.v2.core.ConfigSource cds_config = 2;
// A single :ref:`ADS ` source may be optionally
// specified. This must have :ref:`api_type
// ` :ref:`GRPC
// `. Only
// :ref:`ConfigSources ` that have
// the :ref:`ads ` field set will be
// streamed on the ADS channel.
envoy.api.v2.core.ApiConfigSource ads_config = 3;
reserved 4;
}
// xDS configuration sources.
DynamicResources dynamic_resources = 3;
// Configuration for the cluster manager which owns all upstream clusters
// within the server.
ClusterManager cluster_manager = 4;
// Health discovery service config option.
// (:ref:`core.ApiConfigSource `)
envoy.api.v2.core.ApiConfigSource hds_config = 14;
// Optional file system path to search for startup flag files.
string flags_path = 5;
// Optional set of stats sinks.
repeated envoy.config.metrics.v2.StatsSink stats_sinks = 6;
// Configuration for internal processing of stats.
envoy.config.metrics.v2.StatsConfig stats_config = 13;
// 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).
// Duration must be at least 1ms and at most 5 min.
google.protobuf.Duration stats_flush_interval = 7 [(validate.rules).duration = {
lt: {seconds: 300},
gte: {nanos: 1000000}
}];
// Optional watchdog configuration.
Watchdog watchdog = 8;
// Configuration for an external tracing provider. If not specified, no
// tracing will be performed.
envoy.config.trace.v2.Tracing tracing = 9;
reserved 10;
// Configuration for the runtime configuration provider (deprecated). If not
// specified, a “null” provider will be used which will result in all defaults
// being used.
Runtime runtime = 11 [deprecated = true];
// Configuration for the runtime configuration provider. If not
// specified, a “null” provider will be used which will result in all defaults
// being used.
LayeredRuntime layered_runtime = 17;
// Configuration for the local administration HTTP server.
Admin admin = 12;
// Optional overload manager configuration.
envoy.config.overload.v2alpha.OverloadManager overload_manager = 15;
// Enable :ref:`stats for event dispatcher `, defaults to false.
// Note that this records a value for each iteration of the event loop on every thread. This
// should normally be minimal overhead, but when using
// :ref:`statsd `, it will send each observed value
// over the wire individually because the statsd protocol doesn't have any way to represent a
// histogram summary. Be aware that this can be a very large volume of data.
bool enable_dispatcher_stats = 16;
// Optional string which will be used in lieu of x-envoy in prefixing headers.
//
// For example, if this string is present and set to X-Foo, then x-envoy-retry-on will be
// transformed into x-foo-retry-on etc.
//
// Note this applies to the headers Envoy will generate, the headers Envoy will sanitize, and the
// headers Envoy will trust for core code and core extensions only. Be VERY careful making
// changes to this string, especially in multi-layer Envoy deployments or deployments using
// extensions which are not upstream.
string header_prefix = 18;
}
// Administration interface :ref:`operations documentation
// `.
message Admin {
// The path to write the access log for the administration server. If no
// access log is desired specify ‘/dev/null’. This is only required if
// :ref:`address ` is set.
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.
// If not specified, Envoy will not start an administration server.
envoy.api.v2.core.Address address = 3;
// Additional socket options that may not be present in Envoy source code or
// precompiled binaries.
repeated envoy.api.v2.core.SocketOption socket_options = 4;
}
// Cluster manager :ref:`architecture overview `.
message ClusterManager {
// Name of the local cluster (i.e., the cluster that owns the Envoy running
// this configuration). In order to enable :ref:`zone aware routing
// ` this option must be set.
// If *local_cluster_name* is defined then :ref:`clusters
// ` must be defined in the :ref:`Bootstrap
// static cluster resources
// `. This is unrelated to
// the :option:`--service-cluster` option which does not `affect zone aware
// routing `_.
string local_cluster_name = 1;
message OutlierDetection {
// Specifies the path to the outlier event log.
string event_log_path = 1;
}
// Optional global configuration for outlier detection.
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.
envoy.api.v2.core.BindConfig upstream_bind_config = 3;
// A management server endpoint to stream load stats to via
// *StreamLoadStats*. This must have :ref:`api_type
// ` :ref:`GRPC
// `.
envoy.api.v2.core.ApiConfigSource load_stats_config = 4;
}
// Envoy process watchdog configuration. When configured, this monitors for
// nonresponsive threads and kills the process after the configured thresholds.
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;
}
// Runtime :ref:`configuration overview ` (deprecated).
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. If this parameter is not set, there will be no disk based
// runtime.
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;
// Static base runtime. This will be :ref:`overridden
// ` by other runtime layers, e.g.
// disk or admin. This follows the :ref:`runtime protobuf JSON representation
// encoding `.
google.protobuf.Struct base = 4;
}
message RuntimeLayer {
// :ref:`Disk runtime ` layer.
message DiskLayer {
// 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. See documentation on runtime :ref:`atomicity
// ` for further details on how reloads are
// treated.
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 = 3;
// :ref:`Append ` the
// service cluster to the path under symlink root.
bool append_service_cluster = 2;
}
// :ref:`Admin console runtime ` layer.
message AdminLayer {
}
// :ref:`Runtime Discovery Service (RTDS) ` layer.
message RtdsLayer {
// Resource to subscribe to at *rtds_config* for the RTDS layer.
string name = 1;
// RTDS configuration source.
envoy.api.v2.core.ConfigSource rtds_config = 2;
}
// Descriptive name for the runtime layer. This is only used for the runtime
// :http:get:`/runtime` output.
string name = 1 [(validate.rules).string.min_bytes = 1];
oneof layer_specifier {
// :ref:`Static runtime ` layer.
// This follows the :ref:`runtime protobuf JSON representation encoding
// `. Unlike static xDS resources, this static
// layer is overridable by later layers in the runtime virtual filesystem.
option (validate.required) = true;
google.protobuf.Struct static_layer = 2;
DiskLayer disk_layer = 3;
AdminLayer admin_layer = 4;
RtdsLayer rtds_layer = 5;
}
}
// Runtime :ref:`configuration overview `.
message LayeredRuntime {
// The :ref:`layers ` of the runtime. This is ordered
// such that later layers in the list overlay earlier entries.
repeated RuntimeLayer layers = 1;
}