Skip to content

Bump Envoy API to 1.29 #9

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

Merged
merged 1 commit into from
Jun 25, 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
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
version=1.24.0
version=1.29.0
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
6 changes: 6 additions & 0 deletions src/main/proto/envoy/admin/v3/config_dump.proto
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ 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>`
// * ``scoped_routes``: :ref:`ScopedRoutesConfigDump <envoy_v3_api_msg_admin.v3.ScopedRoutesConfigDump>`
Expand All @@ -40,6 +43,9 @@ message ConfigDump {
//
// EDS Configuration will only be dumped by using parameter ``?include_eds``
//
// Currently ECDS is supported in HTTP and listener filters. Note, ECDS configuration for
// either HTTP or listener filter will only be dumped if it is actually configured.
//
// You can filter output with the resource and mask query parameters.
// See :ref:`/config_dump?resource={} <operations_admin_interface_config_dump_by_resource>`,
// :ref:`/config_dump?mask={} <operations_admin_interface_config_dump_by_mask>`,
Expand Down
40 changes: 40 additions & 0 deletions src/main/proto/envoy/admin/v3/config_dump_shared.proto
Original file line number Diff line number Diff line change
Expand Up @@ -370,3 +370,43 @@ message EndpointsConfigDump {
// The dynamically loaded endpoint configs.
repeated DynamicEndpointConfig dynamic_endpoint_configs = 3;
}

// Envoy's ECDS service fills this message with all currently extension
// configuration. Extension configuration information can be used to recreate
// an Envoy ECDS listener and HTTP filters as static filters or by returning
// them in ECDS response.
message EcdsConfigDump {
option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v2alpha.EcdsConfigDump";

// [#next-free-field: 6]
message EcdsFilterConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.admin.v2alpha.EcdsConfigDump.EcdsFilterConfig";

// This is the per-resource version information. This version is currently
// taken from the :ref:`version_info
// <envoy_v3_api_field_service.discovery.v3.DiscoveryResponse.version_info>`
// field at the time that the ECDS filter was loaded.
string version_info = 1;

// The ECDS filter config.
google.protobuf.Any ecds_filter = 2;

// The timestamp when the ECDS filter was last updated.
google.protobuf.Timestamp last_updated = 3;

// Set if the last update failed, cleared after the next successful update.
// The ``error_state`` field contains the rejected version of this
// particular resource along with the reason and timestamp. For successfully
// updated or acknowledged resource, this field should be empty.
// [#not-implemented-hide:]
UpdateFailureState error_state = 4;

// The client status of this resource.
// [#not-implemented-hide:]
ClientResourceStatus client_status = 5;
}

// The ECDS filter configs.
repeated EcdsFilterConfig ecds_filters = 1;
}
1 change: 0 additions & 1 deletion src/main/proto/envoy/api/v2/cds.proto
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "CdsProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option java_generic_services = true;
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.cluster.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;

