Skip to content

Commit

Permalink
xds: Envoy proto sync to 2024-01-24 (#10895)
Browse files Browse the repository at this point in the history
`envoyproxy/envoy`: Sync protos to the latest imported version
envoyproxy/envoy@147e6b9
(commit 2024-01-24, cl/604403196).

Should be a noop, just a routine xDS proto update to make upcoming
RLQS-related imports simpler.
  • Loading branch information
sergiitk authored Feb 6, 2024
1 parent 374dbe9 commit 68334a0
Show file tree
Hide file tree
Showing 41 changed files with 1,124 additions and 165 deletions.
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

0 comments on commit 68334a0

Please sign in to comment.