.. _envoy_api_file_envoy/config/bootstrap/v2/bootstrap.proto:

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
<config_overview_v2_bootstrap>` for more detail.

.. _envoy_api_msg_config.bootstrap.v2.Bootstrap:

config.bootstrap.v2.Bootstrap
-----------------------------

`[config.bootstrap.v2.Bootstrap proto] <https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/bootstrap/v2/bootstrap.proto#L26>`_

Bootstrap :ref:`configuration overview <config_overview_v2_bootstrap>`.

.. code-block:: json

  {
    "node": "{...}",
    "static_resources": "{...}",
    "dynamic_resources": "{...}",
    "cluster_manager": "{...}",
    "flags_path": "...",
    "stats_sinks": [],
    "stats_config": "{...}",
    "stats_flush_interval": "{...}",
    "watchdog": "{...}",
    "tracing": "{...}",
    "rate_limit_service": "{...}",
    "runtime": "{...}",
    "admin": "{...}"
  }

.. _envoy_api_field_config.bootstrap.v2.Bootstrap.node:

node
  (:ref:`core.Node <envoy_api_msg_core.Node>`) Node identity to present to the management server and for instance
  identification purposes (e.g. in generated headers).
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.static_resources:

static_resources
  (:ref:`config.bootstrap.v2.Bootstrap.StaticResources <envoy_api_msg_config.bootstrap.v2.Bootstrap.StaticResources>`) Statically specified resources.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.dynamic_resources:

dynamic_resources
  (:ref:`config.bootstrap.v2.Bootstrap.DynamicResources <envoy_api_msg_config.bootstrap.v2.Bootstrap.DynamicResources>`) xDS configuration sources.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.cluster_manager:

cluster_manager
  (:ref:`config.bootstrap.v2.ClusterManager <envoy_api_msg_config.bootstrap.v2.ClusterManager>`) Configuration for the cluster manager which owns all upstream clusters
  within the server.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.flags_path:

flags_path
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) Optional file system path to search for startup flag files.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.stats_sinks:

stats_sinks
  (:ref:`config.metrics.v2.StatsSink <envoy_api_msg_config.metrics.v2.StatsSink>`) Optional set of stats sinks.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.stats_config:

stats_config
  (:ref:`config.metrics.v2.StatsConfig <envoy_api_msg_config.metrics.v2.StatsConfig>`) Configuration for internal processing of stats.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.stats_flush_interval:

stats_flush_interval
  (`Duration <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration>`_) 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).
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.watchdog:

watchdog
  (:ref:`config.bootstrap.v2.Watchdog <envoy_api_msg_config.bootstrap.v2.Watchdog>`) Optional watchdog configuration.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.tracing:

tracing
  (:ref:`config.trace.v2.Tracing <envoy_api_msg_config.trace.v2.Tracing>`) Configuration for an external tracing provider. If not specified, no
  tracing will be performed.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.rate_limit_service:

rate_limit_service
  (:ref:`config.ratelimit.v2.RateLimitServiceConfig <envoy_api_msg_config.ratelimit.v2.RateLimitServiceConfig>`) Configuration for an external rate limit service provider. If not
  specified, any calls to the rate limit service will immediately return
  success.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.runtime:

runtime
  (:ref:`config.bootstrap.v2.Runtime <envoy_api_msg_config.bootstrap.v2.Runtime>`) Configuration for the runtime configuration provider. If not specified, a
  “null” provider will be used which will result in all defaults being used.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.admin:

admin
  (:ref:`config.bootstrap.v2.Admin <envoy_api_msg_config.bootstrap.v2.Admin>`, *REQUIRED*) Configuration for the local administration HTTP server.
  
  
.. _envoy_api_msg_config.bootstrap.v2.Bootstrap.StaticResources:

config.bootstrap.v2.Bootstrap.StaticResources
---------------------------------------------

`[config.bootstrap.v2.Bootstrap.StaticResources proto] <https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/bootstrap/v2/bootstrap.proto#L31>`_


.. code-block:: json

  {
    "listeners": [],
    "clusters": []
  }

.. _envoy_api_field_config.bootstrap.v2.Bootstrap.StaticResources.listeners:

listeners
  (:ref:`Listener <envoy_api_msg_Listener>`) Static :ref:`Listeners <envoy_api_msg_Listener>`. These listeners are
  available regardless of LDS configuration.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.StaticResources.clusters:

