mirror of https://github.com/grpc/grpc-java.git
xds: Update xDS protos (#9223)
This commit is contained in:
parent
6dbd1d8f58
commit
f8da92e176
|
|
@ -187,7 +187,7 @@
|
|||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner].
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
|
||||
set -e
|
||||
BRANCH=main
|
||||
# import VERSION from one of the google internal CLs
|
||||
VERSION=5d74719102f461bc57e85acdda706e0a8df9b12d
|
||||
# import VERSION from the google internal copybara_version.txt for Envoy
|
||||
VERSION=2f99e0c9f83b6c91b42d215a148ed49ce0f174fd
|
||||
GIT_REPO="https://github.com/envoyproxy/envoy.git"
|
||||
GIT_BASE_DIR=envoy
|
||||
SOURCE_PROTO_BASE_DIR=envoy/api
|
||||
|
|
@ -129,6 +129,7 @@ envoy/extensions/filters/http/fault/v3/fault.proto
|
|||
envoy/extensions/filters/http/rbac/v3/rbac.proto
|
||||
envoy/extensions/filters/http/router/v3/router.proto
|
||||
envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto
|
||||
envoy/extensions/load_balancing_policies/least_request/v3/least_request.proto
|
||||
envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.proto
|
||||
envoy/extensions/load_balancing_policies/round_robin/v3/round_robin.proto
|
||||
envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.proto
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ message ComparisonFilter {
|
|||
Op op = 1 [(validate.rules).enum = {defined_only: true}];
|
||||
|
||||
// Value to compare against.
|
||||
core.v3.RuntimeUInt32 value = 2;
|
||||
core.v3.RuntimeUInt32 value = 2 [(validate.rules).message = {required: true}];
|
||||
}
|
||||
|
||||
// Filters on HTTP response/status code.
|
||||
|
|
|
|||
|
|
@ -131,7 +131,9 @@ message Cluster {
|
|||
// IPv4 family and fallback to a lookup for addresses in the IPv6 family. i.e., the callback
|
||||
// target will only get v6 addresses if there were NO v4 addresses to return.
|
||||
// If ALL is specified, the DNS resolver will perform a lookup for both IPv4 and IPv6 families,
|
||||
// and return all resolved addresses.
|
||||
// and return all resolved addresses. When this is used, Happy Eyeballs will be enabled for
|
||||
// upstream connections. Refer to :ref:`Happy Eyeballs Support <arch_overview_happy_eyeballs>`
|
||||
// for more information.
|
||||
// For cluster types other than
|
||||
// :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>` and
|
||||
// :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`,
|
||||
|
|
|
|||
|
|
@ -336,7 +336,9 @@ message KeepaliveSettings {
|
|||
google.protobuf.Duration interval = 1 [(validate.rules).duration = {gte {nanos: 1000000}}];
|
||||
|
||||
// How long to wait for a response to a keepalive PING. If a response is not received within this
|
||||
// time period, the connection will be aborted.
|
||||
// time period, the connection will be aborted. Note that in order to prevent the influence of
|
||||
// Head-of-line (HOL) blocking the timeout period is extended when *any* frame is received on
|
||||
// the connection, under the assumption that if a frame is received the connection is healthy.
|
||||
google.protobuf.Duration timeout = 2 [(validate.rules).duration = {
|
||||
required: true
|
||||
gte {nanos: 1000000}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|||
|
||||
// Generic socket option message. This would be used to set socket options that
|
||||
// might not exist in upstream kernels or precompiled Envoy binaries.
|
||||
//
|
||||
// For example:
|
||||
//
|
||||
// .. code-block:: json
|
||||
//
|
||||
// {
|
||||
// "description": "support tcp keep alive",
|
||||
// "state": 0,
|
||||
// "level": 1,
|
||||
// "name": 9,
|
||||
// "int_value": 1,
|
||||
// }
|
||||
//
|
||||
// 1 means SOL_SOCKET and 9 means SO_KEEPALIVE on Linux.
|
||||
// With the above configuration, `TCP Keep-Alives <https://www.freesoft.org/CIE/RFC/1122/114.htm>`_
|
||||
// can be enabled in socket with Linux, which can be used in
|
||||
// :ref:`listener's<envoy_v3_api_field_config.listener.v3.Listener.socket_options>` or
|
||||
// :ref:`admin's <envoy_v3_api_field_config.bootstrap.v3.Admin.socket_options>` socket_options etc.
|
||||
//
|
||||
// It should be noted that the name or level may have different values on different platforms.
|
||||
// [#next-free-field: 7]
|
||||
message SocketOption {
|
||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.SocketOption";
|
||||
|
|
|
|||
|
|
@ -106,7 +106,8 @@ message SubstitutionFormatString {
|
|||
//
|
||||
// content_type: "text/html; charset=UTF-8"
|
||||
//
|
||||
string content_type = 4;
|
||||
string content_type = 4
|
||||
[(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
|
||||
|
||||
// Specifies a collection of Formatter plugins that can be called from the access log configuration.
|
||||
// See the formatters extensions documentation for details.
|
||||
|
|
|
|||
|
|
@ -122,9 +122,8 @@ message LedsClusterLocalityConfig {
|
|||
}
|
||||
|
||||
// A group of endpoints belonging to a Locality.
|
||||
// One can have multiple LocalityLbEndpoints for a locality, but this is
|
||||
// generally only done if the different groups need to have different load
|
||||
// balancing weights or different priorities.
|
||||
// One can have multiple LocalityLbEndpoints for a locality, but only if
|
||||
// they have different priorities.
|
||||
// [#next-free-field: 9]
|
||||
message LocalityLbEndpoints {
|
||||
option (udpa.annotations.versioning).previous_message_type =
|
||||
|
|
|
|||
|
|
@ -13,7 +13,9 @@ import "envoy/config/listener/v3/udp_listener_config.proto";
|
|||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/wrappers.proto";
|
||||
|
||||
import "xds/annotations/v3/status.proto";
|
||||
import "xds/core/v3/collection_entry.proto";
|
||||
import "xds/type/matcher/v3/matcher.proto";
|
||||
|
||||
import "envoy/annotations/deprecation.proto";
|
||||
import "udpa/annotations/security.proto";
|
||||
|
|
@ -36,7 +38,7 @@ message ListenerCollection {
|
|||
repeated xds.core.v3.CollectionEntry entries = 1;
|
||||
}
|
||||
|
||||
// [#next-free-field: 32]
|
||||
// [#next-free-field: 33]
|
||||
message Listener {
|
||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.Listener";
|
||||
|
||||
|
|
@ -104,7 +106,8 @@ message Listener {
|
|||
// The address that the listener should listen on. In general, the address must be unique, though
|
||||
// that is governed by the bind rules of the OS. E.g., multiple listeners can listen on port 0 on
|
||||
// Linux as the actual port will be allocated by the OS.
|
||||
core.v3.Address address = 2 [(validate.rules).message = {required: true}];
|
||||
// Required unless *api_listener* or *listener_specifier* is populated.
|
||||
core.v3.Address address = 2;
|
||||
|
||||
// Optional prefix to use on listener stats. If empty, the stats will be rooted at
|
||||
// `listener.<address as string>.`. If non-empty, stats will be rooted at
|
||||
|
|
@ -120,6 +123,25 @@ message Listener {
|
|||
// :ref:`FAQ entry <faq_how_to_setup_sni>`.
|
||||
repeated FilterChain filter_chains = 3;
|
||||
|
||||
// :ref:`Matcher API <arch_overview_matching_listener>` resolving the filter chain name from the
|
||||
// network properties. This matcher is used as a replacement for the filter chain match condition
|
||||
// :ref:`filter_chain_match
|
||||
// <envoy_v3_api_field_config.listener.v3.FilterChain.filter_chain_match>`. If specified, all
|
||||
// :ref:`filter_chains <envoy_v3_api_field_config.listener.v3.Listener.filter_chains>` must have a
|
||||
// non-empty and unique :ref:`name <envoy_v3_api_field_config.listener.v3.FilterChain.name>` field
|
||||
// and not specify :ref:`filter_chain_match
|
||||
// <envoy_v3_api_field_config.listener.v3.FilterChain.filter_chain_match>` field.
|
||||
//
|
||||
// .. note::
|
||||
//
|
||||
// Once matched, each connection is permanently bound to its filter chain.
|
||||
// If the matcher changes but the filter chain remains the same, the
|
||||
// connections bound to the filter chain are not drained. If, however, the
|
||||
// filter chain is removed or structurally modified, then the drain for its
|
||||
// connections is initiated.
|
||||
xds.type.matcher.v3.Matcher filter_chain_matcher = 32
|
||||
[(xds.annotations.v3.field_status).work_in_progress = true];
|
||||
|
||||
// If a connection is redirected using *iptables*, the port on which the proxy
|
||||
// receives it might be different from the original destination address. When this flag is set to
|
||||
// true, the listener hands off redirected connections to the listener associated with the
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ import "google/protobuf/any.proto";
|
|||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/wrappers.proto";
|
||||
|
||||
import "xds/annotations/v3/status.proto";
|
||||
|
||||
import "envoy/annotations/deprecation.proto";
|
||||
import "udpa/annotations/status.proto";
|
||||
import "udpa/annotations/versioning.proto";
|
||||
|
|
@ -258,10 +260,11 @@ message FilterChain {
|
|||
// establishment, the connection is summarily closed.
|
||||
google.protobuf.Duration transport_socket_connect_timeout = 9;
|
||||
|
||||
// [#not-implemented-hide:] The unique name (or empty) by which this filter chain is known. If no
|
||||
// name is provided, Envoy will allocate an internal UUID for the filter chain. If the filter
|
||||
// chain is to be dynamically updated or removed via FCDS a unique name must be provided.
|
||||
string name = 7;
|
||||
// The unique name (or empty) by which this filter chain is known.
|
||||
// Note: :ref:`filter_chain_matcher
|
||||
// <envoy_v3_api_field_config.listener.v3.Listener.filter_chain_matcher>`
|
||||
// requires that filter chains are uniquely named within a listener.
|
||||
string name = 7 [(xds.annotations.v3.field_status).work_in_progress = true];
|
||||
|
||||
// [#not-implemented-hide:] The configuration to specify whether the filter chain will be built on-demand.
|
||||
// If this field is not empty, the filter chain will be built on-demand.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ package envoy.config.route.v3;
|
|||
|
||||
import "envoy/config/core/v3/base.proto";
|
||||
import "envoy/config/core/v3/config_source.proto";
|
||||
import "envoy/config/core/v3/extension.proto";
|
||||
import "envoy/config/route/v3/route_components.proto";
|
||||
|
||||
import "google/protobuf/wrappers.proto";
|
||||
|
|
@ -23,7 +22,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|||
// * Routing :ref:`architecture overview <arch_overview_http_routing>`
|
||||
// * HTTP :ref:`router filter <config_http_filters_router>`
|
||||
|
||||
// [#next-free-field: 14]
|
||||
// [#next-free-field: 15]
|
||||
message RouteConfiguration {
|
||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.RouteConfiguration";
|
||||
|
||||
|
|
@ -122,28 +121,20 @@ message RouteConfiguration {
|
|||
//
|
||||
google.protobuf.UInt32Value max_direct_response_body_size_bytes = 11;
|
||||
|
||||
// [#not-implemented-hide:]
|
||||
// A list of plugins and their configurations which may be used by a
|
||||
// :ref:`envoy_v3_api_field_config.route.v3.RouteAction.cluster_specifier_plugin`
|
||||
// :ref:`cluster specifier plugin name <envoy_v3_api_field_config.route.v3.RouteAction.cluster_specifier_plugin>`
|
||||
// within the route. All *extension.name* fields in this list must be unique.
|
||||
repeated ClusterSpecifierPlugin cluster_specifier_plugins = 12;
|
||||
|
||||
// Specify a set of default request mirroring policies which apply to all routes under its virtual hosts.
|
||||
// Note that policies are not merged, the most specific non-empty one becomes the mirror policies.
|
||||
repeated RouteAction.RequestMirrorPolicy request_mirror_policies = 13;
|
||||
}
|
||||
|
||||
// Configuration for a cluster specifier plugin.
|
||||
message ClusterSpecifierPlugin {
|
||||
// The name of the plugin and its opaque configuration.
|
||||
core.v3.TypedExtensionConfig extension = 1;
|
||||
|
||||
// If is_optional is not set and the plugin defined by this message is not
|
||||
// a supported type, the containing resource is NACKed. If is_optional is
|
||||
// set, the resource would not be NACKed for this reason. In this case,
|
||||
// routes referencing this plugin's name would not be treated as an illegal
|
||||
// configuration, but would result in a failure if the route is selected.
|
||||
bool is_optional = 2;
|
||||
// By default, port in :authority header (if any) is used in host matching.
|
||||
// With this option enabled, Envoy will ignore the port number in the :authority header (if any) when picking VirtualHost.
|
||||
// NOTE: this option will not strip the port number (if any) contained in route config
|
||||
// :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`.domains field.
|
||||
bool ignore_port_in_host_matching = 14;
|
||||
}
|
||||
|
||||
message Vhds {
|
||||
|
|
|
|||
|
|
@ -453,6 +453,19 @@ message WeightedCluster {
|
|||
}
|
||||
}
|
||||
|
||||
// Configuration for a cluster specifier plugin.
|
||||
message ClusterSpecifierPlugin {
|
||||
// The name of the plugin and its opaque configuration.
|
||||
core.v3.TypedExtensionConfig extension = 1 [(validate.rules).message = {required: true}];
|
||||
|
||||
// If is_optional is not set or is set to false and the plugin defined by this message is not a
|
||||
// supported type, the containing resource is NACKed. If is_optional is set to true, the resource
|
||||
// would not be NACKed for this reason. In this case, routes referencing this plugin's name would
|
||||
// not be treated as an illegal configuration, but would result in a failure if the route is
|
||||
// selected.
|
||||
bool is_optional = 2;
|
||||
}
|
||||
|
||||
// [#next-free-field: 15]
|
||||
message RouteMatch {
|
||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RouteMatch";
|
||||
|
|
@ -643,7 +656,7 @@ message CorsPolicy {
|
|||
core.v3.RuntimeFractionalPercent shadow_enabled = 10;
|
||||
}
|
||||
|
||||
// [#next-free-field: 39]
|
||||
// [#next-free-field: 40]
|
||||
message RouteAction {
|
||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RouteAction";
|
||||
|
||||
|
|
@ -675,6 +688,7 @@ message RouteAction {
|
|||
// .. note::
|
||||
//
|
||||
// Shadowing will not be triggered if the primary cluster does not exist.
|
||||
// [#next-free-field: 6]
|
||||
message RequestMirrorPolicy {
|
||||
option (udpa.annotations.versioning).previous_message_type =
|
||||
"envoy.api.v2.route.RouteAction.RequestMirrorPolicy";
|
||||
|
|
@ -683,9 +697,30 @@ message RouteAction {
|
|||
|
||||
reserved "runtime_key";
|
||||
|
||||
// Only one of *cluster* and *cluster_header* can be specified.
|
||||
// [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1}]
|
||||
// Specifies the cluster that requests will be mirrored to. The cluster must
|
||||
// exist in the cluster manager configuration.
|
||||
string cluster = 1 [(validate.rules).string = {min_len: 1}];
|
||||
string cluster = 1 [(udpa.annotations.field_migrate).oneof_promotion = "cluster_specifier"];
|
||||
|
||||
// Only one of *cluster* and *cluster_header* can be specified.
|
||||
// Envoy will determine the cluster to route to by reading the value of the
|
||||
// HTTP header named by cluster_header from the request headers. Only the first value in header is used,
|
||||
// and no shadow request will happen if the value is not found in headers. Envoy will not wait for
|
||||
// the shadow cluster to respond before returning the response from the primary cluster.
|
||||
//
|
||||
// .. attention::
|
||||
//
|
||||
// Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1
|
||||
// *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead.
|
||||
//
|
||||
// .. note::
|
||||
//
|
||||
// If the header appears multiple times only the first value is used.
|
||||
string cluster_header = 5 [
|
||||
(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME strict: false},
|
||||
(udpa.annotations.field_migrate).oneof_promotion = "cluster_specifier"
|
||||
];
|
||||
|
||||
// If not specified, all requests to the target cluster will be mirrored.
|
||||
//
|
||||
|
|
@ -920,13 +955,15 @@ message RouteAction {
|
|||
// for additional documentation.
|
||||
WeightedCluster weighted_clusters = 3;
|
||||
|
||||
// [#not-implemented-hide:]
|
||||
// Name of the cluster specifier plugin to use to determine the cluster for
|
||||
// requests on this route. The plugin name must be defined in the associated
|
||||
// :ref:`envoy_v3_api_field_config.route.v3.RouteConfiguration.cluster_specifier_plugins`
|
||||
// in the
|
||||
// :ref:`envoy_v3_api_field_config.core.v3.TypedExtensionConfig.name` field.
|
||||
// Name of the cluster specifier plugin to use to determine the cluster for requests on this route.
|
||||
// The cluster specifier plugin name must be defined in the associated
|
||||
// :ref:`cluster specifier plugins <envoy_v3_api_field_config.route.v3.RouteConfiguration.cluster_specifier_plugins>`
|
||||
// in the :ref:`name <envoy_v3_api_field_config.core.v3.TypedExtensionConfig.name>` field.
|
||||
string cluster_specifier_plugin = 37;
|
||||
|
||||
// Custom cluster specifier plugin configuration to use to determine the cluster for requests
|
||||
// on this route.
|
||||
ClusterSpecifierPlugin inline_cluster_specifier_plugin = 39;
|
||||
}
|
||||
|
||||
// The HTTP status code to use when configured cluster is not found.
|
||||
|
|
@ -1711,7 +1748,7 @@ message VirtualCluster {
|
|||
message RateLimit {
|
||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RateLimit";
|
||||
|
||||
// [#next-free-field: 10]
|
||||
// [#next-free-field: 11]
|
||||
message Action {
|
||||
option (udpa.annotations.versioning).previous_message_type =
|
||||
"envoy.api.v2.route.RateLimit.Action";
|
||||
|
|
@ -1785,6 +1822,28 @@ message RateLimit {
|
|||
"envoy.api.v2.route.RateLimit.Action.RemoteAddress";
|
||||
}
|
||||
|
||||
// The following descriptor entry is appended to the descriptor and is populated using the
|
||||
// masked address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`:
|
||||
//
|
||||
// .. code-block:: cpp
|
||||
//
|
||||
// ("masked_remote_address", "<masked address from x-forwarded-for>")
|
||||
message MaskedRemoteAddress {
|
||||
// Length of prefix mask len for IPv4 (e.g. 0, 32).
|
||||
// Defaults to 32 when unset.
|
||||
// For example, trusted address from x-forwarded-for is `192.168.1.1`,
|
||||
// the descriptor entry is ("masked_remote_address", "192.168.1.1/32");
|
||||
// if mask len is 24, the descriptor entry is ("masked_remote_address", "192.168.1.0/24").
|
||||
google.protobuf.UInt32Value v4_prefix_mask_len = 1 [(validate.rules).uint32 = {lte: 32}];
|
||||
|
||||
// Length of prefix mask len for IPv6 (e.g. 0, 128).
|
||||
// Defaults to 128 when unset.
|
||||
// For example, trusted address from x-forwarded-for is `2001:abcd:ef01:2345:6789:abcd:ef01:234`,
|
||||
// the descriptor entry is ("masked_remote_address", "2001:abcd:ef01:2345:6789:abcd:ef01:234/128");
|
||||
// if mask len is 64, the descriptor entry is ("masked_remote_address", "2001:abcd:ef01:2345::/64").
|
||||
google.protobuf.UInt32Value v6_prefix_mask_len = 2 [(validate.rules).uint32 = {lte: 128}];
|
||||
}
|
||||
|
||||
// The following descriptor entry is appended to the descriptor:
|
||||
//
|
||||
// .. code-block:: cpp
|
||||
|
|
@ -1917,8 +1976,17 @@ message RateLimit {
|
|||
MetaData metadata = 8;
|
||||
|
||||
// Rate limit descriptor extension. See the rate limit descriptor extensions documentation.
|
||||
//
|
||||
// :ref:`HTTP matching input functions <arch_overview_matching_api>` are
|
||||
// permitted as descriptor extensions. The input functions are only
|
||||
// looked up if there is no rate limit descriptor extension matching
|
||||
// the type URL.
|
||||
//
|
||||
// [#extension-category: envoy.rate_limit_descriptors]
|
||||
core.v3.TypedExtensionConfig extension = 9;
|
||||
|
||||
// Rate limit on masked remote address.
|
||||
MaskedRemoteAddress masked_remote_address = 10;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,58 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package envoy.extensions.load_balancing_policies.least_request.v3;
|
||||
|
||||
import "envoy/config/cluster/v3/cluster.proto";
|
||||
import "envoy/config/core/v3/base.proto";
|
||||
|
||||
import "google/protobuf/wrappers.proto";
|
||||
|
||||
import "udpa/annotations/status.proto";
|
||||
import "validate/validate.proto";
|
||||
|
||||
option java_package = "io.envoyproxy.envoy.extensions.load_balancing_policies.least_request.v3";
|
||||
option java_outer_classname = "LeastRequestProto";
|
||||
option java_multiple_files = true;
|
||||
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/least_request/v3;least_requestv3";
|
||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||
|
||||
// [#protodoc-title: Least Request Load Balancing Policy]
|
||||
|
||||
// This configuration allows the built-in LEAST_REQUEST LB policy to be configured via the LB policy
|
||||
// extension point. See the :ref:`load balancing architecture overview
|
||||
// <arch_overview_load_balancing_types>` for more information.
|
||||
// [#extension: envoy.clusters.lb_policy]
|
||||
message LeastRequest {
|
||||
// The number of random healthy hosts from which the host with the fewest active requests will
|
||||
// be chosen. Defaults to 2 so that we perform two-choice selection if the field is not set.
|
||||
google.protobuf.UInt32Value choice_count = 1 [(validate.rules).uint32 = {gte: 2}];
|
||||
|
||||
// The following formula is used to calculate the dynamic weights when hosts have different load
|
||||
// balancing weights:
|
||||
//
|
||||
// `weight = load_balancing_weight / (active_requests + 1)^active_request_bias`
|
||||
//
|
||||
// The larger the active request bias is, the more aggressively active requests will lower the
|
||||
// effective weight when all host weights are not equal.
|
||||
//
|
||||
// `active_request_bias` must be greater than or equal to 0.0.
|
||||
//
|
||||
// When `active_request_bias == 0.0` the Least Request Load Balancer doesn't consider the number
|
||||
// of active requests at the time it picks a host and behaves like the Round Robin Load
|
||||
// Balancer.
|
||||
//
|
||||
// When `active_request_bias > 0.0` the Least Request Load Balancer scales the load balancing
|
||||
// weight by the number of active requests at the time it does a pick.
|
||||
//
|
||||
// The value is cached for performance reasons and refreshed whenever one of the Load Balancer's
|
||||
// host sets changes, e.g., whenever there is a host membership update or a host load balancing
|
||||
// weight change.
|
||||
//
|
||||
// .. note::
|
||||
// This setting only takes effect if all host weights are not equal.
|
||||
config.core.v3.RuntimeDouble active_request_bias = 2;
|
||||
|
||||
// Configuration for slow start mode.
|
||||
// If this configuration is not set, slow start will not be not enabled.
|
||||
config.cluster.v3.Cluster.SlowStartConfig slow_start_config = 3;
|
||||
}
|
||||
|
|
@ -57,6 +57,8 @@ message TlsParameters {
|
|||
//
|
||||
// If not specified, a default list will be used. Defaults are different for server (downstream) and
|
||||
// client (upstream) TLS configurations.
|
||||
// Defaults will change over time in response to security considerations; If you care, configure
|
||||
// it instead of using the default.
|
||||
//
|
||||
// In non-FIPS builds, the default server cipher list is:
|
||||
//
|
||||
|
|
@ -64,16 +66,8 @@ message TlsParameters {
|
|||
//
|
||||
// [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
|
||||
// [ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]
|
||||
// ECDHE-ECDSA-AES128-SHA
|
||||
// ECDHE-RSA-AES128-SHA
|
||||
// AES128-GCM-SHA256
|
||||
// AES128-SHA
|
||||
// ECDHE-ECDSA-AES256-GCM-SHA384
|
||||
// ECDHE-RSA-AES256-GCM-SHA384
|
||||
// ECDHE-ECDSA-AES256-SHA
|
||||
// ECDHE-RSA-AES256-SHA
|
||||
// AES256-GCM-SHA384
|
||||
// AES256-SHA
|
||||
//
|
||||
// In builds using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`, the default server cipher list is:
|
||||
//
|
||||
|
|
@ -81,16 +75,8 @@ message TlsParameters {
|
|||
//
|
||||
// ECDHE-ECDSA-AES128-GCM-SHA256
|
||||
// ECDHE-RSA-AES128-GCM-SHA256
|
||||
// ECDHE-ECDSA-AES128-SHA
|
||||
// ECDHE-RSA-AES128-SHA
|
||||
// AES128-GCM-SHA256
|
||||
// AES128-SHA
|
||||
// ECDHE-ECDSA-AES256-GCM-SHA384
|
||||
// ECDHE-RSA-AES256-GCM-SHA384
|
||||
// ECDHE-ECDSA-AES256-SHA
|
||||
// ECDHE-RSA-AES256-SHA
|
||||
// AES256-GCM-SHA384
|
||||
// AES256-SHA
|
||||
//
|
||||
// In non-FIPS builds, the default client cipher list is:
|
||||
//
|
||||
|
|
@ -448,8 +434,12 @@ message CertificateValidationContext {
|
|||
// <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.trusted_ca>`.
|
||||
repeated SubjectAltNameMatcher match_typed_subject_alt_names = 15;
|
||||
|
||||
// This field is deprecated in favor of ref:`match_typed_subject_alt_names
|
||||
// This field is deprecated in favor of
|
||||
// :ref:`match_typed_subject_alt_names
|
||||
// <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.match_typed_subject_alt_names>`.
|
||||
// Note that if both this field and :ref:`match_typed_subject_alt_names
|
||||
// <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.match_typed_subject_alt_names>`
|
||||
// are specified, the former (deprecated field) is ignored.
|
||||
repeated type.matcher.v3.StringMatcher match_subject_alt_names = 9
|
||||
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import "google/rpc/status.proto";
|
|||
|
||||
import "udpa/annotations/status.proto";
|
||||
import "udpa/annotations/versioning.proto";
|
||||
import "validate/validate.proto";
|
||||
|
||||
option java_package = "io.envoyproxy.envoy.service.discovery.v3";
|
||||
option java_outer_classname = "DiscoveryProto";
|
||||
|
|
@ -19,9 +20,30 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
|||
|
||||
// [#protodoc-title: Common discovery API components]
|
||||
|
||||
// Specifies a resource to be subscribed to.
|
||||
message ResourceLocator {
|
||||
// The resource name to subscribe to.
|
||||
string name = 1;
|
||||
|
||||
// A set of dynamic parameters used to match against the dynamic parameter
|
||||
// constraints on the resource. This allows clients to select between
|
||||
// multiple variants of the same resource.
|
||||
map<string, string> dynamic_parameters = 2;
|
||||
}
|
||||
|
||||
// Specifies a concrete resource name.
|
||||
message ResourceName {
|
||||
// The name of the resource.
|
||||
string name = 1;
|
||||
|
||||
// Dynamic parameter constraints associated with this resource. To be used by client-side caches
|
||||
// (including xDS proxies) when matching subscribed resource locators.
|
||||
DynamicParameterConstraints dynamic_parameter_constraints = 2;
|
||||
}
|
||||
|
||||
// A DiscoveryRequest requests a set of versioned resources of the same type for
|
||||
// a given Envoy node on some API.
|
||||
// [#next-free-field: 7]
|
||||
// [#next-free-field: 8]
|
||||
message DiscoveryRequest {
|
||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.DiscoveryRequest";
|
||||
|
||||
|
|
@ -45,6 +67,15 @@ message DiscoveryRequest {
|
|||
// which will be explicitly enumerated in resource_names.
|
||||
repeated string resource_names = 3;
|
||||
|
||||
// [#not-implemented-hide:]
|
||||
// Alternative to *resource_names* field that allows specifying dynamic
|
||||
// parameters along with each resource name. Clients that populate this
|
||||
// field must be able to handle responses from the server where resources
|
||||
// are wrapped in a Resource message.
|
||||
// Note that it is legal for a request to have some resources listed
|
||||
// in *resource_names* and others in *resource_locators*.
|
||||
repeated ResourceLocator resource_locators = 7;
|
||||
|
||||
// Type of the resource that is being requested, e.g.
|
||||
// "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment". This is implicit
|
||||
// in requests made via singleton xDS APIs such as CDS, LDS, etc. but is
|
||||
|
|
@ -141,7 +172,7 @@ message DiscoveryResponse {
|
|||
// In particular, initial_resource_versions being sent at the "start" of every
|
||||
// gRPC stream actually entails a message for each type_url, each with its own
|
||||
// initial_resource_versions.
|
||||
// [#next-free-field: 8]
|
||||
// [#next-free-field: 10]
|
||||
message DeltaDiscoveryRequest {
|
||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.DeltaDiscoveryRequest";
|
||||
|
||||
|
|
@ -180,6 +211,20 @@ message DeltaDiscoveryRequest {
|
|||
// A list of Resource names to remove from the list of tracked resources.
|
||||
repeated string resource_names_unsubscribe = 4;
|
||||
|
||||
// [#not-implemented-hide:]
|
||||
// Alternative to *resource_names_subscribe* field that allows specifying dynamic parameters
|
||||
// along with each resource name.
|
||||
// Note that it is legal for a request to have some resources listed
|
||||
// in *resource_names_subscribe* and others in *resource_locators_subscribe*.
|
||||
repeated ResourceLocator resource_locators_subscribe = 8;
|
||||
|
||||
// [#not-implemented-hide:]
|
||||
// Alternative to *resource_names_unsubscribe* field that allows specifying dynamic parameters
|
||||
// along with each resource name.
|
||||
// Note that it is legal for a request to have some resources listed
|
||||
// in *resource_names_unsubscribe* and others in *resource_locators_unsubscribe*.
|
||||
repeated ResourceLocator resource_locators_unsubscribe = 9;
|
||||
|
||||
// Informs the server of the versions of the resources the xDS client knows of, to enable the
|
||||
// client to continue the same logical xDS session even in the face of gRPC stream reconnection.
|
||||
// It will not be populated: [1] in the very first stream of a session, since the client will
|
||||
|
|
@ -202,7 +247,7 @@ message DeltaDiscoveryRequest {
|
|||
google.rpc.Status error_detail = 7;
|
||||
}
|
||||
|
||||
// [#next-free-field: 8]
|
||||
// [#next-free-field: 9]
|
||||
message DeltaDiscoveryResponse {
|
||||
option (udpa.annotations.versioning).previous_message_type =
|
||||
"envoy.api.v2.DeltaDiscoveryResponse";
|
||||
|
|
@ -224,6 +269,11 @@ message DeltaDiscoveryResponse {
|
|||
// Removed resources for missing resources can be ignored.
|
||||
repeated string removed_resources = 6;
|
||||
|
||||
// Alternative to removed_resources that allows specifying which variant of
|
||||
// a resource is being removed. This variant must be used for any resource
|
||||
// for which dynamic parameter constraints were sent to the client.
|
||||
repeated ResourceName removed_resource_names = 8;
|
||||
|
||||
// The nonce provides a way for DeltaDiscoveryRequests to uniquely
|
||||
// reference a DeltaDiscoveryResponse when (N)ACKing. The nonce is required.
|
||||
string nonce = 5;
|
||||
|
|
@ -233,7 +283,56 @@ message DeltaDiscoveryResponse {
|
|||
config.core.v3.ControlPlane control_plane = 7;
|
||||
}
|
||||
|
||||
// [#next-free-field: 8]
|
||||
// A set of dynamic parameter constraints associated with a variant of an individual xDS resource.
|
||||
// These constraints determine whether the resource matches a subscription based on the set of
|
||||
// dynamic parameters in the subscription, as specified in the
|
||||
// :ref:`ResourceLocator.dynamic_parameters<envoy_v3_api_field_service.discovery.v3.ResourceLocator.dynamic_parameters>`
|
||||
// field. This allows xDS implementations (clients, servers, and caching proxies) to determine
|
||||
// which variant of a resource is appropriate for a given client.
|
||||
message DynamicParameterConstraints {
|
||||
// A single constraint for a given key.
|
||||
message SingleConstraint {
|
||||
message Exists {
|
||||
}
|
||||
|
||||
// The key to match against.
|
||||
string key = 1;
|
||||
|
||||
oneof constraint_type {
|
||||
option (validate.required) = true;
|
||||
|
||||
// Matches this exact value.
|
||||
string value = 2;
|
||||
|
||||
// Key is present (matches any value except for the key being absent).
|
||||
// This allows setting a default constraint for clients that do
|
||||
// not send a key at all, while there may be other clients that need
|
||||
// special configuration based on that key.
|
||||
Exists exists = 3;
|
||||
}
|
||||
}
|
||||
|
||||
message ConstraintList {
|
||||
repeated DynamicParameterConstraints constraints = 1;
|
||||
}
|
||||
|
||||
oneof type {
|
||||
// A single constraint to evaluate.
|
||||
SingleConstraint constraint = 1;
|
||||
|
||||
// A list of constraints that match if any one constraint in the list
|
||||
// matches.
|
||||
ConstraintList or_constraints = 2;
|
||||
|
||||
// A list of constraints that must all match.
|
||||
ConstraintList and_constraints = 3;
|
||||
|
||||
// The inverse (NOT) of a set of constraints.
|
||||
DynamicParameterConstraints not_constraints = 4;
|
||||
}
|
||||
}
|
||||
|
||||
// [#next-free-field: 9]
|
||||
message Resource {
|
||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.Resource";
|
||||
|
||||
|
|
@ -247,8 +346,15 @@ message Resource {
|
|||
}
|
||||
|
||||
// The resource's name, to distinguish it from others of the same type of resource.
|
||||
// Only one of *name* or *resource_name* may be set.
|
||||
string name = 3;
|
||||
|
||||
// Alternative to the *name* field, to be used when the server supports
|
||||
// multiple variants of the named resource that are differentiated by
|
||||
// dynamic parameter constraints.
|
||||
// Only one of *name* or *resource_name* may be set.
|
||||
ResourceName resource_name = 8;
|
||||
|
||||
// The aliases are a list of other names that this resource can go by.
|
||||
repeated string aliases = 4;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue