Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

xds: Envoy proto sync to 2024-01-24 #10895

Merged
merged 2 commits into from
Feb 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion xds/third_party/envoy/import.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

set -e
# import VERSION from the google internal copybara_version.txt for Envoy
VERSION=0478eba2a495027bf6ac8e787c42e2f5b9eb553b
VERSION=147e6b9523d8d2ae0d9d2205254d6e633644c6fe
DOWNLOAD_URL="https://github.com/envoyproxy/envoy/archive/${VERSION}.tar.gz"
DOWNLOAD_BASE_DIR="envoy-${VERSION}"
SOURCE_PROTO_BASE_DIR="${DOWNLOAD_BASE_DIR}/api"
Expand Down Expand Up @@ -79,6 +79,7 @@ envoy/config/core/v3/event_service_config.proto
envoy/config/core/v3/extension.proto
envoy/config/core/v3/grpc_service.proto
envoy/config/core/v3/health_check.proto
envoy/config/core/v3/http_service.proto
envoy/config/core/v3/http_uri.proto
envoy/config/core/v3/protocol.proto
envoy/config/core/v3/proxy_protocol.proto
Expand Down Expand Up @@ -124,6 +125,7 @@ envoy/config/trace/v3/opentelemetry.proto
envoy/config/trace/v3/service.proto
envoy/config/trace/v3/trace.proto
envoy/config/trace/v3/zipkin.proto
envoy/data/accesslog/v3/accesslog.proto
envoy/extensions/clusters/aggregate/v3/cluster.proto
envoy/extensions/filters/common/fault/v3/fault.proto
envoy/extensions/filters/http/fault/v3/fault.proto
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ message ConfigDump {
// * ``bootstrap``: :ref:`BootstrapConfigDump <envoy_v3_api_msg_admin.v3.BootstrapConfigDump>`
// * ``clusters``: :ref:`ClustersConfigDump <envoy_v3_api_msg_admin.v3.ClustersConfigDump>`
// * ``ecds_filter_http``: :ref:`EcdsConfigDump <envoy_v3_api_msg_admin.v3.EcdsConfigDump>`
// * ``ecds_filter_quic_listener``: :ref:`EcdsConfigDump <envoy_v3_api_msg_admin.v3.EcdsConfigDump>`
// * ``ecds_filter_tcp_listener``: :ref:`EcdsConfigDump <envoy_v3_api_msg_admin.v3.EcdsConfigDump>`
// * ``endpoints``: :ref:`EndpointsConfigDump <envoy_v3_api_msg_admin.v3.EndpointsConfigDump>`
// * ``listeners``: :ref:`ListenersConfigDump <envoy_v3_api_msg_admin.v3.ListenersConfigDump>`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ option (udpa.annotations.file_status).package_version_status = FROZEN;
// fragments:
// - header_value_extractor:
// name: X-Route-Selector
// element_separator: ,
// element_separator: ","
// element:
// separator: =
// key: vip
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package envoy.config.accesslog.v3;

import "envoy/config/core/v3/base.proto";
import "envoy/config/route/v3/route_components.proto";
import "envoy/data/accesslog/v3/accesslog.proto";
import "envoy/type/matcher/v3/metadata.proto";
import "envoy/type/v3/percent.proto";

Expand Down Expand Up @@ -43,7 +44,7 @@ message AccessLog {
}
}

// [#next-free-field: 13]
// [#next-free-field: 14]
message AccessLogFilter {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.accesslog.v2.AccessLogFilter";
Expand Down Expand Up @@ -87,6 +88,9 @@ message AccessLogFilter {

// Metadata Filter
MetadataFilter metadata_filter = 12;

// Log Type Filter
LogTypeFilter log_type_filter = 13;
}
}

Expand Down Expand Up @@ -250,6 +254,8 @@ message ResponseFlagFilter {
in: "UPE"
in: "NC"
in: "OM"
in: "DF"
in: "DO"
}
}
}];
Expand Down Expand Up @@ -310,6 +316,17 @@ message MetadataFilter {
google.protobuf.BoolValue match_if_key_not_found = 2;
}

