Bootstrap(proto)
此 proto 通过 -c
CLI 标志提供,并充当 Envoy v3 配置的根。有关更多详细信息,请参见 v3 配置概述。
config.bootstrap.v3.Bootstrap
[config.bootstrap.v3.Bootstrap proto]
Bootstrap 配置概述。
{
"node": {...},
"static_resources": {...},
"dynamic_resources": {...},
"cluster_manager": {...},
"hds_config": {...},
"flags_path": ...,
"stats_sinks": [],
"deferred_stat_options": {...},
"stats_config": {...},
"stats_flush_interval": {...},
"stats_flush_on_admin": ...,
"watchdog": {...},
"watchdogs": {...},
"tracing": {...},
"layered_runtime": {...},
"admin": {...},
"overload_manager": {...},
"enable_dispatcher_stats": ...,
"header_prefix": ...,
"stats_server_version_override": {...},
"use_tcp_for_dns_lookups": ...,
"dns_resolution_config": {...},
"typed_dns_resolver_config": {...},
"bootstrap_extensions": [],
"fatal_actions": [],
"default_socket_interface": ...,
"inline_headers": [],
"perf_tracing_file_path": ...,
"default_regex_engine": {...},
"xds_config_tracker_extension": {...},
"application_log_config": {...},
"grpc_async_client_manager_config": {...},
"memory_allocator_manager": {...}
}
- node
(config.core.v3.Node) 用于向管理服务器展示节点标识以及用于实例标识目的(例如在生成的标头中)。
- static_resources
- dynamic_resources
- cluster_manager
(config.bootstrap.v3.ClusterManager) 用于集群管理器的配置,该管理器拥有服务器中的所有上游集群。
- hds_config
(config.core.v3.ApiConfigSource) 健康发现服务配置选项。(core.ApiConfigSource)
- flags_path
(string) 用于搜索启动标志文件的可选文件系统路径。
- stats_sinks
(repeated config.metrics.v3.StatsSink) 一组可选的统计信息接收器。
- deferred_stat_options
(config.bootstrap.v3.Bootstrap.DeferredStatOptions) 用于控制与延迟创建兼容的统计信息的选项。
- stats_config
(config.metrics.v3.StatsConfig) 用于内部处理统计信息的配置。
- stats_flush_interval
(Duration) 配置的统计信息接收器之间的可选刷新间隔。出于性能原因,Envoy 会锁存计数器,并且仅定期刷新计数器和度量值。如果未指定,则默认值为 5000ms(5 秒)。只能设置
stats_flush_interval
或stats_flush_on_admin
之一。持续时间必须至少为 1ms,最多为 5 分钟。
- stats_flush_on_admin
(bool) 仅在通过管理界面查询时将统计信息刷新到接收器。如果设置,则不会创建刷新计时器。只能设置
stats_flush_on_admin
或stats_flush_interval
之一。
- watchdog
(config.bootstrap.v3.Watchdog) 可选的看门狗配置。这是用于整个系统的单个看门狗配置。已弃用,建议使用
watchdogs
,它具有更细的粒度。
- watchdogs
(config.bootstrap.v3.Watchdogs) 可选的看门狗配置。这用于为不同的子系统指定不同的看门狗。
- tracing
(config.trace.v3.Tracing) 用于外部跟踪提供程序的配置。
注意
此字段已弃用,建议使用 HttpConnectionManager.Tracing.provider。
- layered_runtime
(config.bootstrap.v3.LayeredRuntime) 用于运行时配置提供程序的配置。如果未指定,则将使用“空”提供程序,这将导致使用所有默认值。
- admin
(config.bootstrap.v3.Admin) 用于本地管理 HTTP 服务器的配置。
- overload_manager
(config.overload.v3.OverloadManager) 可选的过载管理器配置。
注意
此字段应在存在不可信的下游时配置。
此字段应在存在不可信的上游时配置。
不可信环境的示例配置
overload_manager: actions: - name: envoy.overload_actions.shrink_heap triggers: - name: envoy.resource_monitors.fixed_heap threshold: value: 0.9 - name: envoy.overload_actions.stop_accepting_requests triggers: - name: envoy.resource_monitors.fixed_heap threshold: value: 0.95 refresh_interval: 0.25s resource_monitors: - name: envoy.resource_monitors.fixed_heap typed_config: '@type': type.googleapis.com/envoy.extensions.resource_monitors.fixed_heap.v3.FixedHeapConfig max_heap_size_bytes: 1073741824.0
- enable_dispatcher_stats
(bool) 启用 事件调度程序的统计信息,默认为 false。请注意,这会记录每个线程上事件循环每次迭代的值。这通常应该只是最小的开销,但在使用 statsd 时,它会单独通过网络发送每个观察到的值,因为 statsd 协议没有表示直方图摘要的方法。请注意,这可能是大量数据。
- header_prefix
(string) 用于代替 x-envoy 在为标头添加前缀时的可选字符串。
例如,如果存在此字符串并将其设置为 X-Foo,则 x-envoy-retry-on 将转换为 x-foo-retry-on 等。
请注意,这适用于 Envoy 将生成的标头、Envoy 将清理的标头以及 Envoy 将用于核心代码和核心扩展的标头。在进行此字符串的更改时,尤其是在多层 Envoy 部署或使用非上游扩展的部署中,请务必小心。
- stats_server_version_override
(UInt64Value) 如果指定,可选的代理版本将用于设置 server.version 统计信息 的值。Envoy 不会处理此值,它将按原样发送到 统计信息接收器。
- use_tcp_for_dns_lookups
(bool) 始终使用 TCP 查询而不是 UDP 查询进行 DNS 查找。这可能会在 cds_config 中的每个集群的基础上被覆盖,当 dns_resolvers 和 use_tcp_for_dns_lookups 指定时。此字段已弃用,建议使用
dns_resolution_config
,它在一个消息中汇总所有 DNS 解析器配置。
- dns_resolution_config
(config.core.v3.DnsResolutionConfig) DNS 解析器配置,其中包括基础 dns 解析器地址和选项。这可能会在 cds_config 中的每个集群的基础上被覆盖,当 dns_resolution_config 指定时。此字段已弃用,建议使用 typed_dns_resolver_config。
- typed_dns_resolver_config
(config.core.v3.TypedExtensionConfig) DNS 解析器类型配置扩展。此扩展可用于配置 c-ares、apple 或任何其他 DNS 解析器类型以及相关参数。例如,CaresDnsResolverConfig 的对象可以打包到此
typed_dns_resolver_config
中。此配置替换 dns_resolution_config 配置。在dns_resolution_config
和typed_dns_resolver_config
都存在时的过渡期间,当typed_dns_resolver_config
存在时,Envoy 将使用它并忽略dns_resolution_config
。当typed_dns_resolver_config
缺失时,将使用默认行为。
- bootstrap_extensions
(repeated config.core.v3.TypedExtensionConfig) 指定在启动时实例化的可选引导扩展。每个项目都包含扩展特定配置。
- fatal_actions
(repeated config.bootstrap.v3.FatalAction) 指定在启动时实例化并在崩溃时针对导致崩溃的请求调用的可选扩展。
- default_socket_interface
(string) 对默认套接字接口的可选覆盖。该值必须是通过引导扩展初始化的套接字接口工厂之一的名称
- inline_headers
(重复 config.bootstrap.v3.CustomInlineHeader) 指定一组需要注册为内联标头的标头。此配置允许用户在 Envoy 启动时按需自定义内联标头,而无需修改 Envoy 的源代码。
请注意,‘set-cookie’ 标头不能注册为内联标头。
- perf_tracing_file_path
(字符串) 可选路径,指向由“Perfetto” SDK 以二进制 ProtoBuf 格式创建的包含性能跟踪数据的文件。默认值为“envoy.pftrace”。
- default_regex_engine
(config.core.v3.TypedExtensionConfig) 可选的默认正则表达式引擎覆盖。如果未指定此值,则默认情况下将使用 Google RE2。
- xds_config_tracker_extension
(config.core.v3.TypedExtensionConfig) 可选的 XdsConfigTracker 配置,允许跟踪外部组件中的 xDS 响应,例如外部跟踪器或监视器。它提供在接收、接收或处理失败时处理 xDS 资源和消息的处理点。如果未指定值,则不会使用 XdsConfigTracker。
注意
目前没有库内扩展,并且在使用之前应实现 XdsConfigTracker 接口。有关接口示例用法,请参见 xds_config_tracker_integration_test。
- application_log_config
(config.bootstrap.v3.Bootstrap.ApplicationLogConfig) 可选的应用程序日志配置。
- grpc_async_client_manager_config
(config.bootstrap.v3.Bootstrap.GrpcAsyncClientManagerConfig) 可选的 gRPC 异步管理器配置。
- memory_allocator_manager
(config.bootstrap.v3.MemoryAllocatorManager) 内存分配管理器的可选配置。仅支持 tcmalloc 分配器 的内存释放。
config.bootstrap.v3.Bootstrap.StaticResources
[config.bootstrap.v3.Bootstrap.StaticResources proto]
{
"listeners": [],
"clusters": [],
"secrets": []
}
- listeners
(重复 config.listener.v3.Listener) 静态 侦听器。这些侦听器与 LDS 配置无关。
- clusters
(重复 config.cluster.v3.Cluster) 如果为 cds_config 指定了基于网络的配置源,则需要提供一些初始集群定义,以允许 Envoy 了解如何与管理服务器通信。这些集群定义可能不使用 EDS(即它们应该是基于静态 IP 或 DNS 的)。
- secrets
(重复 extensions.transport_sockets.tls.v3.Secret) 这些静态机密可用于 SdsSecretConfig
config.bootstrap.v3.Bootstrap.DynamicResources
[config.bootstrap.v3.Bootstrap.DynamicResources proto]
{
"lds_config": {...},
"cds_config": {...},
"ads_config": {...}
}
- lds_config
(config.core.v3.ConfigSource) 所有 侦听器 由单个 LDS 配置源提供。
- cds_config
(config.core.v3.ConfigSource) 所有引导后 集群 定义由单个 CDS 配置源提供。
- ads_config
(config.core.v3.ApiConfigSource) 可选地指定单个 ADS 源。这必须具有 api_type GRPC。只有设置了 ads 字段的 ConfigSources 将在 ADS 通道上流式传输。
config.bootstrap.v3.Bootstrap.ApplicationLogConfig
[config.bootstrap.v3.Bootstrap.ApplicationLogConfig proto]
{
"log_format": {...}
}
- log_format
(config.bootstrap.v3.Bootstrap.ApplicationLogConfig.LogFormat) 可选字段用于设置应用程序日志格式。如果设置此字段,它将覆盖默认日志格式。设置此字段和
--log-format
命令行选项将不被允许,并将导致引导错误。
config.bootstrap.v3.Bootstrap.ApplicationLogConfig.LogFormat
[config.bootstrap.v3.Bootstrap.ApplicationLogConfig.LogFormat proto]
{
"json_format": {...},
"text_format": ...
}
- json_format
(结构) 以 JSON 格式刷新应用程序日志。配置的 JSON 结构可以支持
--log-format
命令行选项部分中指定的所有格式标志,除了%v
和%_
标志。必须恰好设置一个 json_format 或 text_format。
- text_format
(字符串) 以字符串定义的格式刷新应用程序日志。文本格式可以支持
--log-format
命令行选项部分中指定的所有格式标志。必须恰好设置一个 json_format 或 text_format。
config.bootstrap.v3.Bootstrap.DeferredStatOptions
[config.bootstrap.v3.Bootstrap.DeferredStatOptions proto]
{
"enable_deferred_creation_stats": ...
}
config.bootstrap.v3.Bootstrap.GrpcAsyncClientManagerConfig
[config.bootstrap.v3.Bootstrap.GrpcAsyncClientManagerConfig proto]
{
"max_cached_entry_idle_duration": {...}
}
- max_cached_entry_idle_duration
(持续时间) 可选字段用于设置缓存的 gRPC 客户端对象的到期时间。最小值为 5 秒,默认值为 50 秒。
config.bootstrap.v3.Admin
[config.bootstrap.v3.Admin proto]
管理接口 操作文档。
{
"access_log": [],
"access_log_path": ...,
"profile_path": ...,
"address": {...},
"socket_options": [],
"ignore_global_conn_limit": ...
}
- access_log
(重复 config.accesslog.v3.AccessLog) 管理服务器发出的 访问日志 的配置。
- access_log_path
(字符串) 管理服务器访问日志的写入路径。如果不需要访问日志,请指定‘/dev/null’。这仅在设置了 address 时才需要。建议使用提供更多选项的
access_log
来代替。
- profile_path
(字符串) 管理服务器的 CPU 分析器输出路径。如果未指定分析器路径,则默认值为‘/var/log/envoy/envoy.prof’。
- address
(config.core.v3.Address) 管理服务器将侦听的 TCP 地址。如果未指定,Envoy 将不会启动管理服务器。
- socket_options
(重复 config.core.v3.SocketOption) Envoy 源代码或预编译二进制文件中可能不存在的其他套接字选项。
- ignore_global_conn_limit
(布尔值) 指示 global_downstream_max_connections 是否应用于管理接口。
config.bootstrap.v3.ClusterManager
[config.bootstrap.v3.ClusterManager proto]
集群管理器 架构概述。
{
"local_cluster_name": ...,
"outlier_detection": {...},
"upstream_bind_config": {...},
"load_stats_config": {...},
"enable_deferred_cluster_creation": ...
}
- local_cluster_name
(string) 本地集群的名称(即,拥有运行此配置的 Envoy 的集群)。为了启用 区域感知路由,必须设置此选项。如果定义了
local_cluster_name
,则必须在 Bootstrap 静态集群资源 中定义 集群。这与--service-cluster
选项无关,该选项不会 影响区域感知路由。
- outlier_detection
(config.bootstrap.v3.ClusterManager.OutlierDetection) 异常检测的可选全局配置。
- upstream_bind_config
(config.core.v3.BindConfig) 用于绑定新建立的上游连接的可选配置。这可以在集群级别被 cds_config 中的 upstream_bind_config 覆盖。
- load_stats_config
(config.core.v3.ApiConfigSource) 用于通过
StreamLoadStats
流式传输负载统计信息的管理服务器端点。它必须具有 api_type GRPC。
- enable_deferred_cluster_creation
(bool) ClusterManager 是否将在请求期间的 worker 线程上内联创建集群。这将在存在大量非活动集群和 > 1 个 worker 线程的情况下节省内存和 CPU 周期。
config.bootstrap.v3.ClusterManager.OutlierDetection
[config.bootstrap.v3.ClusterManager.OutlierDetection proto]
{
"event_log_path": ...
}
- event_log_path
(string) 指定异常事件日志的路径。
config.bootstrap.v3.Watchdogs
[config.bootstrap.v3.Watchdogs proto]
允许您为不同的子系统指定不同的看门狗配置。这允许对看门狗进行更精细的策略调整。如果省略了子系统,则将使用该系统默认值。
{
"main_thread_watchdog": {...},
"worker_watchdog": {...}
}
- main_thread_watchdog
(config.bootstrap.v3.Watchdog) 主线程的看门狗。
- worker_watchdog
(config.bootstrap.v3.Watchdog) 工作线程的看门狗。
config.bootstrap.v3.Watchdog
[config.bootstrap.v3.Watchdog proto]
Envoy 进程看门狗配置。当配置后,它会监控无响应线程,并在配置的阈值后杀死进程。有关更多信息,请参见 看门狗文档。
{
"actions": [],
"miss_timeout": {...},
"megamiss_timeout": {...},
"kill_timeout": {...},
"max_kill_timeout_jitter": {...},
"multikill_timeout": {...},
"multikill_threshold": {...}
}
- actions
(repeated config.bootstrap.v3.Watchdog.WatchdogAction) 注册将在给定看门狗事件上触发的操作。有关事件的优先级,请参见
WatchDogAction
。
- miss_timeout
(Duration) Envoy 在
watchdog_miss
统计信息中统计一个无响应线程所持续的时间。如果未指定,则默认值为 200 毫秒。
- megamiss_timeout
(Duration) Envoy 在
watchdog_mega_miss
统计信息中统计一个无响应线程所持续的时间。如果未指定,则默认值为 1000 毫秒。
- kill_timeout
(Duration) 如果被监视的线程在该持续时间内一直无响应,则假设存在编程错误,并杀死整个 Envoy 进程。设置为 0 以禁用杀死行为。如果未指定,则默认值为 0(禁用)。
- max_kill_timeout_jitter
(Duration) 定义用于调整
kill_timeout
的最大抖动,如果启用了kill_timeout
。启用此功能将有助于降低由于外部触发器而导致代理之间同步看门狗杀死事件的风险。设置为 0 以禁用。如果未指定,则默认值为 0(禁用)。
- multikill_timeout
(Duration) 如果
max(2, ceil(registered_threads * Fraction(*multikill_threshold*)))
线程在至少该持续时间内一直无响应,则杀死整个 Envoy 进程。设置为 0 以禁用此行为。如果未指定,则默认值为 0(禁用)。
- multikill_threshold
(type.v3.Percent) 以无响应线程百分比的形式设置
multikill_timeout
的阈值,以满足multikill_timeout
的要求。如果未指定,则默认值为 0。
config.bootstrap.v3.Watchdog.WatchdogAction
[config.bootstrap.v3.Watchdog.WatchdogAction proto]
{
"config": {...},
"event": ...
}
- config
(config.core.v3.TypedExtensionConfig) 操作的特定于扩展的配置。
Enum config.bootstrap.v3.Watchdog.WatchdogAction.WatchdogEvent
[config.bootstrap.v3.Watchdog.WatchdogAction.WatchdogEvent proto]
事件按以下顺序触发:KILL、MULTIKILL、MEGAMISS、MISS。在事件类型内,操作按配置顺序执行。对于 KILL/MULTIKILL,存在一个默认的 PANIC,它将在注册的操作之后运行,并在进程尚未被杀死的情况下杀死该进程。指定多个调试操作,甚至可能指定一个可选的 FATAL 操作可能会有所帮助。
- UNKNOWN
(DEFAULT)
- KILL
- MULTIKILL
- MEGAMISS
- MISS
config.bootstrap.v3.FatalAction
[config.bootstrap.v3.FatalAction proto]
在崩溃时运行的致命操作。操作可以是安全的(表示它们是异步信号安全的)或不安全的。我们在运行不安全操作之前运行所有安全操作。如果使用可能卡住或死锁的不安全操作,则拥有一个带外系统来终止进程非常重要。
扩展的接口是 Envoy::Server::Configuration::FatalAction
。 FatalAction
扩展位于 envoy.extensions.fatal_actions
API 命名空间中。
{
"config": {...}
}
- config
(config.core.v3.TypedExtensionConfig) 操作的特定于扩展的配置。预期它符合
Envoy::Server::Configuration::FatalAction
接口。
config.bootstrap.v3.Runtime
[config.bootstrap.v3.Runtime proto]
运行时 配置概述(已弃用)。
{
"symlink_root": ...,
"subdirectory": ...,
"override_subdirectory": ...,
"base": {...}
}
- symlink_root
(string) 该实现假定文件系统树是通过符号链接访问的。当应该切换到新的树时,将使用原子链接交换。此参数指定符号链接的路径。Envoy 将监视该位置以进行更改,并在发生更改时重新加载文件系统树。如果未设置此参数,则将不存在基于磁盘的运行时。
- subdirectory
(string) 指定要加载的根目录中的子目录。如果多个系统共享相同的交付机制,这将很有用。Envoy 配置元素可以包含在专用子目录中。
- override_subdirectory
(string) 指定要加载的根目录中的可选子目录。如果指定并且目录存在,则该目录中的配置值将覆盖在主子目录中找到的值。当 Envoy 部署在许多不同类型的服务器上时,这将很有用。有时,为运行时配置使用每个服务集群目录很有用。请参阅以下内容,以了解如何准确使用覆盖目录。
- base
(Struct) 静态基本运行时。这将被其他运行时层覆盖,例如磁盘或管理。这遵循 运行时 protobuf JSON 表示编码。
config.bootstrap.v3.RuntimeLayer
[config.bootstrap.v3.RuntimeLayer proto]
{
"name": ...,
"static_layer": {...},
"disk_layer": {...},
"admin_layer": {...},
"rtds_layer": {...}
}
- name
(string, REQUIRED) 运行时层的描述性名称。这仅用于运行时
GET /runtime
输出。
- static_layer
(Struct) 静态运行时 层。这遵循 运行时 protobuf JSON 表示编码。与静态 xDS 资源不同,此静态层可以被运行时虚拟文件系统中的后续层覆盖。
必须设置 static_layer、disk_layer、admin_layer、rtds_layer 中的精确一个。
- disk_layer
(config.bootstrap.v3.RuntimeLayer.DiskLayer)
必须设置 static_layer、disk_layer、admin_layer、rtds_layer 中的精确一个。
- admin_layer
(config.bootstrap.v3.RuntimeLayer.AdminLayer)
必须设置 static_layer、disk_layer、admin_layer、rtds_layer 中的精确一个。
- rtds_layer
(config.bootstrap.v3.RuntimeLayer.RtdsLayer)
必须设置 static_layer、disk_layer、admin_layer、rtds_layer 中的精确一个。
config.bootstrap.v3.RuntimeLayer.DiskLayer
[config.bootstrap.v3.RuntimeLayer.DiskLayer proto]
磁盘运行时 层。
{
"symlink_root": ...,
"subdirectory": ...,
"append_service_cluster": ...
}
- symlink_root
(string) 实现假设文件系统树是通过符号链接访问的。当应该切换到新的树时,使用原子链接交换。此参数指定符号链接的路径。Envoy 将监视该位置的更改,并在发生更改时重新加载文件系统树。有关如何处理重新加载的更多详细信息,请参阅运行时 原子性 文档。
- subdirectory
(string) 指定要加载的根目录中的子目录。如果多个系统共享相同的交付机制,这将很有用。Envoy 配置元素可以包含在专用子目录中。
config.bootstrap.v3.RuntimeLayer.AdminLayer
[config.bootstrap.v3.RuntimeLayer.AdminLayer proto]
管理控制台运行时 层。
config.bootstrap.v3.RuntimeLayer.RtdsLayer
[config.bootstrap.v3.RuntimeLayer.RtdsLayer proto]
{
"name": ...,
"rtds_config": {...}
}
- name
(string) 要在
rtds_config
中订阅的资源,用于 RTDS 层。
- rtds_config
(config.core.v3.ConfigSource) RTDS 配置源。
config.bootstrap.v3.LayeredRuntime
[config.bootstrap.v3.LayeredRuntime proto]
运行时 配置概述。
{
"layers": []
}
- layers
(repeated config.bootstrap.v3.RuntimeLayer) 运行时的 层。此列表按顺序排列,以便列表中后来的层覆盖较早的条目。
config.bootstrap.v3.CustomInlineHeader
[config.bootstrap.v3.CustomInlineHeader proto]
用于指定需要注册为内联头的头。
如果请求或响应包含多个具有相同名称的头,并且头名称被注册为内联头。那么多个头将折叠成一个,多个头值将通过合适的定界符连接。定界符通常是一个逗号。
例如,如果“foo”被注册为内联头,并且头包含以下两个头
foo: bar
foo: eep
那么它们最终将折叠成
foo: bar, eep
内联头提供 O(1) 搜索性能,但每个内联头都会对相应类型的所有 HeaderMap 或 TrailerMap 实例施加额外的内存开销。
{
"inline_header_name": ...,
"inline_header_type": ...
}
- inline_header_name
(string, REQUIRED) 预计设置为内联头的头的名称。
- inline_header_type
(config.bootstrap.v3.CustomInlineHeader.InlineHeaderType) 预计设置为内联头的头的类型。
Enum config.bootstrap.v3.CustomInlineHeader.InlineHeaderType
[config.bootstrap.v3.CustomInlineHeader.InlineHeaderType proto]
- REQUEST_HEADER
(DEFAULT)
- REQUEST_TRAILER
- RESPONSE_HEADER
- RESPONSE_TRAILER
config.bootstrap.v3.MemoryAllocatorManager
[config.bootstrap.v3.MemoryAllocatorManager proto]
{
"bytes_to_release": ...,
"memory_release_interval": {...}
}
- bytes_to_release
(uint64) 配置 tcmalloc 在
memory_release_interval
间隔中以字节为单位执行空闲内存的后台释放。如果等于0
,则不会进行内存释放。默认为0
。
- memory_release_interval
(Duration) 以毫秒为单位的内存释放间隔。如果指定,则在每个间隔期间,Envoy 将尝试释放
bytes_to_release
空闲内存以供操作系统重复使用。默认为 1000 毫秒。