Expand Down
2 changes: 1 addition & 1 deletion src/main/proto/envoy/api/v2/core/grpc_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ message GrpcService {
message StsService {
// URI of the token exchange service that handles token exchange requests.
// [#comment:TODO(asraa): Add URI validation when implemented. Tracked by
// https://github.com/envoyproxy/protoc-gen-validate/issues/303]
// https://github.com/bufbuild/protoc-gen-validate/issues/303]
string token_exchange_service_uri = 1;

// Location of the target service or resource where the client
Expand Down
1 change: 0 additions & 1 deletion src/main/proto/envoy/api/v2/eds.proto
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "EdsProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option java_generic_services = true;
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.endpoint.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;

Expand Down
1 change: 0 additions & 1 deletion src/main/proto/envoy/api/v2/lds.proto
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "LdsProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option java_generic_services = true;
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.listener.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;

Expand Down
1 change: 0 additions & 1 deletion src/main/proto/envoy/api/v2/rds.proto
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "RdsProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option java_generic_services = true;
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.route.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;

Expand Down
2 changes: 1 addition & 1 deletion src/main/proto/envoy/api/v2/route/route_components.proto
Original file line number Diff line number Diff line change
Expand Up @@ -1265,7 +1265,7 @@ message Tracing {
// Target percentage of requests managed by this HTTP connection manager that will be force
// traced if the :ref:`x-client-trace-id <config_http_conn_man_headers_x-client-trace-id>`
// header is set. This field is a direct analog for the runtime variable
// 'tracing.client_sampling' in the :ref:`HTTP Connection Manager
// 'tracing.client_enabled' in the :ref:`HTTP Connection Manager
// <config_http_conn_man_runtime>`.
// Default: 100%
type.FractionalPercent client_sampling = 1;
Expand Down
2 changes: 1 addition & 1 deletion src/main/proto/envoy/api/v2/scoped_route.proto
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
1 change: 0 additions & 1 deletion src/main/proto/envoy/api/v2/srds.proto
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "SrdsProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option java_generic_services = true;
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.route.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;

Expand Down
24 changes: 22 additions & 2 deletions src/main/proto/envoy/config/accesslog/v3/accesslog.proto
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 @@ -122,7 +126,10 @@ message StatusCodeFilter {
ComparisonFilter comparison = 1 [(validate.rules).message = {required: true}];
}

// Filters on total request duration in milliseconds.
// Filters based on the duration of the request or stream, in milliseconds.
// For end of stream access logs, the total duration of the stream will be used.
// For :ref:`periodic access logs<arch_overview_access_log_periodic>`,
// the duration of the stream at the time of log recording will be used.
message DurationFilter {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.accesslog.v2.DurationFilter";
Expand Down Expand Up @@ -247,6 +254,8 @@ message ResponseFlagFilter {
in: "UPE"
in: "NC"
in: "OM"
in: "DF"
in: "DO"
}
}
}];
Expand Down Expand Up @@ -307,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
77 changes: 76 additions & 1 deletion src/main/proto/envoy/config/bootstrap/v3/bootstrap.proto
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: 36]
// [#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 @@ -342,6 +387,30 @@ message Bootstrap {
// TODO(abeyad): Add public-facing documentation.
// [#not-implemented-hide:]
core.v3.TypedExtensionConfig xds_delegate_extension = 35;

// Optional XdsConfigTracker configuration, which allows tracking xDS responses in external components,
// e.g., external tracer or monitor. It provides the process point when receive, ingest, or fail to
// process xDS resources and messages. If a value is not specified, no XdsConfigTracker will be used.
//
// .. note::
//
// There are no in-repo extensions currently, and the :repo:`XdsConfigTracker <envoy/config/xds_config_tracker.h>`
// interface should be implemented before using.
// See :repo:`xds_config_tracker_integration_test <test/integration/xds_config_tracker_integration_test.cc>`
// for an example usage of the interface.
core.v3.TypedExtensionConfig xds_config_tracker_extension = 36;

// [#not-implemented-hide:]
// This controls the type of listener manager configured for Envoy. Currently
// 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 @@ -379,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 @@ -419,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
27 changes: 25 additions & 2 deletions src/main/proto/envoy/config/cluster/v3/cluster.proto
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 @@ -525,6 +526,7 @@ message Cluster {
// Specific configuration for the
// :ref:`Original Destination <arch_overview_load_balancing_types_original_destination>`
// load balancing policy.
// [#extension: envoy.clusters.original_dst]
message OriginalDstLbConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.Cluster.OriginalDstLbConfig";
Expand All @@ -550,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 @@ -718,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 @@ -1009,7 +1015,8 @@ message Cluster {

// Optional configuration for having cluster readiness block on warm-up. Currently, only applicable for
// :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`,
// or :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`.
// or :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`,
// or :ref:`Redis Cluster<arch_overview_redis>`.
// If true, cluster readiness blocks on warm-up. If false, the cluster will complete
// initialization whether or not warm-up has completed. Defaults to true.
google.protobuf.BoolValue wait_for_warm_on_init = 54;
Expand Down Expand Up @@ -1215,6 +1222,7 @@ message LoadBalancingPolicy {

reserved "config", "name", "typed_config";

// [#extension-category: envoy.load_balancing_policies]
core.v3.TypedExtensionConfig typed_extension_config = 4;
}

Expand Down Expand Up @@ -1249,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;
}
Loading
Loading