// Filters based on access log type.
message LogTypeFilter {
// Logs only records which their type is one of the types defined in this field.
repeated data.accesslog.v3.AccessLogType types = 1
[(validate.rules).repeated = {items {enum {defined_only: true}}}];

// If this field is set to true, the filter will instead block all records
// with a access log type in types field, and allow all other records.
bool exclude = 2;
}

// Extension filter is statically registered at runtime.
message ExtensionFilter {
option (udpa.annotations.versioning).previous_message_type =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// <config_overview_bootstrap>` for more detail.

// Bootstrap :ref:`configuration overview <config_overview_bootstrap>`.
// [#next-free-field: 38]
// [#next-free-field: 41]
message Bootstrap {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.bootstrap.v2.Bootstrap";
Expand Down Expand Up @@ -101,6 +101,48 @@ message Bootstrap {
core.v3.ApiConfigSource ads_config = 3;
}

message ApplicationLogConfig {
message LogFormat {
oneof log_format {
option (validate.required) = true;

// Flush application logs in JSON format. The configured JSON struct can
// support all the format flags specified in the :option:`--log-format`
// command line options section, except for the ``%v`` and ``%_`` flags.
google.protobuf.Struct json_format = 1;

// Flush application log in a format defined by a string. The text format
// can support all the format flags specified in the :option:`--log-format`
// command line option section.
string text_format = 2;
}
}

// Optional field to set the application logs format. If this field is set, it will override
// the default log format. Setting both this field and :option:`--log-format` command line
// option is not allowed, and will cause a bootstrap error.
LogFormat log_format = 1;
}

message DeferredStatOptions {
// When the flag is enabled, Envoy will lazily initialize a subset of the stats (see below).
// This will save memory and CPU cycles when creating the objects that own these stats, if those
// stats are never referenced throughout the lifetime of the process. However, it will incur additional
// memory overhead for these objects, and a small increase of CPU usage when a at least one of the stats
// is updated for the first time.
// Groups of stats that will be lazily initialized:
// - Cluster traffic stats: a subgroup of the :ref:`cluster statistics <config_cluster_manager_cluster_stats>`
// that are used when requests are routed to the cluster.
bool enable_deferred_creation_stats = 1;
}

message GrpcAsyncClientManagerConfig {
// Optional field to set the expiration time for the cached gRPC client object.
// The minimal value is 5s and the default is 50s.
google.protobuf.Duration max_cached_entry_idle_duration = 1
[(validate.rules).duration = {gte {seconds: 5}}];
}

reserved 10, 11;

reserved "runtime";
Expand Down Expand Up @@ -163,6 +205,9 @@ message Bootstrap {
// Optional set of stats sinks.
repeated metrics.v3.StatsSink stats_sinks = 6;

// Options to control behaviors of deferred creation compatible stats.
DeferredStatOptions deferred_stat_options = 39;

// Configuration for internal processing of stats.
metrics.v3.StatsConfig stats_config = 13;

Expand Down Expand Up @@ -360,6 +405,12 @@ message Bootstrap {
// Envoy only supports ListenerManager for this field and Envoy Mobile
// supports ApiListenerManager.
core.v3.TypedExtensionConfig listener_manager = 37;

// Optional application log configuration.
ApplicationLogConfig application_log_config = 38;

// Optional gRPC async manager config.
GrpcAsyncClientManagerConfig grpc_async_client_manager_config = 40;
}

// Administration interface :ref:`operations documentation
Expand Down Expand Up @@ -397,6 +448,7 @@ message Admin {
}

// Cluster manager :ref:`architecture overview <arch_overview_cluster_manager>`.
// [#next-free-field: 6]
message ClusterManager {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.bootstrap.v2.ClusterManager";
Expand Down Expand Up @@ -437,6 +489,11 @@ message ClusterManager {
// <envoy_v3_api_field_config.core.v3.ApiConfigSource.api_type>` :ref:`GRPC
// <envoy_v3_api_enum_value_config.core.v3.ApiConfigSource.ApiType.GRPC>`.
core.v3.ApiConfigSource load_stats_config = 4;

// Whether the ClusterManager will create clusters on the worker threads
// inline during requests. This will save memory and CPU cycles in cases where
// there are lots of inactive clusters and > 1 worker thread.
bool enable_deferred_cluster_creation = 5;
}

// Allows you to specify different watchdog configs for different subsystems.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import "envoy/config/core/v3/health_check.proto";
import "envoy/config/core/v3/protocol.proto";
import "envoy/config/core/v3/resolver.proto";
import "envoy/config/endpoint/v3/endpoint.proto";
import "envoy/type/metadata/v3/metadata.proto";
import "envoy/type/v3/percent.proto";

import "google/protobuf/any.proto";
Expand Down Expand Up @@ -551,6 +552,10 @@ message Cluster {
// The port to override for the original dst address. This port
// will take precedence over filter state and header override ports
google.protobuf.UInt32Value upstream_port_override = 3 [(validate.rules).uint32 = {lte: 65535}];

// The dynamic metadata key to override destination address.
// First the request metadata is considered, then the connection one.
type.metadata.v3.MetadataKey metadata_key = 4;
}

// Common configuration for all load balancer implementations.
Expand Down Expand Up @@ -719,7 +724,7 @@ message Cluster {
google.protobuf.DoubleValue per_upstream_preconnect_ratio = 1
[(validate.rules).double = {lte: 3.0 gte: 1.0}];

// Indicates how many many streams (rounded up) can be anticipated across a cluster for each
// Indicates how many streams (rounded up) can be anticipated across a cluster for each
// stream, useful for low QPS services. This is currently supported for a subset of
// deterministic non-hash-based load-balancing algorithms (weighted round robin, random).
// Unlike ``per_upstream_preconnect_ratio`` this preconnects across the upstream instances in a
Expand Down Expand Up @@ -1252,4 +1257,19 @@ message TrackClusterStats {
// <config_cluster_manager_cluster_stats_request_response_sizes>` tracking header and body sizes
// of requests and responses will be published.
bool request_response_sizes = 2;

// If true, some stats will be emitted per-endpoint, similar to the stats in admin ``/clusters``
// output.
//
// This does not currently output correct stats during a hot-restart.
//
// This is not currently implemented by all stat sinks.
//
// These stats do not honor filtering or tag extraction rules in :ref:`StatsConfig
// <envoy_v3_api_msg_config.metrics.v3.StatsConfig>` (but fixed-value tags are supported). Admin
// endpoint filtering is supported.
//
// This may not be used at the same time as
// :ref:`load_stats_config <envoy_v3_api_field_config.bootstrap.v3.ClusterManager.load_stats_config>`.
bool per_endpoint_stats = 3;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ syntax = "proto3";

package envoy.config.cluster.v3;

import "envoy/config/core/v3/config_source.proto";

import "google/protobuf/any.proto";

import "udpa/annotations/status.proto";
Expand All @@ -14,8 +16,8 @@ option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;

// [#protodoc-title: Upstream filters]
// Upstream filters apply to the connections to the upstream cluster hosts.
// [#protodoc-title: Upstream network filters]
// Upstream network filters apply to the connections to the upstream cluster hosts.

message Filter {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.cluster.Filter";
Expand All @@ -26,6 +28,13 @@ message Filter {
// Filter specific configuration which depends on the filter being
// instantiated. See the supported filters for further documentation.
// Note that Envoy's :ref:`downstream network
// filters <config_network_filters>` are not valid upstream filters.
// filters <config_network_filters>` are not valid upstream network filters.
// Only one of typed_config or config_discovery can be used.
google.protobuf.Any typed_config = 2;

// Configuration source specifier for an extension configuration discovery
// service. In case of a failure and without the default configuration, the
// listener closes the connections.
// Only one of typed_config or config_discovery can be used.
core.v3.ExtensionConfigSource config_discovery = 3;
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;

// See the :ref:`architecture overview <arch_overview_outlier_detection>` for
// more information on outlier detection.
// [#next-free-field: 23]
// [#next-free-field: 24]
message OutlierDetection {
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.cluster.OutlierDetection";
Expand Down Expand Up @@ -161,4 +161,10 @@ message OutlierDetection {
// See :ref:`max_ejection_time_jitter<envoy_v3_api_field_config.cluster.v3.OutlierDetection.base_ejection_time>`
// Defaults to 0s.
google.protobuf.Duration max_ejection_time_jitter = 22;

// If active health checking is enabled and a host is ejected by outlier detection, a successful active health check
// unejects the host by default and considers it as healthy. Unejection also clears all the outlier detection counters.
// To change this default behavior set this config to ``false`` where active health checking will not uneject the host.
// Defaults to true.
google.protobuf.BoolValue successful_active_health_check_uneject_host = 23;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ syntax = "proto3";

package envoy.config.core.v3;

import "envoy/config/core/v3/extension.proto";
import "envoy/config/core/v3/socket_option.proto";

import "google/protobuf/wrappers.proto";
Expand Down Expand Up @@ -130,7 +131,7 @@ message ExtraSourceAddress {
SocketOptionsOverride socket_options = 2;
}

// [#next-free-field: 6]
// [#next-free-field: 7]
message BindConfig {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.BindConfig";

Expand All @@ -150,20 +151,22 @@ message BindConfig {
// precompiled binaries.
repeated SocketOption socket_options = 3;

// Extra source addresses appended to the address specified in the `source_address`
// field. This enables to specify multiple source addresses. Currently, only one extra
// address can be supported, and the extra address should have a different IP version
// with the address in the `source_address` field. The address which has the same IP
// version with the target host's address IP version will be used as bind address. If more
// than one extra address specified, only the first address matched IP version will be
// returned. If there is no same IP version address found, the address in the `source_address`
// will be returned.
// Extra source addresses appended to the address specified in the ``source_address``
// field. This enables to specify multiple source addresses.
// The source address selection is determined by :ref:`local_address_selector
// <envoy_v3_api_field_config.core.v3.BindConfig.local_address_selector>`.
repeated ExtraSourceAddress extra_source_addresses = 5;

// Deprecated by
// :ref:`extra_source_addresses <envoy_v3_api_field_config.core.v3.BindConfig.extra_source_addresses>`
repeated SocketAddress additional_source_addresses = 4
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];

// Custom local address selector to override the default (i.e.
// :ref:`DefaultLocalAddressSelector
// <envoy_v3_api_msg_config.upstream.local_address_selector.v3.DefaultLocalAddressSelector>`).
// [#extension-category: envoy.upstream.local_address_selector]
TypedExtensionConfig local_address_selector = 6;
}

// Addresses specify either a logical or physical address and port, which are
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -324,8 +324,18 @@ message HeaderValue {
// The same :ref:`format specifier <config_access_log_format>` as used for
// :ref:`HTTP access logging <config_access_log>` applies here, however
// unknown header values are replaced with the empty string instead of ``-``.
// Header value is encoded as string. This does not work for non-utf8 characters.
// Only one of ``value`` or ``raw_value`` can be set.
string value = 2 [
(validate.rules).string = {max_bytes: 16384 well_known_regex: HTTP_HEADER_VALUE strict: false}
(validate.rules).string = {max_bytes: 16384 well_known_regex: HTTP_HEADER_VALUE strict: false},
(udpa.annotations.field_migrate).oneof_promotion = "value_type"
];

// Header value is encoded as bytes which can support non-utf8 characters.
// Only one of ``value`` or ``raw_value`` can be set.
bytes raw_value = 3 [
(validate.rules).bytes = {min_len: 0 max_len: 16384},
(udpa.annotations.field_migrate).oneof_promotion = "value_type"
];
}

Expand All @@ -336,9 +346,12 @@ message HeaderValueOption {

// Describes the supported actions types for header append action.
enum HeaderAppendAction {
// This action will append the specified value to the existing values if the header
// already exists. If the header doesn't exist then this will add the header with
// specified key and value.
// If the header already exists, this action will result in:
//
// - Comma-concatenated for predefined inline headers.
// - Duplicate header added in the ``HeaderMap`` for other headers.
//
// If the header doesn't exist then this will add new header with specified key and value.
APPEND_IF_EXISTS_OR_ADD = 0;

// This action will add the header if it doesn't already exist. If the header
Expand All @@ -349,6 +362,10 @@ message HeaderValueOption {
// the header already exists. If the header doesn't exist then this will add the header
// with specified key and value.
OVERWRITE_IF_EXISTS_OR_ADD = 2;

// This action will overwrite the specified value by discarding any existing values if
// the header already exists. If the header doesn't exist then this will be no-op.
OVERWRITE_IF_EXISTS = 3;
}

// Header name/value pair that this option applies to.
Expand Down
Loading
Loading