clusters
  (:ref:`Cluster <envoy_api_msg_Cluster>`) If a network based configuration source is specified for :ref:`cds_config
  <envoy_api_field_config.bootstrap.v2.Bootstrap.DynamicResources.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 <arch_overview_dynamic_config_sds>` (i.e. they should be static
  IP or DNS-based).
  
  



.. _envoy_api_msg_config.bootstrap.v2.Bootstrap.DynamicResources:

config.bootstrap.v2.Bootstrap.DynamicResources
----------------------------------------------

`[config.bootstrap.v2.Bootstrap.DynamicResources proto] <https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/bootstrap/v2/bootstrap.proto#L50>`_


.. code-block:: json

  {
    "lds_config": "{...}",
    "cds_config": "{...}",
    "ads_config": "{...}"
  }

.. _envoy_api_field_config.bootstrap.v2.Bootstrap.DynamicResources.lds_config:

lds_config
  (:ref:`core.ConfigSource <envoy_api_msg_core.ConfigSource>`) All :ref:`Listeners <envoy_api_msg_Listener>` are provided by a single
  :ref:`LDS <arch_overview_dynamic_config_lds>` configuration source.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.DynamicResources.cds_config:

cds_config
  (:ref:`core.ConfigSource <envoy_api_msg_core.ConfigSource>`) All post-bootstrap :ref:`Cluster <envoy_api_msg_Cluster>` definitions are
  provided by a single :ref:`CDS <arch_overview_dynamic_config_cds>`
  configuration source.
  
  
.. _envoy_api_field_config.bootstrap.v2.Bootstrap.DynamicResources.ads_config:

ads_config
  (:ref:`core.ApiConfigSource <envoy_api_msg_core.ApiConfigSource>`) A single :ref:`ADS <config_overview_v2_ads>` source may be optionally
  specified. This must have :ref:`api_type
  <envoy_api_field_core.ApiConfigSource.api_type>` :ref:`GRPC
  <envoy_api_enum_value_core.ApiConfigSource.ApiType.GRPC>`. Only
  :ref:`ConfigSources <envoy_api_msg_core.ConfigSource>` that have
  the :ref:`ads <envoy_api_field_core.ConfigSource.ads>` field set will be
  streamed on the ADS channel.
  
  




.. _envoy_api_msg_config.bootstrap.v2.Admin:

config.bootstrap.v2.Admin
-------------------------

`[config.bootstrap.v2.Admin proto] <https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/bootstrap/v2/bootstrap.proto#L125>`_

Administration interface :ref:`operations documentation
<operations_admin_interface>`.

.. code-block:: json

  {
    "access_log_path": "...",
    "profile_path": "...",
    "address": "{...}"
  }

.. _envoy_api_field_config.bootstrap.v2.Admin.access_log_path:

access_log_path
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *REQUIRED*) The path to write the access log for the administration server. If no
  access log is desired specify ‘/dev/null’.
  
  
.. _envoy_api_field_config.bootstrap.v2.Admin.profile_path:

profile_path
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) The cpu profiler output path for the administration server. If no profile
  path is specified, the default is ‘/var/log/envoy/envoy.prof’.
  
  
.. _envoy_api_field_config.bootstrap.v2.Admin.address:

address
  (:ref:`core.Address <envoy_api_msg_core.Address>`, *REQUIRED*) The TCP address that the administration server will listen on.
  
  


.. _envoy_api_msg_config.bootstrap.v2.ClusterManager:

config.bootstrap.v2.ClusterManager
----------------------------------

`[config.bootstrap.v2.ClusterManager proto] <https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/bootstrap/v2/bootstrap.proto#L140>`_

Cluster manager :ref:`architecture overview <arch_overview_cluster_manager>`.

.. code-block:: json

  {
    "local_cluster_name": "...",
    "outlier_detection": "{...}",
    "upstream_bind_config": "{...}",
    "load_stats_config": "{...}"
  }

.. _envoy_api_field_config.bootstrap.v2.ClusterManager.local_cluster_name:

local_cluster_name
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) Name of the local cluster (i.e., the cluster that owns the Envoy running
  this configuration). In order to enable :ref:`zone aware routing
  <arch_overview_load_balancing_zone_aware_routing>` this option must be set.
  If *local_cluster_name* is defined then :ref:`clusters
  <config_cluster_manager_clusters>` must be defined in the :ref:`Bootstrap
  static cluster resources
  <envoy_api_field_config.bootstrap.v2.Bootstrap.StaticResources.clusters>`. This is unrelated to
  the :option:`--service-cluster` option which does not `affect zone aware
  routing <https://github.com/envoyproxy/envoy/issues/774>`_.
  
  
.. _envoy_api_field_config.bootstrap.v2.ClusterManager.outlier_detection:

outlier_detection
  (:ref:`config.bootstrap.v2.ClusterManager.OutlierDetection <envoy_api_msg_config.bootstrap.v2.ClusterManager.OutlierDetection>`) Optional global configuration for outlier detection.
  
  
.. _envoy_api_field_config.bootstrap.v2.ClusterManager.upstream_bind_config:

upstream_bind_config
  (:ref:`core.BindConfig <envoy_api_msg_core.BindConfig>`) 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_field_config.bootstrap.v2.ClusterManager.load_stats_config:

load_stats_config
  (:ref:`core.ApiConfigSource <envoy_api_msg_core.ApiConfigSource>`) A management server endpoint to stream load stats to via
  *StreamLoadStats*. This must have :ref:`api_type
  <envoy_api_field_core.ApiConfigSource.api_type>` :ref:`GRPC
  <envoy_api_enum_value_core.ApiConfigSource.ApiType.GRPC>`.
  
  
.. _envoy_api_msg_config.bootstrap.v2.ClusterManager.OutlierDetection:

config.bootstrap.v2.ClusterManager.OutlierDetection
---------------------------------------------------

`[config.bootstrap.v2.ClusterManager.OutlierDetection proto] <https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/bootstrap/v2/bootstrap.proto#L152>`_


.. code-block:: json

  {
    "event_log_path": "..."
  }

.. _envoy_api_field_config.bootstrap.v2.ClusterManager.OutlierDetection.event_log_path:

event_log_path
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) Specifies the path to the outlier event log.
  
  



.. _envoy_api_msg_config.bootstrap.v2.Watchdog:

config.bootstrap.v2.Watchdog
----------------------------

`[config.bootstrap.v2.Watchdog proto] <https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/bootstrap/v2/bootstrap.proto#L172>`_

Envoy process watchdog configuration. When configured, this monitors for
nonresponsive threads and kills the process after the configured thresholds.

.. code-block:: json

  {
    "miss_timeout": "{...}",
    "megamiss_timeout": "{...}",
    "kill_timeout": "{...}",
    "multikill_timeout": "{...}"
  }

.. _envoy_api_field_config.bootstrap.v2.Watchdog.miss_timeout:

miss_timeout
  (`Duration <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration>`_) The duration after which Envoy counts a nonresponsive thread in the
  *server.watchdog_miss* statistic. If not specified the default is 200ms.
  
  
.. _envoy_api_field_config.bootstrap.v2.Watchdog.megamiss_timeout:

megamiss_timeout
  (`Duration <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration>`_) The duration after which Envoy counts a nonresponsive thread in the
  *server.watchdog_mega_miss* statistic. If not specified the default is
  1000ms.
  
  
.. _envoy_api_field_config.bootstrap.v2.Watchdog.kill_timeout:

kill_timeout
  (`Duration <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration>`_) 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).
  
  
.. _envoy_api_field_config.bootstrap.v2.Watchdog.multikill_timeout:

multikill_timeout
  (`Duration <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration>`_) 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).
  
  


.. _envoy_api_msg_config.bootstrap.v2.Runtime:

config.bootstrap.v2.Runtime
---------------------------

`[config.bootstrap.v2.Runtime proto] <https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/bootstrap/v2/bootstrap.proto#L194>`_

Runtime :ref:`configuration overview <config_runtime>`.

.. code-block:: json

  {
    "symlink_root": "...",
    "subdirectory": "...",
    "override_subdirectory": "..."
  }

.. _envoy_api_field_config.bootstrap.v2.Runtime.symlink_root:

symlink_root
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *REQUIRED*) 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.
  
  
.. _envoy_api_field_config.bootstrap.v2.Runtime.subdirectory:

subdirectory
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) 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.
  
  
.. _envoy_api_field_config.bootstrap.v2.Runtime.override_subdirectory:

override_subdirectory
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) 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.