diff --git a/.github/workflows/execute-tests-and-promote.yml b/.github/workflows/execute-tests-and-promote.yml
index dd50c5ee2b..708739f895 100644
--- a/.github/workflows/execute-tests-and-promote.yml
+++ b/.github/workflows/execute-tests-and-promote.yml
@@ -135,11 +135,6 @@ jobs:
matrix:
test:
- integration
- - kat-envoy2-1-of-5
- - kat-envoy2-2-of-5
- - kat-envoy2-3-of-5
- - kat-envoy2-4-of-5
- - kat-envoy2-5-of-5
- kat-envoy3-1-of-5
- kat-envoy3-2-of-5
- kat-envoy3-3-of-5
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f9aa48df8f..94cdde7056 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -77,6 +77,11 @@ it will be removed; but as it won't be user-visible this isn't considered a brea
### Emissary-ingress and Ambassador Edge Stack
+- Change: The envoy version included in Emissary-ingress has been upgraded from 1.17 to latest patch
+ release of 1.22. This provides $produceName$ with the latest security patches, performances
+ enhancments, and features offered by the envoy proxy. One notable change that will effect users is
+ the removal of support for V2 tranport protocol. See below for more information.
+
- Change: Emissary-ingress can no longer be made to configure Envoy using the v2 xDS configuration
API; it now always uses the v3 xDS API to configure Envoy. This change should be mostly invisible
to users, with one notable exception: It removes support for `regex_type: unsafe`.
@@ -88,9 +93,9 @@ it will be removed; but as it won't be user-visible this isn't considered a brea
Users who rely on the specific
ECMAScript Regex syntax will need to rewrite their regular expressions with RE2 syntax before
upgrading to Emissary-ingress 3.0.0.
- Note that the `AMBASSADOR_ENVOY_API_VERSION` environment
- variable is now a misnomer, as it no longer configures which xDS API version is used, but it still
- affects what the default protocol used for a `TracingService` that points at Zipkin.
+ As the xDS version is no longer configurable and the range of
+ supported Zipkin protocols is reduced (see below), the AMBASSADOR_ENVOY_API_VERSION environment
+ variable has been removed.
- Change: With the ugprade to Envoy 1.22, Emissary-ingress no longer supports the V2 transport
protocol. The `AuthService`, `LogService` and the `RateLimitService` will only support the v3
@@ -99,6 +104,12 @@ it will be removed; but as it won't be user-visible this isn't considered a brea
from a previous version you will want to set it to "v3" and ensure it is working before upgrading
to Emissary-ingress 3.Y.
+- Change: With the upgrade to Envoy 1.22, the `zipkin` driver for the `TraceService` no longer
+ supports setting the `collector_endpoint_version: HTTP_JSON_V1`. This was removed in Envoy 1.20 -
+ .
+ The new default will be `collector_endpoint_version: HTTP_JSON`, regardless of the
+ `AMBASSADOR_ENVOY_API_VERSION` environment variable.
+
- Change: In the standard published `.yaml` files, now included is a `Module` resource that disables
the `/ambassador/v0/` → `127.0.0.1:8878` synthetic mapping. We have long recommended to turn
this off for production use; it is now off in the standard YAML. The associated Helm chart
@@ -113,6 +124,21 @@ it will be removed; but as it won't be user-visible this isn't considered a brea
migration instructions, and while the `*-agent.yaml` files remained part of the instructions they
were actually unnescessary.
+- Change: The previous version of Emissary-ingress was based on Envoy 1.17 and when using grpc_stats
+ with `all_methods` or `services` set, it would output metrics in the following format
+ `envoy_cluster_grpc_{ServiceName}_{statname}`. When neither of these fields are set it would be
+ aggregated to `envoy_cluster_grpc_{statname}`.
+ The new behavior since Envoy 1.18 will produce
+ metrics in the following format `envoy_cluster_grpc_{MethodName}_statsname` and
+ `envoy_cluster_grpc_statsname`.
+ After further investigation we found that Envoy doesn't properly
+ parse service names such as `cncf.telepresence.Manager/Status`. In the future, we will work
+ upstream Envoy to get this parsing logic fixed to ensure consistent metric naming.
+
+- Bugfix: Previously setting `grpc_stats` in the `ambassador` `Module` without setting either
+ `grpc_stats.services` or `grpc_stats.all_methods` would result in crashing. Now it behaves as if
+ `grpc_stats.all_methods=false`.
+
## [2.3.1] June 09, 2022
[2.3.1]: https://github.com/emissary-ingress/emissary/compare/v2.3.0...v2.3.1
diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md
index b7fa60732d..1fe3cb78dc 100644
--- a/DEPENDENCIES.md
+++ b/DEPENDENCIES.md
@@ -22,7 +22,6 @@ following Free and Open Source software:
github.com/armon/go-metrics v0.3.10 MIT license
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d MIT license
github.com/census-instrumentation/opencensus-proto v0.3.0 Apache License 2.0
- github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe Apache License 2.0
github.com/cncf/xds/go v0.0.0-20220121163655-4a2b9fdd466b Apache License 2.0
github.com/datawire/dlib v1.2.5-0.20211116212847-0316f8d7af2b Apache License 2.0
github.com/datawire/dtest v0.0.0-20210928162311-722b199c4c2f Apache License 2.0
@@ -94,6 +93,7 @@ following Free and Open Source software:
github.com/spf13/pflag v1.0.5 3-clause BSD license
github.com/stretchr/testify v1.7.0 MIT license
github.com/xlab/treeprint v1.1.0 MIT license
+ go.opentelemetry.io/proto/otlp v0.7.0 Apache License 2.0
go.starlark.net v0.0.0-20220203230714-bb14e151c28f 3-clause BSD license
golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838 3-clause BSD license
golang.org/x/mod v0.5.1 3-clause BSD license
diff --git a/_cxx/envoy.mk b/_cxx/envoy.mk
index 5c9dbb0556..35c318bab9 100644
--- a/_cxx/envoy.mk
+++ b/_cxx/envoy.mk
@@ -13,7 +13,7 @@ RSYNC_EXTRAS ?=
# IF YOU MESS WITH ANY OF THESE VALUES, YOU MUST RUN `make update-base`.
ENVOY_REPO ?= $(if $(IS_PRIVATE),git@github.com:datawire/envoy-private.git,https://github.com/datawire/envoy.git)
- ENVOY_COMMIT ?= 8151e9a87cde33721a1b1f864d0c54ae72e4aa78
+ ENVOY_COMMIT ?= f96adbeb45342bb8b37345df11fc395aa4b1fcda
ENVOY_COMPILATION_MODE ?= opt
# Increment BASE_ENVOY_RELVER on changes to `docker/base-envoy/Dockerfile`, or Envoy recipes.
# You may reset BASE_ENVOY_RELVER when adjusting ENVOY_COMMIT.
@@ -33,7 +33,7 @@ RSYNC_EXTRAS ?=
# which commits are ancestors, I added `make guess-envoy-go-control-plane-commit` to do that in an
# automated way! Still look at the commit yourself to make sure it seems sane; blindly trusting
# machines is bad, mmkay?
-ENVOY_GO_CONTROL_PLANE_COMMIT = f1f47757da33f7507078cf7e9e60915418c7bd10
+ENVOY_GO_CONTROL_PLANE_COMMIT = v0.10.1
# Set ENVOY_DOCKER_REPO to the list of mirrors that we should
# sanity-check that things get pushed to.
@@ -249,16 +249,16 @@ envoy-shell: $(ENVOY_BASH.deps)
# These targets are depended on by `make generate` in `build-aux/generate.mk`.
# Raw protobufs
-$(OSS_HOME)/api/envoy $(OSS_HOME)/api/pb: $(OSS_HOME)/api/%: $(OSS_HOME)/_cxx/envoy
+$(OSS_HOME)/api/envoy: $(OSS_HOME)/api/%: $(OSS_HOME)/_cxx/envoy
rsync --recursive --delete --delete-excluded --prune-empty-dirs --include='*/' --include='*.proto' --exclude='*' $`
+ // :ref:`outlier_detection.split_external_local_origin_errors`
// is *false*, all errors: externally and locally generated were used to calculate the threshold.
// If
- // :ref:`outlier_detection.split_external_local_origin_errors`
+ // :ref:`outlier_detection.split_external_local_origin_errors`
// is *true*, only externally generated errors were used to calculate the threshold.
// The threshold is used to eject hosts based on their success rate. See
// :ref:`Cluster outlier detection ` documentation for details.
@@ -64,7 +65,7 @@ message ClusterStatus {
// The success rate threshold used in the last interval when only locally originated failures were
// taken into account and externally originated errors were treated as success.
// This field should be interpreted only when
- // :ref:`outlier_detection.split_external_local_origin_errors`
+ // :ref:`outlier_detection.split_external_local_origin_errors`
// is *true*. The threshold is used to eject hosts based on their success rate.
// See :ref:`Cluster outlier detection ` documentation for
// details.
@@ -80,6 +81,9 @@ message ClusterStatus {
// :ref:`Circuit breaking ` settings of the cluster.
config.cluster.v3.CircuitBreakers circuit_breakers = 6;
+
+ // Observability name of the cluster.
+ string observability_name = 7;
}
// Current state of a particular host.
@@ -98,10 +102,10 @@ message HostStatus {
// Request success rate for this host over the last calculated interval.
// If
- // :ref:`outlier_detection.split_external_local_origin_errors`
+ // :ref:`outlier_detection.split_external_local_origin_errors`
// is *false*, all errors: externally and locally generated were used in success rate
// calculation. If
- // :ref:`outlier_detection.split_external_local_origin_errors`
+ // :ref:`outlier_detection.split_external_local_origin_errors`
// is *true*, only externally generated errors were used in success rate calculation.
// See :ref:`Cluster outlier detection ` documentation for
// details.
@@ -124,7 +128,7 @@ message HostStatus {
// interval when only locally originated errors are taken into account and externally originated
// errors were treated as success.
// This field should be interpreted only when
- // :ref:`outlier_detection.split_external_local_origin_errors`
+ // :ref:`outlier_detection.split_external_local_origin_errors`
// is *true*.
// See :ref:`Cluster outlier detection ` documentation for
// details.
@@ -139,7 +143,7 @@ message HostStatus {
}
// Health status for a host.
-// [#next-free-field: 7]
+// [#next-free-field: 9]
message HostHealthStatus {
option (udpa.annotations.versioning).previous_message_type =
"envoy.admin.v2alpha.HostHealthStatus";
@@ -160,6 +164,13 @@ message HostHealthStatus {
// The host has not yet been health checked.
bool pending_active_hc = 6;
+ // The host should be excluded from panic, spillover, etc. calculations because it was explicitly
+ // taken out of rotation via protocol signal and is not meant to be routed to.
+ bool excluded_via_immediate_hc_fail = 7;
+
+ // The host failed active HC due to timeout.
+ bool active_hc_timeout = 8;
+
// Health status as reported by EDS. Note: only HEALTHY and UNHEALTHY are currently supported
// here.
// [#comment:TODO(mrice32): pipe through remaining EDS health status possibilities.]
diff --git a/api/envoy/admin/v3/config_dump.proto b/api/envoy/admin/v3/config_dump.proto
index 73156697fd..336d5b13ee 100644
--- a/api/envoy/admin/v3/config_dump.proto
+++ b/api/envoy/admin/v3/config_dump.proto
@@ -13,10 +13,36 @@ import "udpa/annotations/versioning.proto";
option java_package = "io.envoyproxy.envoy.admin.v3";
option java_outer_classname = "ConfigDumpProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: ConfigDump]
+// Resource status from the view of a xDS client, which tells the synchronization
+// status between the xDS client and the xDS server.
+enum ClientResourceStatus {
+ // Resource status is not available/unknown.
+ UNKNOWN = 0;
+
+ // Client requested this resource but hasn't received any update from management
+ // server. The client will not fail requests, but will queue them until update
+ // arrives or the client times out waiting for the resource.
+ REQUESTED = 1;
+
+ // This resource has been requested by the client but has either not been
+ // delivered by the server or was previously delivered by the server and then
+ // subsequently removed from resources provided by the server. For more
+ // information, please refer to the :ref:`"Knowing When a Requested Resource
+ // Does Not Exist" ` section.
+ DOES_NOT_EXIST = 2;
+
+ // Client received this resource and replied with ACK.
+ ACKED = 3;
+
+ // Client received this resource and replied with NACK.
+ NACKED = 4;
+}
+
// The :ref:`/config_dump ` admin endpoint uses this wrapper
// message to maintain and serve arbitrary configuration information from any component in Envoy.
message ConfigDump {
@@ -28,11 +54,13 @@ message ConfigDump {
// The following configurations are currently supported and will be dumped in the order given
// below:
//
- // * *bootstrap*: :ref:`BootstrapConfigDump `
- // * *clusters*: :ref:`ClustersConfigDump `
- // * *endpoints*: :ref:`EndpointsConfigDump `
- // * *listeners*: :ref:`ListenersConfigDump `
- // * *routes*: :ref:`RoutesConfigDump `
+ // * *bootstrap*: :ref:`BootstrapConfigDump `
+ // * *clusters*: :ref:`ClustersConfigDump `
+ // * *endpoints*: :ref:`EndpointsConfigDump `
+ // * *listeners*: :ref:`ListenersConfigDump `
+ // * *scoped_routes*: :ref:`ScopedRoutesConfigDump `
+ // * *routes*: :ref:`RoutesConfigDump `
+ // * *secrets*: :ref:`SecretsConfigDump `
//
// EDS Configuration will only be dumped by using parameter `?include_eds`
//
@@ -49,6 +77,7 @@ message UpdateFailureState {
"envoy.admin.v2alpha.UpdateFailureState";
// What the component configuration would have been if the update had succeeded.
+ // This field may not be populated by xDS clients due to storage overhead.
google.protobuf.Any failed_configuration = 1;
// Time of the latest failed update attempt.
@@ -56,6 +85,10 @@ message UpdateFailureState {
// Details about the last failed update attempt.
string details = 3;
+
+ // This is the version of the rejected resource.
+ // [#not-implemented-hide:]
+ string version_info = 4;
}
// This message describes the bootstrap configuration that Envoy was started with. This includes
@@ -96,7 +129,7 @@ message ListenersConfigDump {
"envoy.admin.v2alpha.ListenersConfigDump.DynamicListenerState";
// This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time
+ // :ref:`version_info ` field at the time
// that the listener was loaded. In the future, discrete per-listener versions may be supported
// by the API.
string version_info = 1;
@@ -109,7 +142,7 @@ message ListenersConfigDump {
}
// Describes a dynamically loaded listener via the LDS API.
- // [#next-free-field: 6]
+ // [#next-free-field: 7]
message DynamicListener {
option (udpa.annotations.versioning).previous_message_type =
"envoy.admin.v2alpha.ListenersConfigDump.DynamicListener";
@@ -134,10 +167,17 @@ message ListenersConfigDump {
DynamicListenerState draining_state = 4;
// 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.
UpdateFailureState error_state = 5;
+
+ // The client status of this resource.
+ // [#not-implemented-hide:]
+ ClientResourceStatus client_status = 6;
}
- // This is the :ref:`version_info ` in the
+ // This is the :ref:`version_info ` in the
// last processed LDS discovery response. If there are only static bootstrap listeners, this field
// will be "".
string version_info = 1;
@@ -169,12 +209,13 @@ message ClustersConfigDump {
}
// Describes a dynamically loaded cluster via the CDS API.
+ // [#next-free-field: 6]
message DynamicCluster {
option (udpa.annotations.versioning).previous_message_type =
"envoy.admin.v2alpha.ClustersConfigDump.DynamicCluster";
// This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time
+ // :ref:`version_info ` field at the time
// that the cluster was loaded. In the future, discrete per-cluster versions may be supported by
// the API.
string version_info = 1;
@@ -184,9 +225,20 @@ message ClustersConfigDump {
// The timestamp when the Cluster 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;
}
- // This is the :ref:`version_info ` in the
+ // This is the :ref:`version_info ` in the
// last processed CDS discovery response. If there are only static bootstrap clusters, this field
// will be "".
string version_info = 1;
@@ -225,12 +277,13 @@ message RoutesConfigDump {
google.protobuf.Timestamp last_updated = 2;
}
+ // [#next-free-field: 6]
message DynamicRouteConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.admin.v2alpha.RoutesConfigDump.DynamicRouteConfig";
// This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time that
+ // :ref:`version_info ` field at the time that
// the route configuration was loaded.
string version_info = 1;
@@ -239,6 +292,17 @@ message RoutesConfigDump {
// The timestamp when the Route 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 statically loaded route configs.
@@ -270,6 +334,7 @@ message ScopedRoutesConfigDump {
google.protobuf.Timestamp last_updated = 3;
}
+ // [#next-free-field: 7]
message DynamicScopedRouteConfigs {
option (udpa.annotations.versioning).previous_message_type =
"envoy.admin.v2alpha.ScopedRoutesConfigDump.DynamicScopedRouteConfigs";
@@ -278,7 +343,7 @@ message ScopedRoutesConfigDump {
string name = 1;
// This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time that
+ // :ref:`version_info ` field at the time that
// the scoped routes configuration was loaded.
string version_info = 2;
@@ -287,6 +352,17 @@ message ScopedRoutesConfigDump {
// The timestamp when the scoped route config set was last updated.
google.protobuf.Timestamp last_updated = 4;
+
+ // 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 = 5;
+
+ // The client status of this resource.
+ // [#not-implemented-hide:]
+ ClientResourceStatus client_status = 6;
}
// The statically loaded scoped route configs.
@@ -302,6 +378,7 @@ message SecretsConfigDump {
"envoy.admin.v2alpha.SecretsConfigDump";
// DynamicSecret contains secret information fetched via SDS.
+ // [#next-free-field: 7]
message DynamicSecret {
option (udpa.annotations.versioning).previous_message_type =
"envoy.admin.v2alpha.SecretsConfigDump.DynamicSecret";
@@ -319,6 +396,17 @@ message SecretsConfigDump {
// Security sensitive information is redacted (replaced with "[redacted]") for
// private keys and passwords in TLS certificates.
google.protobuf.Any secret = 4;
+
+ // 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 = 5;
+
+ // The client status of this resource.
+ // [#not-implemented-hide:]
+ ClientResourceStatus client_status = 6;
}
// StaticSecret specifies statically loaded secret in bootstrap.
@@ -362,9 +450,10 @@ message EndpointsConfigDump {
google.protobuf.Timestamp last_updated = 2;
}
+ // [#next-free-field: 6]
message DynamicEndpointConfig {
// [#not-implemented-hide:] This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time that
+ // :ref:`version_info ` field at the time that
// the endpoint configuration was loaded.
string version_info = 1;
@@ -373,6 +462,17 @@ message EndpointsConfigDump {
// [#not-implemented-hide:] The timestamp when the Endpoint 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 statically loaded endpoint configs.
diff --git a/api/envoy/admin/v3/init_dump.proto b/api/envoy/admin/v3/init_dump.proto
index 3df9bfb51d..13a374dcc1 100644
--- a/api/envoy/admin/v3/init_dump.proto
+++ b/api/envoy/admin/v3/init_dump.proto
@@ -3,11 +3,11 @@ syntax = "proto3";
package envoy.admin.v3;
import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
option java_package = "io.envoyproxy.envoy.admin.v3";
option java_outer_classname = "InitDumpProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: InitDump]
diff --git a/api/envoy/admin/v3/listeners.proto b/api/envoy/admin/v3/listeners.proto
index 6197a44e42..86e35890bd 100644
--- a/api/envoy/admin/v3/listeners.proto
+++ b/api/envoy/admin/v3/listeners.proto
@@ -10,6 +10,7 @@ import "udpa/annotations/versioning.proto";
option java_package = "io.envoyproxy.envoy.admin.v3";
option java_outer_classname = "ListenersProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Listeners]
diff --git a/api/envoy/admin/v3/memory.proto b/api/envoy/admin/v3/memory.proto
index bcf9f27174..522bf5e788 100644
--- a/api/envoy/admin/v3/memory.proto
+++ b/api/envoy/admin/v3/memory.proto
@@ -8,6 +8,7 @@ import "udpa/annotations/versioning.proto";
option java_package = "io.envoyproxy.envoy.admin.v3";
option java_outer_classname = "MemoryProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Memory]
diff --git a/api/envoy/admin/v3/metrics.proto b/api/envoy/admin/v3/metrics.proto
index 71592ac1e9..7280d955c9 100644
--- a/api/envoy/admin/v3/metrics.proto
+++ b/api/envoy/admin/v3/metrics.proto
@@ -8,6 +8,7 @@ import "udpa/annotations/versioning.proto";
option java_package = "io.envoyproxy.envoy.admin.v3";
option java_outer_classname = "MetricsProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Metrics]
diff --git a/api/envoy/admin/v3/mutex_stats.proto b/api/envoy/admin/v3/mutex_stats.proto
index 49965d87ae..8a3003f07c 100644
--- a/api/envoy/admin/v3/mutex_stats.proto
+++ b/api/envoy/admin/v3/mutex_stats.proto
@@ -8,6 +8,7 @@ import "udpa/annotations/versioning.proto";
option java_package = "io.envoyproxy.envoy.admin.v3";
option java_outer_classname = "MutexStatsProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: MutexStats]
diff --git a/api/envoy/admin/v3/server_info.proto b/api/envoy/admin/v3/server_info.proto
index 5e3765a858..8516429904 100644
--- a/api/envoy/admin/v3/server_info.proto
+++ b/api/envoy/admin/v3/server_info.proto
@@ -6,13 +6,13 @@ import "envoy/config/core/v3/base.proto";
import "google/protobuf/duration.proto";
-import "envoy/annotations/deprecation.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
option java_package = "io.envoyproxy.envoy.admin.v3";
option java_outer_classname = "ServerInfoProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Server State]
@@ -59,7 +59,7 @@ message ServerInfo {
config.core.v3.Node node = 7;
}
-// [#next-free-field: 37]
+// [#next-free-field: 39]
message CommandLineOptions {
option (udpa.annotations.versioning).previous_message_type =
"envoy.admin.v2alpha.CommandLineOptions";
@@ -88,9 +88,9 @@ message CommandLineOptions {
Immediate = 1;
}
- reserved 12, 20, 21;
+ reserved 12, 20, 21, 29;
- reserved "max_stats", "max_obj_name_len";
+ reserved "max_stats", "max_obj_name_len", "bootstrap_version";
// See :option:`--base-id` for details.
uint64 base_id = 1;
@@ -179,9 +179,6 @@ message CommandLineOptions {
// See :option:`--disable-extensions` for details.
repeated string disabled_extensions = 28;
- // See :option:`--bootstrap-version` for details.
- uint32 bootstrap_version = 29;
-
// See :option:`--enable-fine-grain-logging` for details.
bool enable_fine_grain_logging = 34;
@@ -190,4 +187,10 @@ message CommandLineOptions {
// See :option:`--socket-mode` for details.
uint32 socket_mode = 36;
+
+ // See :option:`--enable-core-dump` for details.
+ bool enable_core_dump = 37;
+
+ // See :option:`--stats-tag` for details.
+ repeated string stats_tag = 38;
}
diff --git a/api/envoy/admin/v3/tap.proto b/api/envoy/admin/v3/tap.proto
index 934170b2de..49eeb86039 100644
--- a/api/envoy/admin/v3/tap.proto
+++ b/api/envoy/admin/v3/tap.proto
@@ -11,6 +11,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.admin.v3";
option java_outer_classname = "TapProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/admin/v3;adminv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Tap]
diff --git a/api/envoy/admin/v4alpha/certs.proto b/api/envoy/admin/v4alpha/certs.proto
deleted file mode 100644
index 0dd868f71f..0000000000
--- a/api/envoy/admin/v4alpha/certs.proto
+++ /dev/null
@@ -1,86 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "google/protobuf/timestamp.proto";
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "CertsProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: Certificates]
-
-// Proto representation of certificate details. Admin endpoint uses this wrapper for `/certs` to
-// display certificate information. See :ref:`/certs ` for more
-// information.
-message Certificates {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.Certificates";
-
- // List of certificates known to an Envoy.
- repeated Certificate certificates = 1;
-}
-
-message Certificate {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.Certificate";
-
- // Details of CA certificate.
- repeated CertificateDetails ca_cert = 1;
-
- // Details of Certificate Chain
- repeated CertificateDetails cert_chain = 2;
-}
-
-// [#next-free-field: 8]
-message CertificateDetails {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.CertificateDetails";
-
- message OcspDetails {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.CertificateDetails.OcspDetails";
-
- // Indicates the time from which the OCSP response is valid.
- google.protobuf.Timestamp valid_from = 1;
-
- // Indicates the time at which the OCSP response expires.
- google.protobuf.Timestamp expiration = 2;
- }
-
- // Path of the certificate.
- string path = 1;
-
- // Certificate Serial Number.
- string serial_number = 2;
-
- // List of Subject Alternate names.
- repeated SubjectAlternateName subject_alt_names = 3;
-
- // Minimum of days until expiration of certificate and it's chain.
- uint64 days_until_expiration = 4;
-
- // Indicates the time from which the certificate is valid.
- google.protobuf.Timestamp valid_from = 5;
-
- // Indicates the time at which the certificate expires.
- google.protobuf.Timestamp expiration_time = 6;
-
- // Details related to the OCSP response associated with this certificate, if any.
- OcspDetails ocsp_details = 7;
-}
-
-message SubjectAlternateName {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.SubjectAlternateName";
-
- // Subject Alternate Name.
- oneof name {
- string dns = 1;
-
- string uri = 2;
-
- string ip_address = 3;
- }
-}
diff --git a/api/envoy/admin/v4alpha/clusters.proto b/api/envoy/admin/v4alpha/clusters.proto
deleted file mode 100644
index 10d9209769..0000000000
--- a/api/envoy/admin/v4alpha/clusters.proto
+++ /dev/null
@@ -1,166 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "envoy/admin/v4alpha/metrics.proto";
-import "envoy/config/cluster/v4alpha/circuit_breaker.proto";
-import "envoy/config/core/v4alpha/address.proto";
-import "envoy/config/core/v4alpha/base.proto";
-import "envoy/config/core/v4alpha/health_check.proto";
-import "envoy/type/v3/percent.proto";
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "ClustersProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: Clusters]
-
-// Admin endpoint uses this wrapper for `/clusters` to display cluster status information.
-// See :ref:`/clusters ` for more information.
-message Clusters {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.Clusters";
-
- // Mapping from cluster name to each cluster's status.
- repeated ClusterStatus cluster_statuses = 1;
-}
-
-// Details an individual cluster's current status.
-// [#next-free-field: 7]
-message ClusterStatus {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.ClusterStatus";
-
- // Name of the cluster.
- string name = 1;
-
- // Denotes whether this cluster was added via API or configured statically.
- bool added_via_api = 2;
-
- // The success rate threshold used in the last interval.
- // If
- // :ref:`outlier_detection.split_external_local_origin_errors`
- // is *false*, all errors: externally and locally generated were used to calculate the threshold.
- // If
- // :ref:`outlier_detection.split_external_local_origin_errors`
- // is *true*, only externally generated errors were used to calculate the threshold.
- // The threshold is used to eject hosts based on their success rate. See
- // :ref:`Cluster outlier detection ` documentation for details.
- //
- // Note: this field may be omitted in any of the three following cases:
- //
- // 1. There were not enough hosts with enough request volume to proceed with success rate based
- // outlier ejection.
- // 2. The threshold is computed to be < 0 because a negative value implies that there was no
- // threshold for that interval.
- // 3. Outlier detection is not enabled for this cluster.
- type.v3.Percent success_rate_ejection_threshold = 3;
-
- // Mapping from host address to the host's current status.
- repeated HostStatus host_statuses = 4;
-
- // The success rate threshold used in the last interval when only locally originated failures were
- // taken into account and externally originated errors were treated as success.
- // This field should be interpreted only when
- // :ref:`outlier_detection.split_external_local_origin_errors`
- // is *true*. The threshold is used to eject hosts based on their success rate.
- // See :ref:`Cluster outlier detection ` documentation for
- // details.
- //
- // Note: this field may be omitted in any of the three following cases:
- //
- // 1. There were not enough hosts with enough request volume to proceed with success rate based
- // outlier ejection.
- // 2. The threshold is computed to be < 0 because a negative value implies that there was no
- // threshold for that interval.
- // 3. Outlier detection is not enabled for this cluster.
- type.v3.Percent local_origin_success_rate_ejection_threshold = 5;
-
- // :ref:`Circuit breaking ` settings of the cluster.
- config.cluster.v4alpha.CircuitBreakers circuit_breakers = 6;
-}
-
-// Current state of a particular host.
-// [#next-free-field: 10]
-message HostStatus {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.HostStatus";
-
- // Address of this host.
- config.core.v4alpha.Address address = 1;
-
- // List of stats specific to this host.
- repeated SimpleMetric stats = 2;
-
- // The host's current health status.
- HostHealthStatus health_status = 3;
-
- // Request success rate for this host over the last calculated interval.
- // If
- // :ref:`outlier_detection.split_external_local_origin_errors`
- // is *false*, all errors: externally and locally generated were used in success rate
- // calculation. If
- // :ref:`outlier_detection.split_external_local_origin_errors`
- // is *true*, only externally generated errors were used in success rate calculation.
- // See :ref:`Cluster outlier detection ` documentation for
- // details.
- //
- // Note: the message will not be present if host did not have enough request volume to calculate
- // success rate or the cluster did not have enough hosts to run through success rate outlier
- // ejection.
- type.v3.Percent success_rate = 4;
-
- // The host's weight. If not configured, the value defaults to 1.
- uint32 weight = 5;
-
- // The hostname of the host, if applicable.
- string hostname = 6;
-
- // The host's priority. If not configured, the value defaults to 0 (highest priority).
- uint32 priority = 7;
-
- // Request success rate for this host over the last calculated
- // interval when only locally originated errors are taken into account and externally originated
- // errors were treated as success.
- // This field should be interpreted only when
- // :ref:`outlier_detection.split_external_local_origin_errors`
- // is *true*.
- // See :ref:`Cluster outlier detection ` documentation for
- // details.
- //
- // Note: the message will not be present if host did not have enough request volume to calculate
- // success rate or the cluster did not have enough hosts to run through success rate outlier
- // ejection.
- type.v3.Percent local_origin_success_rate = 8;
-
- // locality of the host.
- config.core.v4alpha.Locality locality = 9;
-}
-
-// Health status for a host.
-// [#next-free-field: 7]
-message HostHealthStatus {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.HostHealthStatus";
-
- // The host is currently failing active health checks.
- bool failed_active_health_check = 1;
-
- // The host is currently considered an outlier and has been ejected.
- bool failed_outlier_check = 2;
-
- // The host is currently being marked as degraded through active health checking.
- bool failed_active_degraded_check = 4;
-
- // The host has been removed from service discovery, but is being stabilized due to active
- // health checking.
- bool pending_dynamic_removal = 5;
-
- // The host has not yet been health checked.
- bool pending_active_hc = 6;
-
- // Health status as reported by EDS. Note: only HEALTHY and UNHEALTHY are currently supported
- // here.
- // [#comment:TODO(mrice32): pipe through remaining EDS health status possibilities.]
- config.core.v4alpha.HealthStatus eds_health_status = 3;
-}
diff --git a/api/envoy/admin/v4alpha/config_dump.proto b/api/envoy/admin/v4alpha/config_dump.proto
deleted file mode 100644
index 7fed09631d..0000000000
--- a/api/envoy/admin/v4alpha/config_dump.proto
+++ /dev/null
@@ -1,385 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "envoy/config/bootstrap/v4alpha/bootstrap.proto";
-
-import "google/protobuf/any.proto";
-import "google/protobuf/timestamp.proto";
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "ConfigDumpProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: ConfigDump]
-
-// The :ref:`/config_dump ` admin endpoint uses this wrapper
-// message to maintain and serve arbitrary configuration information from any component in Envoy.
-message ConfigDump {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.ConfigDump";
-
- // This list is serialized and dumped in its entirety at the
- // :ref:`/config_dump ` endpoint.
- //
- // The following configurations are currently supported and will be dumped in the order given
- // below:
- //
- // * *bootstrap*: :ref:`BootstrapConfigDump `
- // * *clusters*: :ref:`ClustersConfigDump `
- // * *endpoints*: :ref:`EndpointsConfigDump `
- // * *listeners*: :ref:`ListenersConfigDump `
- // * *routes*: :ref:`RoutesConfigDump `
- //
- // EDS Configuration will only be dumped by using parameter `?include_eds`
- //
- // You can filter output with the resource and mask query parameters.
- // See :ref:`/config_dump?resource={} `,
- // :ref:`/config_dump?mask={} `,
- // or :ref:`/config_dump?resource={},mask={}
- // ` for more information.
- repeated google.protobuf.Any configs = 1;
-}
-
-message UpdateFailureState {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.UpdateFailureState";
-
- // What the component configuration would have been if the update had succeeded.
- google.protobuf.Any failed_configuration = 1;
-
- // Time of the latest failed update attempt.
- google.protobuf.Timestamp last_update_attempt = 2;
-
- // Details about the last failed update attempt.
- string details = 3;
-}
-
-// This message describes the bootstrap configuration that Envoy was started with. This includes
-// any CLI overrides that were merged. Bootstrap configuration information can be used to recreate
-// the static portions of an Envoy configuration by reusing the output as the bootstrap
-// configuration for another Envoy.
-message BootstrapConfigDump {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.BootstrapConfigDump";
-
- config.bootstrap.v4alpha.Bootstrap bootstrap = 1;
-
- // The timestamp when the BootstrapConfig was last updated.
- google.protobuf.Timestamp last_updated = 2;
-}
-
-// Envoy's listener manager fills this message with all currently known listeners. Listener
-// configuration information can be used to recreate an Envoy configuration by populating all
-// listeners as static listeners or by returning them in a LDS response.
-message ListenersConfigDump {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.ListenersConfigDump";
-
- // Describes a statically loaded listener.
- message StaticListener {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.ListenersConfigDump.StaticListener";
-
- // The listener config.
- google.protobuf.Any listener = 1;
-
- // The timestamp when the Listener was last successfully updated.
- google.protobuf.Timestamp last_updated = 2;
- }
-
- message DynamicListenerState {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.ListenersConfigDump.DynamicListenerState";
-
- // This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time
- // that the listener was loaded. In the future, discrete per-listener versions may be supported
- // by the API.
- string version_info = 1;
-
- // The listener config.
- google.protobuf.Any listener = 2;
-
- // The timestamp when the Listener was last successfully updated.
- google.protobuf.Timestamp last_updated = 3;
- }
-
- // Describes a dynamically loaded listener via the LDS API.
- // [#next-free-field: 6]
- message DynamicListener {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.ListenersConfigDump.DynamicListener";
-
- // The name or unique id of this listener, pulled from the DynamicListenerState config.
- string name = 1;
-
- // The listener state for any active listener by this name.
- // These are listeners that are available to service data plane traffic.
- DynamicListenerState active_state = 2;
-
- // The listener state for any warming listener by this name.
- // These are listeners that are currently undergoing warming in preparation to service data
- // plane traffic. Note that if attempting to recreate an Envoy configuration from a
- // configuration dump, the warming listeners should generally be discarded.
- DynamicListenerState warming_state = 3;
-
- // The listener state for any draining listener by this name.
- // These are listeners that are currently undergoing draining in preparation to stop servicing
- // data plane traffic. Note that if attempting to recreate an Envoy configuration from a
- // configuration dump, the draining listeners should generally be discarded.
- DynamicListenerState draining_state = 4;
-
- // Set if the last update failed, cleared after the next successful update.
- UpdateFailureState error_state = 5;
- }
-
- // This is the :ref:`version_info ` in the
- // last processed LDS discovery response. If there are only static bootstrap listeners, this field
- // will be "".
- string version_info = 1;
-
- // The statically loaded listener configs.
- repeated StaticListener static_listeners = 2;
-
- // State for any warming, active, or draining listeners.
- repeated DynamicListener dynamic_listeners = 3;
-}
-
-// Envoy's cluster manager fills this message with all currently known clusters. Cluster
-// configuration information can be used to recreate an Envoy configuration by populating all
-// clusters as static clusters or by returning them in a CDS response.
-message ClustersConfigDump {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.ClustersConfigDump";
-
- // Describes a statically loaded cluster.
- message StaticCluster {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.ClustersConfigDump.StaticCluster";
-
- // The cluster config.
- google.protobuf.Any cluster = 1;
-
- // The timestamp when the Cluster was last updated.
- google.protobuf.Timestamp last_updated = 2;
- }
-
- // Describes a dynamically loaded cluster via the CDS API.
- message DynamicCluster {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.ClustersConfigDump.DynamicCluster";
-
- // This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time
- // that the cluster was loaded. In the future, discrete per-cluster versions may be supported by
- // the API.
- string version_info = 1;
-
- // The cluster config.
- google.protobuf.Any cluster = 2;
-
- // The timestamp when the Cluster was last updated.
- google.protobuf.Timestamp last_updated = 3;
- }
-
- // This is the :ref:`version_info ` in the
- // last processed CDS discovery response. If there are only static bootstrap clusters, this field
- // will be "".
- string version_info = 1;
-
- // The statically loaded cluster configs.
- repeated StaticCluster static_clusters = 2;
-
- // The dynamically loaded active clusters. These are clusters that are available to service
- // data plane traffic.
- repeated DynamicCluster dynamic_active_clusters = 3;
-
- // The dynamically loaded warming clusters. These are clusters that are currently undergoing
- // warming in preparation to service data plane traffic. Note that if attempting to recreate an
- // Envoy configuration from a configuration dump, the warming clusters should generally be
- // discarded.
- repeated DynamicCluster dynamic_warming_clusters = 4;
-}
-
-// Envoy's RDS implementation fills this message with all currently loaded routes, as described by
-// their RouteConfiguration objects. Static routes that are either defined in the bootstrap configuration
-// or defined inline while configuring listeners are separated from those configured dynamically via RDS.
-// Route configuration information can be used to recreate an Envoy configuration by populating all routes
-// as static routes or by returning them in RDS responses.
-message RoutesConfigDump {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.RoutesConfigDump";
-
- message StaticRouteConfig {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.RoutesConfigDump.StaticRouteConfig";
-
- // The route config.
- google.protobuf.Any route_config = 1;
-
- // The timestamp when the Route was last updated.
- google.protobuf.Timestamp last_updated = 2;
- }
-
- message DynamicRouteConfig {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.RoutesConfigDump.DynamicRouteConfig";
-
- // This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time that
- // the route configuration was loaded.
- string version_info = 1;
-
- // The route config.
- google.protobuf.Any route_config = 2;
-
- // The timestamp when the Route was last updated.
- google.protobuf.Timestamp last_updated = 3;
- }
-
- // The statically loaded route configs.
- repeated StaticRouteConfig static_route_configs = 2;
-
- // The dynamically loaded route configs.
- repeated DynamicRouteConfig dynamic_route_configs = 3;
-}
-
-// Envoy's scoped RDS implementation fills this message with all currently loaded route
-// configuration scopes (defined via ScopedRouteConfigurationsSet protos). This message lists both
-// the scopes defined inline with the higher order object (i.e., the HttpConnectionManager) and the
-// dynamically obtained scopes via the SRDS API.
-message ScopedRoutesConfigDump {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.ScopedRoutesConfigDump";
-
- message InlineScopedRouteConfigs {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.ScopedRoutesConfigDump.InlineScopedRouteConfigs";
-
- // The name assigned to the scoped route configurations.
- string name = 1;
-
- // The scoped route configurations.
- repeated google.protobuf.Any scoped_route_configs = 2;
-
- // The timestamp when the scoped route config set was last updated.
- google.protobuf.Timestamp last_updated = 3;
- }
-
- message DynamicScopedRouteConfigs {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.ScopedRoutesConfigDump.DynamicScopedRouteConfigs";
-
- // The name assigned to the scoped route configurations.
- string name = 1;
-
- // This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time that
- // the scoped routes configuration was loaded.
- string version_info = 2;
-
- // The scoped route configurations.
- repeated google.protobuf.Any scoped_route_configs = 3;
-
- // The timestamp when the scoped route config set was last updated.
- google.protobuf.Timestamp last_updated = 4;
- }
-
- // The statically loaded scoped route configs.
- repeated InlineScopedRouteConfigs inline_scoped_route_configs = 1;
-
- // The dynamically loaded scoped route configs.
- repeated DynamicScopedRouteConfigs dynamic_scoped_route_configs = 2;
-}
-
-// Envoys SDS implementation fills this message with all secrets fetched dynamically via SDS.
-message SecretsConfigDump {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.SecretsConfigDump";
-
- // DynamicSecret contains secret information fetched via SDS.
- message DynamicSecret {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.SecretsConfigDump.DynamicSecret";
-
- // The name assigned to the secret.
- string name = 1;
-
- // This is the per-resource version information.
- string version_info = 2;
-
- // The timestamp when the secret was last updated.
- google.protobuf.Timestamp last_updated = 3;
-
- // The actual secret information.
- // Security sensitive information is redacted (replaced with "[redacted]") for
- // private keys and passwords in TLS certificates.
- google.protobuf.Any secret = 4;
- }
-
- // StaticSecret specifies statically loaded secret in bootstrap.
- message StaticSecret {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.SecretsConfigDump.StaticSecret";
-
- // The name assigned to the secret.
- string name = 1;
-
- // The timestamp when the secret was last updated.
- google.protobuf.Timestamp last_updated = 2;
-
- // The actual secret information.
- // Security sensitive information is redacted (replaced with "[redacted]") for
- // private keys and passwords in TLS certificates.
- google.protobuf.Any secret = 3;
- }
-
- // The statically loaded secrets.
- repeated StaticSecret static_secrets = 1;
-
- // The dynamically loaded active secrets. These are secrets that are available to service
- // clusters or listeners.
- repeated DynamicSecret dynamic_active_secrets = 2;
-
- // The dynamically loaded warming secrets. These are secrets that are currently undergoing
- // warming in preparation to service clusters or listeners.
- repeated DynamicSecret dynamic_warming_secrets = 3;
-}
-
-// Envoy's admin fill this message with all currently known endpoints. Endpoint
-// configuration information can be used to recreate an Envoy configuration by populating all
-// endpoints as static endpoints or by returning them in an EDS response.
-message EndpointsConfigDump {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.EndpointsConfigDump";
-
- message StaticEndpointConfig {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.EndpointsConfigDump.StaticEndpointConfig";
-
- // The endpoint config.
- google.protobuf.Any endpoint_config = 1;
-
- // [#not-implemented-hide:] The timestamp when the Endpoint was last updated.
- google.protobuf.Timestamp last_updated = 2;
- }
-
- message DynamicEndpointConfig {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.EndpointsConfigDump.DynamicEndpointConfig";
-
- // [#not-implemented-hide:] This is the per-resource version information. This version is currently taken from the
- // :ref:`version_info ` field at the time that
- // the endpoint configuration was loaded.
- string version_info = 1;
-
- // The endpoint config.
- google.protobuf.Any endpoint_config = 2;
-
- // [#not-implemented-hide:] The timestamp when the Endpoint was last updated.
- google.protobuf.Timestamp last_updated = 3;
- }
-
- // The statically loaded endpoint configs.
- repeated StaticEndpointConfig static_endpoint_configs = 2;
-
- // The dynamically loaded endpoint configs.
- repeated DynamicEndpointConfig dynamic_endpoint_configs = 3;
-}
diff --git a/api/envoy/admin/v4alpha/init_dump.proto b/api/envoy/admin/v4alpha/init_dump.proto
deleted file mode 100644
index 81c423e520..0000000000
--- a/api/envoy/admin/v4alpha/init_dump.proto
+++ /dev/null
@@ -1,37 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "InitDumpProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: InitDump]
-
-// Dumps of unready targets of envoy init managers. Envoy's admin fills this message with init managers,
-// which provides the information of their unready targets.
-// The :ref:`/init_dump ` will dump all unready targets information.
-message UnreadyTargetsDumps {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.UnreadyTargetsDumps";
-
- // Message of unready targets information of an init manager.
- message UnreadyTargetsDump {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.admin.v3.UnreadyTargetsDumps.UnreadyTargetsDump";
-
- // Name of the init manager. Example: "init_manager_xxx".
- string name = 1;
-
- // Names of unready targets of the init manager. Example: "target_xxx".
- repeated string target_names = 2;
- }
-
- // You can choose specific component to dump unready targets with mask query parameter.
- // See :ref:`/init_dump?mask={} ` for more information.
- // The dumps of unready targets of all init managers.
- repeated UnreadyTargetsDump unready_targets_dumps = 1;
-}
diff --git a/api/envoy/admin/v4alpha/listeners.proto b/api/envoy/admin/v4alpha/listeners.proto
deleted file mode 100644
index 89bdc4c5bb..0000000000
--- a/api/envoy/admin/v4alpha/listeners.proto
+++ /dev/null
@@ -1,36 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "envoy/config/core/v4alpha/address.proto";
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "ListenersProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: Listeners]
-
-// Admin endpoint uses this wrapper for `/listeners` to display listener status information.
-// See :ref:`/listeners ` for more information.
-message Listeners {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.Listeners";
-
- // List of listener statuses.
- repeated ListenerStatus listener_statuses = 1;
-}
-
-// Details an individual listener's current status.
-message ListenerStatus {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.ListenerStatus";
-
- // Name of the listener
- string name = 1;
-
- // The actual local address that the listener is listening on. If a listener was configured
- // to listen on port 0, then this address has the port that was allocated by the OS.
- config.core.v4alpha.Address local_address = 2;
-}
diff --git a/api/envoy/admin/v4alpha/memory.proto b/api/envoy/admin/v4alpha/memory.proto
deleted file mode 100644
index d2f0b57229..0000000000
--- a/api/envoy/admin/v4alpha/memory.proto
+++ /dev/null
@@ -1,47 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "MemoryProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: Memory]
-
-// Proto representation of the internal memory consumption of an Envoy instance. These represent
-// values extracted from an internal TCMalloc instance. For more information, see the section of the
-// docs entitled ["Generic Tcmalloc Status"](https://gperftools.github.io/gperftools/tcmalloc.html).
-// [#next-free-field: 7]
-message Memory {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.Memory";
-
- // The number of bytes allocated by the heap for Envoy. This is an alias for
- // `generic.current_allocated_bytes`.
- uint64 allocated = 1;
-
- // The number of bytes reserved by the heap but not necessarily allocated. This is an alias for
- // `generic.heap_size`.
- uint64 heap_size = 2;
-
- // The number of bytes in free, unmapped pages in the page heap. These bytes always count towards
- // virtual memory usage, and depending on the OS, typically do not count towards physical memory
- // usage. This is an alias for `tcmalloc.pageheap_unmapped_bytes`.
- uint64 pageheap_unmapped = 3;
-
- // The number of bytes in free, mapped pages in the page heap. These bytes always count towards
- // virtual memory usage, and unless the underlying memory is swapped out by the OS, they also
- // count towards physical memory usage. This is an alias for `tcmalloc.pageheap_free_bytes`.
- uint64 pageheap_free = 4;
-
- // The amount of memory used by the TCMalloc thread caches (for small objects). This is an alias
- // for `tcmalloc.current_total_thread_cache_bytes`.
- uint64 total_thread_cache = 5;
-
- // The number of bytes of the physical memory usage by the allocator. This is an alias for
- // `generic.total_physical_bytes`.
- uint64 total_physical_bytes = 6;
-}
diff --git a/api/envoy/admin/v4alpha/metrics.proto b/api/envoy/admin/v4alpha/metrics.proto
deleted file mode 100644
index 7861332003..0000000000
--- a/api/envoy/admin/v4alpha/metrics.proto
+++ /dev/null
@@ -1,32 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "MetricsProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: Metrics]
-
-// Proto representation of an Envoy Counter or Gauge value.
-message SimpleMetric {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.SimpleMetric";
-
- enum Type {
- COUNTER = 0;
- GAUGE = 1;
- }
-
- // Type of the metric represented.
- Type type = 1;
-
- // Current metric value.
- uint64 value = 2;
-
- // Name of the metric.
- string name = 3;
-}
diff --git a/api/envoy/admin/v4alpha/mutex_stats.proto b/api/envoy/admin/v4alpha/mutex_stats.proto
deleted file mode 100644
index 6f9fcd548c..0000000000
--- a/api/envoy/admin/v4alpha/mutex_stats.proto
+++ /dev/null
@@ -1,33 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "MutexStatsProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: MutexStats]
-
-// Proto representation of the statistics collected upon absl::Mutex contention, if Envoy is run
-// under :option:`--enable-mutex-tracing`. For more information, see the `absl::Mutex`
-// [docs](https://abseil.io/about/design/mutex#extra-features).
-//
-// *NB*: The wait cycles below are measured by `absl::base_internal::CycleClock`, and may not
-// correspond to core clock frequency. For more information, see the `CycleClock`
-// [docs](https://github.com/abseil/abseil-cpp/blob/master/absl/base/internal/cycleclock.h).
-message MutexStats {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.MutexStats";
-
- // The number of individual mutex contentions which have occurred since startup.
- uint64 num_contentions = 1;
-
- // The length of the current contention wait cycle.
- uint64 current_wait_cycles = 2;
-
- // The lifetime total of all contention wait cycles.
- uint64 lifetime_wait_cycles = 3;
-}
diff --git a/api/envoy/admin/v4alpha/server_info.proto b/api/envoy/admin/v4alpha/server_info.proto
deleted file mode 100644
index 6f56978d49..0000000000
--- a/api/envoy/admin/v4alpha/server_info.proto
+++ /dev/null
@@ -1,192 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "envoy/config/core/v4alpha/base.proto";
-
-import "google/protobuf/duration.proto";
-
-import "envoy/annotations/deprecation.proto";
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "ServerInfoProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: Server State]
-
-// Proto representation of the value returned by /server_info, containing
-// server version/server status information.
-// [#next-free-field: 8]
-message ServerInfo {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.ServerInfo";
-
- enum State {
- // Server is live and serving traffic.
- LIVE = 0;
-
- // Server is draining listeners in response to external health checks failing.
- DRAINING = 1;
-
- // Server has not yet completed cluster manager initialization.
- PRE_INITIALIZING = 2;
-
- // Server is running the cluster manager initialization callbacks (e.g., RDS).
- INITIALIZING = 3;
- }
-
- // Server version.
- string version = 1;
-
- // State of the server.
- State state = 2;
-
- // Uptime since current epoch was started.
- google.protobuf.Duration uptime_current_epoch = 3;
-
- // Uptime since the start of the first epoch.
- google.protobuf.Duration uptime_all_epochs = 4;
-
- // Hot restart version.
- string hot_restart_version = 5;
-
- // Command line options the server is currently running with.
- CommandLineOptions command_line_options = 6;
-
- // Populated node identity of this server.
- config.core.v4alpha.Node node = 7;
-}
-
-// [#next-free-field: 37]
-message CommandLineOptions {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.CommandLineOptions";
-
- enum IpVersion {
- v4 = 0;
- v6 = 1;
- }
-
- enum Mode {
- // Validate configs and then serve traffic normally.
- Serve = 0;
-
- // Validate configs and exit.
- Validate = 1;
-
- // Completely load and initialize the config, and then exit without running the listener loop.
- InitOnly = 2;
- }
-
- enum DrainStrategy {
- // Gradually discourage connections over the course of the drain period.
- Gradual = 0;
-
- // Discourage all connections for the duration of the drain sequence.
- Immediate = 1;
- }
-
- reserved 12, 20, 21;
-
- reserved "max_stats", "max_obj_name_len";
-
- // See :option:`--base-id` for details.
- uint64 base_id = 1;
-
- // See :option:`--use-dynamic-base-id` for details.
- bool use_dynamic_base_id = 31;
-
- // See :option:`--base-id-path` for details.
- string base_id_path = 32;
-
- // See :option:`--concurrency` for details.
- uint32 concurrency = 2;
-
- // See :option:`--config-path` for details.
- string config_path = 3;
-
- // See :option:`--config-yaml` for details.
- string config_yaml = 4;
-
- // See :option:`--allow-unknown-static-fields` for details.
- bool allow_unknown_static_fields = 5;
-
- // See :option:`--reject-unknown-dynamic-fields` for details.
- bool reject_unknown_dynamic_fields = 26;
-
- // See :option:`--ignore-unknown-dynamic-fields` for details.
- bool ignore_unknown_dynamic_fields = 30;
-
- // See :option:`--admin-address-path` for details.
- string admin_address_path = 6;
-
- // See :option:`--local-address-ip-version` for details.
- IpVersion local_address_ip_version = 7;
-
- // See :option:`--log-level` for details.
- string log_level = 8;
-
- // See :option:`--component-log-level` for details.
- string component_log_level = 9;
-
- // See :option:`--log-format` for details.
- string log_format = 10;
-
- // See :option:`--log-format-escaped` for details.
- bool log_format_escaped = 27;
-
- // See :option:`--log-path` for details.
- string log_path = 11;
-
- // See :option:`--service-cluster` for details.
- string service_cluster = 13;
-
- // See :option:`--service-node` for details.
- string service_node = 14;
-
- // See :option:`--service-zone` for details.
- string service_zone = 15;
-
- // See :option:`--file-flush-interval-msec` for details.
- google.protobuf.Duration file_flush_interval = 16;
-
- // See :option:`--drain-time-s` for details.
- google.protobuf.Duration drain_time = 17;
-
- // See :option:`--drain-strategy` for details.
- DrainStrategy drain_strategy = 33;
-
- // See :option:`--parent-shutdown-time-s` for details.
- google.protobuf.Duration parent_shutdown_time = 18;
-
- // See :option:`--mode` for details.
- Mode mode = 19;
-
- // See :option:`--disable-hot-restart` for details.
- bool disable_hot_restart = 22;
-
- // See :option:`--enable-mutex-tracing` for details.
- bool enable_mutex_tracing = 23;
-
- // See :option:`--restart-epoch` for details.
- uint32 restart_epoch = 24;
-
- // See :option:`--cpuset-threads` for details.
- bool cpuset_threads = 25;
-
- // See :option:`--disable-extensions` for details.
- repeated string disabled_extensions = 28;
-
- // See :option:`--bootstrap-version` for details.
- uint32 bootstrap_version = 29;
-
- // See :option:`--enable-fine-grain-logging` for details.
- bool enable_fine_grain_logging = 34;
-
- // See :option:`--socket-path` for details.
- string socket_path = 35;
-
- // See :option:`--socket-mode` for details.
- uint32 socket_mode = 36;
-}
diff --git a/api/envoy/admin/v4alpha/tap.proto b/api/envoy/admin/v4alpha/tap.proto
deleted file mode 100644
index e892593804..0000000000
--- a/api/envoy/admin/v4alpha/tap.proto
+++ /dev/null
@@ -1,28 +0,0 @@
-syntax = "proto3";
-
-package envoy.admin.v4alpha;
-
-import "envoy/config/tap/v4alpha/common.proto";
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-import "validate/validate.proto";
-
-option java_package = "io.envoyproxy.envoy.admin.v4alpha";
-option java_outer_classname = "TapProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: Tap]
-
-// The /tap admin request body that is used to configure an active tap session.
-message TapRequest {
- option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.TapRequest";
-
- // The opaque configuration ID used to match the configuration to a loaded extension.
- // A tap extension configures a similar opaque ID that is used to match.
- string config_id = 1 [(validate.rules).string = {min_len: 1}];
-
- // The tap configuration to load.
- config.tap.v4alpha.TapConfig tap_config = 2 [(validate.rules).message = {required: true}];
-}
diff --git a/api/envoy/annotations/deprecation.proto b/api/envoy/annotations/deprecation.proto
index 7f9b64e32b..c9a96f1ae2 100644
--- a/api/envoy/annotations/deprecation.proto
+++ b/api/envoy/annotations/deprecation.proto
@@ -1,22 +1,34 @@
syntax = "proto3";
package envoy.annotations;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/annotations";
import "google/protobuf/descriptor.proto";
// [#protodoc-title: Deprecation]
-// Allows tagging proto fields as fatal by default. One Envoy release after
-// deprecation, deprecated fields will be disallowed by default, a state which
-// is reversible with :ref:`runtime overrides `.
+// Adds annotations for deprecated fields and enums to allow tagging proto
+// fields as fatal by default and the minor version on which the field was
+// deprecated. One Envoy release after deprecation, deprecated fields will be
+// disallowed by default, a state which is reversible with
+// :ref:`runtime overrides `.
// Magic number in this file derived from top 28bit of SHA256 digest of
-// "envoy.annotation.disallowed_by_default"
+// "envoy.annotation.disallowed_by_default" and "envoy.annotation.deprecated_at_minor_version"
extend google.protobuf.FieldOptions {
bool disallowed_by_default = 189503207;
+
+ // The API major and minor version on which the field was deprecated
+ // (e.g., "3.5" for major version 3 and minor version 5).
+ string deprecated_at_minor_version = 157299826;
}
// Magic number in this file derived from top 28bit of SHA256 digest of
-// "envoy.annotation.disallowed_by_default_enum"
+// "envoy.annotation.disallowed_by_default_enum" and
+// "envoy.annotation.deprecated_at_minor_version_eum"
extend google.protobuf.EnumValueOptions {
bool disallowed_by_default_enum = 70100853;
+
+ // The API major and minor version on which the enum value was deprecated
+ // (e.g., "3.5" for major version 3 and minor version 5).
+ string deprecated_at_minor_version_enum = 181198657;
}
diff --git a/api/envoy/annotations/resource.proto b/api/envoy/annotations/resource.proto
index bd794c68dd..3877afc7fe 100644
--- a/api/envoy/annotations/resource.proto
+++ b/api/envoy/annotations/resource.proto
@@ -1,6 +1,7 @@
syntax = "proto3";
package envoy.annotations;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/annotations";
import "google/protobuf/descriptor.proto";
diff --git a/api/envoy/api/v2/auth/cert.proto b/api/envoy/api/v2/auth/cert.proto
index 49e8b8c70f..81e2672d9b 100644
--- a/api/envoy/api/v2/auth/cert.proto
+++ b/api/envoy/api/v2/auth/cert.proto
@@ -3,7 +3,6 @@ syntax = "proto3";
package envoy.api.v2.auth;
import "udpa/annotations/migrate.proto";
-import "udpa/annotations/status.proto";
import public "envoy/api/v2/auth/common.proto";
import public "envoy/api/v2/auth/secret.proto";
@@ -12,5 +11,6 @@ import public "envoy/api/v2/auth/tls.proto";
option java_package = "io.envoyproxy.envoy.api.v2.auth";
option java_outer_classname = "CertProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/auth";
option (udpa.annotations.file_migrate).move_to_package =
"envoy.extensions.transport_sockets.tls.v3";
diff --git a/api/envoy/api/v2/auth/common.proto b/api/envoy/api/v2/auth/common.proto
index c8122f4010..cd55ccd4db 100644
--- a/api/envoy/api/v2/auth/common.proto
+++ b/api/envoy/api/v2/auth/common.proto
@@ -17,6 +17,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.auth";
option java_outer_classname = "CommonProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/auth";
option (udpa.annotations.file_migrate).move_to_package =
"envoy.extensions.transport_sockets.tls.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
@@ -41,8 +42,7 @@ message TlsParameters {
TLSv1_3 = 4;
}
- // Minimum TLS protocol version. By default, it's ``TLSv1_2`` for clients and ``TLSv1_0`` for
- // servers.
+ // Minimum TLS protocol version. By default, it's ``TLSv1_2`` for both clients and servers.
TlsProtocol tls_minimum_protocol_version = 1 [(validate.rules).enum = {defined_only: true}];
// Maximum TLS protocol version. By default, it's ``TLSv1_2`` for clients and ``TLSv1_3`` for
diff --git a/api/envoy/api/v2/auth/secret.proto b/api/envoy/api/v2/auth/secret.proto
index 3a6d8cf7dc..4a4ab3bf16 100644
--- a/api/envoy/api/v2/auth/secret.proto
+++ b/api/envoy/api/v2/auth/secret.proto
@@ -13,6 +13,7 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.api.v2.auth";
option java_outer_classname = "SecretProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/auth";
option (udpa.annotations.file_migrate).move_to_package =
"envoy.extensions.transport_sockets.tls.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/auth/tls.proto b/api/envoy/api/v2/auth/tls.proto
index 201973a2b9..911ada77d3 100644
--- a/api/envoy/api/v2/auth/tls.proto
+++ b/api/envoy/api/v2/auth/tls.proto
@@ -15,6 +15,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.auth";
option java_outer_classname = "TlsProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/auth";
option (udpa.annotations.file_migrate).move_to_package =
"envoy.extensions.transport_sockets.tls.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
@@ -81,10 +82,9 @@ message DownstreamTlsContext {
bool disable_stateless_session_resumption = 7;
}
- // If specified, session_timeout will change maximum lifetime (in seconds) of TLS session
- // Currently this value is used as a hint to `TLS session ticket lifetime (for TLSv1.2)
- // `
- // only seconds could be specified (fractional seconds are going to be ignored).
+ // If specified, ``session_timeout`` will change the maximum lifetime (in seconds) of the TLS session.
+ // Currently this value is used as a hint for the `TLS session ticket lifetime (for TLSv1.2) `_.
+ // Only seconds can be specified (fractional seconds are ignored).
google.protobuf.Duration session_timeout = 6 [(validate.rules).duration = {
lt {seconds: 4294967296}
gte {}
diff --git a/api/envoy/api/v2/cds.proto b/api/envoy/api/v2/cds.proto
index 0b657a0fa4..38f7c3c19e 100644
--- a/api/envoy/api/v2/cds.proto
+++ b/api/envoy/api/v2/cds.proto
@@ -15,6 +15,7 @@ import public "envoy/api/v2/cluster.proto";
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;
diff --git a/api/envoy/api/v2/cluster.proto b/api/envoy/api/v2/cluster.proto
index fab95f71b7..b1b6751de4 100644
--- a/api/envoy/api/v2/cluster.proto
+++ b/api/envoy/api/v2/cluster.proto
@@ -27,6 +27,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "ClusterProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.cluster.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/cluster/circuit_breaker.proto b/api/envoy/api/v2/cluster/circuit_breaker.proto
index 510619b264..c45409bcc7 100644
--- a/api/envoy/api/v2/cluster/circuit_breaker.proto
+++ b/api/envoy/api/v2/cluster/circuit_breaker.proto
@@ -14,8 +14,9 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.cluster";
option java_outer_classname = "CircuitBreakerProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster";
option csharp_namespace = "Envoy.Api.V2.ClusterNS";
-option ruby_package = "Envoy.Api.V2.ClusterNS";
+option ruby_package = "Envoy::Api::V2::ClusterNS";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.cluster.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/cluster/filter.proto b/api/envoy/api/v2/cluster/filter.proto
index b87ad79d8f..1609be4ca2 100644
--- a/api/envoy/api/v2/cluster/filter.proto
+++ b/api/envoy/api/v2/cluster/filter.proto
@@ -11,8 +11,9 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.cluster";
option java_outer_classname = "FilterProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster";
option csharp_namespace = "Envoy.Api.V2.ClusterNS";
-option ruby_package = "Envoy.Api.V2.ClusterNS";
+option ruby_package = "Envoy::Api::V2::ClusterNS";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.cluster.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/cluster/outlier_detection.proto b/api/envoy/api/v2/cluster/outlier_detection.proto
index 6cf35e41ff..ec8c6ee731 100644
--- a/api/envoy/api/v2/cluster/outlier_detection.proto
+++ b/api/envoy/api/v2/cluster/outlier_detection.proto
@@ -12,8 +12,9 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.cluster";
option java_outer_classname = "OutlierDetectionProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster";
option csharp_namespace = "Envoy.Api.V2.ClusterNS";
-option ruby_package = "Envoy.Api.V2.ClusterNS";
+option ruby_package = "Envoy::Api::V2::ClusterNS";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.cluster.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/core/address.proto b/api/envoy/api/v2/core/address.proto
index 804da53958..3399538be1 100644
--- a/api/envoy/api/v2/core/address.proto
+++ b/api/envoy/api/v2/core/address.proto
@@ -13,6 +13,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "AddressProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
@@ -129,6 +130,6 @@ message CidrRange {
// IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``.
string address_prefix = 1 [(validate.rules).string = {min_bytes: 1}];
- // Length of prefix, e.g. 0, 32.
+ // Length of prefix, e.g. 0, 32. Defaults to 0 when unset.
google.protobuf.UInt32Value prefix_len = 2 [(validate.rules).uint32 = {lte: 128}];
}
diff --git a/api/envoy/api/v2/core/backoff.proto b/api/envoy/api/v2/core/backoff.proto
index e45c71e39b..845dfce39e 100644
--- a/api/envoy/api/v2/core/backoff.proto
+++ b/api/envoy/api/v2/core/backoff.proto
@@ -11,6 +11,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "BackoffProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/core/base.proto b/api/envoy/api/v2/core/base.proto
index 39846bc658..94b346bc3e 100644
--- a/api/envoy/api/v2/core/base.proto
+++ b/api/envoy/api/v2/core/base.proto
@@ -9,7 +9,6 @@ import "envoy/type/percent.proto";
import "envoy/type/semantic_version.proto";
import "google/protobuf/any.proto";
-import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/wrappers.proto";
@@ -22,6 +21,7 @@ import public "envoy/api/v2/core/socket_option.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "BaseProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/core/config_source.proto b/api/envoy/api/v2/core/config_source.proto
index 6cf44dbe9b..b3b400ae64 100644
--- a/api/envoy/api/v2/core/config_source.proto
+++ b/api/envoy/api/v2/core/config_source.proto
@@ -15,6 +15,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "ConfigSourceProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/core/event_service_config.proto b/api/envoy/api/v2/core/event_service_config.proto
index f822f8c6b6..12ec25d4d4 100644
--- a/api/envoy/api/v2/core/event_service_config.proto
+++ b/api/envoy/api/v2/core/event_service_config.proto
@@ -11,6 +11,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "EventServiceConfigProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/core/grpc_method_list.proto b/api/envoy/api/v2/core/grpc_method_list.proto
index 3d646484b3..b4dbe69c7f 100644
--- a/api/envoy/api/v2/core/grpc_method_list.proto
+++ b/api/envoy/api/v2/core/grpc_method_list.proto
@@ -9,6 +9,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "GrpcMethodListProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/core/grpc_service.proto b/api/envoy/api/v2/core/grpc_service.proto
index dd789644e1..faafb7f0f7 100644
--- a/api/envoy/api/v2/core/grpc_service.proto
+++ b/api/envoy/api/v2/core/grpc_service.proto
@@ -17,6 +17,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "GrpcServiceProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/core/health_check.proto b/api/envoy/api/v2/core/health_check.proto
index bc4ae3e5c8..347ac9c96b 100644
--- a/api/envoy/api/v2/core/health_check.proto
+++ b/api/envoy/api/v2/core/health_check.proto
@@ -21,6 +21,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "HealthCheckProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/core/http_uri.proto b/api/envoy/api/v2/core/http_uri.proto
index cd1a0660e3..cb95125b90 100644
--- a/api/envoy/api/v2/core/http_uri.proto
+++ b/api/envoy/api/v2/core/http_uri.proto
@@ -11,6 +11,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "HttpUriProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/core/protocol.proto b/api/envoy/api/v2/core/protocol.proto
index c45e6bcdc8..906a040905 100644
--- a/api/envoy/api/v2/core/protocol.proto
+++ b/api/envoy/api/v2/core/protocol.proto
@@ -12,6 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "ProtocolProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
@@ -99,6 +100,8 @@ message Http1ProtocolOptions {
message ProperCaseWords {
}
+ // custom message is datawire code
+ // remove if possible
message Custom {
// Custom header rewrite rules.
// In each rule of the map, the key is a case-insensitive header name. The value
@@ -117,7 +120,7 @@ message Http1ProtocolOptions {
// are not covered. For example, the "TE" header will be formatted as "Te".
ProperCaseWords proper_case_words = 1;
- // Formats the header according to custom rules.
+ // Formats the header according to custom rules
Custom custom = 2;
}
}
diff --git a/api/envoy/api/v2/core/socket_option.proto b/api/envoy/api/v2/core/socket_option.proto
index 39678ad1b8..da8140596d 100644
--- a/api/envoy/api/v2/core/socket_option.proto
+++ b/api/envoy/api/v2/core/socket_option.proto
@@ -9,6 +9,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.core";
option java_outer_classname = "SocketOptionProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/core";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.core.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/discovery.proto b/api/envoy/api/v2/discovery.proto
index da2690f867..fc5370688a 100644
--- a/api/envoy/api/v2/discovery.proto
+++ b/api/envoy/api/v2/discovery.proto
@@ -13,6 +13,7 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "DiscoveryProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.discovery.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/eds.proto b/api/envoy/api/v2/eds.proto
index b0d5c7c473..4bd9235555 100644
--- a/api/envoy/api/v2/eds.proto
+++ b/api/envoy/api/v2/eds.proto
@@ -5,19 +5,17 @@ package envoy.api.v2;
import "envoy/api/v2/discovery.proto";
import "google/api/annotations.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/wrappers.proto";
import "envoy/annotations/resource.proto";
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
-import "validate/validate.proto";
import public "envoy/api/v2/endpoint.proto";
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;
diff --git a/api/envoy/api/v2/endpoint.proto b/api/envoy/api/v2/endpoint.proto
index 92a2b13a89..13e90521b6 100644
--- a/api/envoy/api/v2/endpoint.proto
+++ b/api/envoy/api/v2/endpoint.proto
@@ -5,7 +5,6 @@ package envoy.api.v2;
import "envoy/api/v2/endpoint/endpoint_components.proto";
import "envoy/type/percent.proto";
-import "google/api/annotations.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
@@ -16,6 +15,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "EndpointProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.endpoint.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/endpoint/endpoint.proto b/api/envoy/api/v2/endpoint/endpoint.proto
index 9724fd7281..2c2e9daa5c 100644
--- a/api/envoy/api/v2/endpoint/endpoint.proto
+++ b/api/envoy/api/v2/endpoint/endpoint.proto
@@ -2,10 +2,9 @@ syntax = "proto3";
package envoy.api.v2.endpoint;
-import "udpa/annotations/status.proto";
-
import public "envoy/api/v2/endpoint/endpoint_components.proto";
option java_package = "io.envoyproxy.envoy.api.v2.endpoint";
option java_outer_classname = "EndpointProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/endpoint";
diff --git a/api/envoy/api/v2/endpoint/endpoint_components.proto b/api/envoy/api/v2/endpoint/endpoint_components.proto
index 78d45e2e08..86a533bf0e 100644
--- a/api/envoy/api/v2/endpoint/endpoint_components.proto
+++ b/api/envoy/api/v2/endpoint/endpoint_components.proto
@@ -15,6 +15,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.endpoint";
option java_outer_classname = "EndpointComponentsProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/endpoint";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.endpoint.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/endpoint/load_report.proto b/api/envoy/api/v2/endpoint/load_report.proto
index 928aed6102..09dda612e4 100644
--- a/api/envoy/api/v2/endpoint/load_report.proto
+++ b/api/envoy/api/v2/endpoint/load_report.proto
@@ -15,6 +15,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.endpoint";
option java_outer_classname = "LoadReportProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/endpoint";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.endpoint.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/lds.proto b/api/envoy/api/v2/lds.proto
index d1e528f247..9c66e5426d 100644
--- a/api/envoy/api/v2/lds.proto
+++ b/api/envoy/api/v2/lds.proto
@@ -5,19 +5,17 @@ package envoy.api.v2;
import "envoy/api/v2/discovery.proto";
import "google/api/annotations.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/wrappers.proto";
import "envoy/annotations/resource.proto";
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
-import "validate/validate.proto";
import public "envoy/api/v2/listener.proto";
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;
diff --git a/api/envoy/api/v2/listener.proto b/api/envoy/api/v2/listener.proto
index a93df10c31..139816dc28 100644
--- a/api/envoy/api/v2/listener.proto
+++ b/api/envoy/api/v2/listener.proto
@@ -10,7 +10,6 @@ import "envoy/api/v2/listener/udp_listener_config.proto";
import "envoy/config/filter/accesslog/v2/accesslog.proto";
import "envoy/config/listener/v2/api_listener.proto";
-import "google/api/annotations.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
@@ -21,6 +20,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "ListenerProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.listener.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
@@ -196,6 +196,8 @@ message Listener {
google.protobuf.UInt32Value tcp_fast_open_queue_length = 12;
// Specifies the intended direction of the traffic relative to the local Envoy.
+ // This property is required on Windows for listeners using the original destination filter,
+ // see :ref:`Original Destination `.
core.TrafficDirection traffic_direction = 16;
// If the protocol in the listener socket address in :ref:`protocol
diff --git a/api/envoy/api/v2/listener/listener.proto b/api/envoy/api/v2/listener/listener.proto
index 671da24b04..d007ba51c1 100644
--- a/api/envoy/api/v2/listener/listener.proto
+++ b/api/envoy/api/v2/listener/listener.proto
@@ -2,12 +2,11 @@ syntax = "proto3";
package envoy.api.v2.listener;
-import "udpa/annotations/status.proto";
-
import public "envoy/api/v2/listener/listener_components.proto";
option java_package = "io.envoyproxy.envoy.api.v2.listener";
option java_outer_classname = "ListenerProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/listener";
option csharp_namespace = "Envoy.Api.V2.ListenerNS";
-option ruby_package = "Envoy.Api.V2.ListenerNS";
+option ruby_package = "Envoy::Api::V2::ListenerNS";
diff --git a/api/envoy/api/v2/listener/listener_components.proto b/api/envoy/api/v2/listener/listener_components.proto
index a6791c86cd..4ebae87f5d 100644
--- a/api/envoy/api/v2/listener/listener_components.proto
+++ b/api/envoy/api/v2/listener/listener_components.proto
@@ -18,8 +18,9 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.listener";
option java_outer_classname = "ListenerComponentsProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/listener";
option csharp_namespace = "Envoy.Api.V2.ListenerNS";
-option ruby_package = "Envoy.Api.V2.ListenerNS";
+option ruby_package = "Envoy::Api::V2::ListenerNS";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.listener.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
@@ -230,7 +231,7 @@ message FilterChain {
// rules:
// - destination_port_range:
// start: 3306
-// end: 3306
+// end: 3307
// - destination_port_range:
// start: 15000
// end: 15001
diff --git a/api/envoy/api/v2/listener/quic_config.proto b/api/envoy/api/v2/listener/quic_config.proto
index 2a4616bb09..c6d5028f5a 100644
--- a/api/envoy/api/v2/listener/quic_config.proto
+++ b/api/envoy/api/v2/listener/quic_config.proto
@@ -11,8 +11,9 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.api.v2.listener";
option java_outer_classname = "QuicConfigProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/listener";
option csharp_namespace = "Envoy.Api.V2.ListenerNS";
-option ruby_package = "Envoy.Api.V2.ListenerNS";
+option ruby_package = "Envoy::Api::V2::ListenerNS";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.listener.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/listener/udp_listener_config.proto b/api/envoy/api/v2/listener/udp_listener_config.proto
index d4d29531f3..d1642ab421 100644
--- a/api/envoy/api/v2/listener/udp_listener_config.proto
+++ b/api/envoy/api/v2/listener/udp_listener_config.proto
@@ -11,8 +11,9 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.api.v2.listener";
option java_outer_classname = "UdpListenerConfigProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/listener";
option csharp_namespace = "Envoy.Api.V2.ListenerNS";
-option ruby_package = "Envoy.Api.V2.ListenerNS";
+option ruby_package = "Envoy::Api::V2::ListenerNS";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.listener.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/ratelimit/ratelimit.proto b/api/envoy/api/v2/ratelimit/ratelimit.proto
index 5ac72c69a6..7245692a1e 100644
--- a/api/envoy/api/v2/ratelimit/ratelimit.proto
+++ b/api/envoy/api/v2/ratelimit/ratelimit.proto
@@ -9,6 +9,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.ratelimit";
option java_outer_classname = "RatelimitProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/ratelimit";
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.common.ratelimit.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/rds.proto b/api/envoy/api/v2/rds.proto
index fad73f1758..2ac30541ae 100644
--- a/api/envoy/api/v2/rds.proto
+++ b/api/envoy/api/v2/rds.proto
@@ -5,18 +5,17 @@ package envoy.api.v2;
import "envoy/api/v2/discovery.proto";
import "google/api/annotations.proto";
-import "google/protobuf/wrappers.proto";
import "envoy/annotations/resource.proto";
import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
-import "validate/validate.proto";
import public "envoy/api/v2/route.proto";
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;
diff --git a/api/envoy/api/v2/route.proto b/api/envoy/api/v2/route.proto
index 549f134a7f..4f9e40a440 100644
--- a/api/envoy/api/v2/route.proto
+++ b/api/envoy/api/v2/route.proto
@@ -15,6 +15,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "RouteProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.route.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/route/route.proto b/api/envoy/api/v2/route/route.proto
index 92e44f1e19..0c52d051dd 100644
--- a/api/envoy/api/v2/route/route.proto
+++ b/api/envoy/api/v2/route/route.proto
@@ -2,10 +2,9 @@ syntax = "proto3";
package envoy.api.v2.route;
-import "udpa/annotations/status.proto";
-
import public "envoy/api/v2/route/route_components.proto";
option java_package = "io.envoyproxy.envoy.api.v2.route";
option java_outer_classname = "RouteProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/route";
diff --git a/api/envoy/api/v2/route/route_components.proto b/api/envoy/api/v2/route/route_components.proto
index 7915e3d67d..062e73231d 100644
--- a/api/envoy/api/v2/route/route_components.proto
+++ b/api/envoy/api/v2/route/route_components.proto
@@ -22,6 +22,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2.route";
option java_outer_classname = "RouteComponentsProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/route";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.route.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
@@ -675,8 +676,8 @@ message RouteAction {
message FilterState {
// The name of the Object in the per-request filterState, which is an
- // Envoy::Http::Hashable object. If there is no data associated with the key,
- // or the stored object is not Envoy::Http::Hashable, no hash will be produced.
+ // Envoy::Hashable object. If there is no data associated with the key,
+ // or the stored object is not Envoy::Hashable, no hash will be produced.
string key = 1 [(validate.rules).string = {min_bytes: 1}];
}
@@ -1149,7 +1150,7 @@ message HedgePolicy {
bool hedge_on_per_try_timeout = 3;
}
-// [#next-free-field: 10]
+// [#next-free-field: 9]
message RedirectAction {
enum RedirectResponseCode {
// Moved Permanently HTTP Status Code - 301.
@@ -1218,31 +1219,6 @@ message RedirectAction {
// :ref:`RouteAction's prefix_rewrite `.
string prefix_rewrite = 5
[(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
-
- // Indicates that during redirect, portions of the path that match the
- // pattern should be rewritten, even allowing the substitution of capture
- // groups from the pattern into the new path as specified by the rewrite
- // substitution string. This is useful to allow application paths to be
- // rewritten in a way that is aware of segments with variable content like
- // identifiers.
- //
- // Examples using Google's `RE2 `_ engine:
- //
- // * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution
- // string of ``\2/instance/\1`` would transform ``/service/foo/v1/api``
- // into ``/v1/api/instance/foo``.
- //
- // * The pattern ``one`` paired with a substitution string of ``two`` would
- // transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``.
- //
- // * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of
- // ``\1two\2`` would replace only the first occurrence of ``one``,
- // transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``.
- //
- // * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/``
- // would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to
- // ``/aaa/yyy/bbb``.
- type.matcher.RegexMatchAndSubstitute regex_rewrite = 9;
}
// The HTTP status code to use in the redirect response. The default response
diff --git a/api/envoy/api/v2/scoped_route.proto b/api/envoy/api/v2/scoped_route.proto
index 0841bd0872..f3902d9d9e 100644
--- a/api/envoy/api/v2/scoped_route.proto
+++ b/api/envoy/api/v2/scoped_route.proto
@@ -9,6 +9,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.api.v2";
option java_outer_classname = "ScopedRouteProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.route.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/api/v2/srds.proto b/api/envoy/api/v2/srds.proto
index 0edb99a1ec..4f0ecab765 100644
--- a/api/envoy/api/v2/srds.proto
+++ b/api/envoy/api/v2/srds.proto
@@ -15,6 +15,7 @@ import public "envoy/api/v2/scoped_route.proto";
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;
diff --git a/api/envoy/config/accesslog/v2/als.proto b/api/envoy/config/accesslog/v2/als.proto
index 5b4106af10..38f5edff84 100644
--- a/api/envoy/config/accesslog/v2/als.proto
+++ b/api/envoy/config/accesslog/v2/als.proto
@@ -14,6 +14,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.accesslog.v2";
option java_outer_classname = "AlsProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/accesslog/v2;accesslogv2";
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.access_loggers.grpc.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/config/accesslog/v2/file.proto b/api/envoy/config/accesslog/v2/file.proto
index 9b8671c813..0619493362 100644
--- a/api/envoy/config/accesslog/v2/file.proto
+++ b/api/envoy/config/accesslog/v2/file.proto
@@ -11,6 +11,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.accesslog.v2";
option java_outer_classname = "FileProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/accesslog/v2;accesslogv2";
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.access_loggers.file.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/config/accesslog/v3/accesslog.proto b/api/envoy/config/accesslog/v3/accesslog.proto
index d85c6af829..cdf5877cef 100644
--- a/api/envoy/config/accesslog/v3/accesslog.proto
+++ b/api/envoy/config/accesslog/v3/accesslog.proto
@@ -8,7 +8,6 @@ import "envoy/type/matcher/v3/metadata.proto";
import "envoy/type/v3/percent.proto";
import "google/protobuf/any.proto";
-import "google/protobuf/struct.proto";
import "google/protobuf/wrappers.proto";
import "udpa/annotations/status.proto";
@@ -18,6 +17,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.accesslog.v3";
option java_outer_classname = "AccesslogProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/accesslog/v3;accesslogv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Common access log types]
@@ -30,26 +30,14 @@ message AccessLog {
reserved "config";
- // The name of the access log implementation to instantiate. The name must
- // match a statically registered access log. Current built-in loggers include:
- //
- // #. "envoy.access_loggers.file"
- // #. "envoy.access_loggers.http_grpc"
- // #. "envoy.access_loggers.tcp_grpc"
+ // The name of the access log extension configuration.
string name = 1;
// Filter which is used to determine if the access log needs to be written.
AccessLogFilter filter = 2;
- // Custom configuration that depends on the access log being instantiated.
- // Built-in configurations include:
- //
- // #. "envoy.access_loggers.file": :ref:`FileAccessLog
- // `
- // #. "envoy.access_loggers.http_grpc": :ref:`HttpGrpcAccessLogConfig
- // `
- // #. "envoy.access_loggers.tcp_grpc": :ref:`TcpGrpcAccessLogConfig
- // `
+ // Custom configuration that must be set according to the access logger extension being instantiated.
+ // [#extension-category: envoy.access_loggers]
oneof config_type {
google.protobuf.Any typed_config = 4;
}
@@ -94,6 +82,7 @@ message AccessLogFilter {
GrpcStatusFilter grpc_status_filter = 10;
// Extension filter.
+ // [#extension-category: envoy.access_loggers.extension_filters]
ExtensionFilter extension_filter = 11;
// Metadata Filter
@@ -180,8 +169,8 @@ message RuntimeFilter {
// randomly sample based on the runtime key value alone.
// *use_independent_randomness* can be used for logging kill switches within
// complex nested :ref:`AndFilter
- // ` and :ref:`OrFilter
- // ` blocks that are easier to
+ // ` and :ref:`OrFilter
+ // ` blocks that are easier to
// reason about from a probability perspective (i.e., setting to true will
// cause the filter to behave like an independent random variable when
// composed within logical operator filters).
@@ -255,6 +244,9 @@ message ResponseFlagFilter {
in: "RFCF"
in: "NFCF"
in: "DT"
+ in: "UPE"
+ in: "NC"
+ in: "OM"
}
}
}];
diff --git a/api/envoy/config/accesslog/v4alpha/accesslog.proto b/api/envoy/config/accesslog/v4alpha/accesslog.proto
deleted file mode 100644
index 73769ca8ae..0000000000
--- a/api/envoy/config/accesslog/v4alpha/accesslog.proto
+++ /dev/null
@@ -1,334 +0,0 @@
-syntax = "proto3";
-
-package envoy.config.accesslog.v4alpha;
-
-import "envoy/config/core/v4alpha/base.proto";
-import "envoy/config/route/v4alpha/route_components.proto";
-import "envoy/type/matcher/v4alpha/metadata.proto";
-import "envoy/type/v3/percent.proto";
-
-import "google/protobuf/any.proto";
-import "google/protobuf/struct.proto";
-import "google/protobuf/wrappers.proto";
-
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-import "validate/validate.proto";
-
-option java_package = "io.envoyproxy.envoy.config.accesslog.v4alpha";
-option java_outer_classname = "AccesslogProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: Common access log types]
-
-message AccessLog {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.AccessLog";
-
- reserved 3;
-
- reserved "config";
-
- // The name of the access log implementation to instantiate. The name must
- // match a statically registered access log. Current built-in loggers include:
- //
- // #. "envoy.access_loggers.file"
- // #. "envoy.access_loggers.http_grpc"
- // #. "envoy.access_loggers.tcp_grpc"
- string name = 1;
-
- // Filter which is used to determine if the access log needs to be written.
- AccessLogFilter filter = 2;
-
- // Custom configuration that depends on the access log being instantiated.
- // Built-in configurations include:
- //
- // #. "envoy.access_loggers.file": :ref:`FileAccessLog
- // `
- // #. "envoy.access_loggers.http_grpc": :ref:`HttpGrpcAccessLogConfig
- // `
- // #. "envoy.access_loggers.tcp_grpc": :ref:`TcpGrpcAccessLogConfig
- // `
- oneof config_type {
- google.protobuf.Any typed_config = 4;
- }
-}
-
-// [#next-free-field: 13]
-message AccessLogFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.AccessLogFilter";
-
- oneof filter_specifier {
- option (validate.required) = true;
-
- // Status code filter.
- StatusCodeFilter status_code_filter = 1;
-
- // Duration filter.
- DurationFilter duration_filter = 2;
-
- // Not health check filter.
- NotHealthCheckFilter not_health_check_filter = 3;
-
- // Traceable filter.
- TraceableFilter traceable_filter = 4;
-
- // Runtime filter.
- RuntimeFilter runtime_filter = 5;
-
- // And filter.
- AndFilter and_filter = 6;
-
- // Or filter.
- OrFilter or_filter = 7;
-
- // Header filter.
- HeaderFilter header_filter = 8;
-
- // Response flag filter.
- ResponseFlagFilter response_flag_filter = 9;
-
- // gRPC status filter.
- GrpcStatusFilter grpc_status_filter = 10;
-
- // Extension filter.
- ExtensionFilter extension_filter = 11;
-
- // Metadata Filter
- MetadataFilter metadata_filter = 12;
- }
-}
-
-// Filter on an integer comparison.
-message ComparisonFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.ComparisonFilter";
-
- enum Op {
- // =
- EQ = 0;
-
- // >=
- GE = 1;
-
- // <=
- LE = 2;
- }
-
- // Comparison operator.
- Op op = 1 [(validate.rules).enum = {defined_only: true}];
-
- // Value to compare against.
- core.v4alpha.RuntimeUInt32 value = 2;
-}
-
-// Filters on HTTP response/status code.
-message StatusCodeFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.StatusCodeFilter";
-
- // Comparison.
- ComparisonFilter comparison = 1 [(validate.rules).message = {required: true}];
-}
-
-// Filters on total request duration in milliseconds.
-message DurationFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.DurationFilter";
-
- // Comparison.
- ComparisonFilter comparison = 1 [(validate.rules).message = {required: true}];
-}
-
-// Filters for requests that are not health check requests. A health check
-// request is marked by the health check filter.
-message NotHealthCheckFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.NotHealthCheckFilter";
-}
-
-// Filters for requests that are traceable. See the tracing overview for more
-// information on how a request becomes traceable.
-message TraceableFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.TraceableFilter";
-}
-
-// Filters for random sampling of requests.
-message RuntimeFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.RuntimeFilter";
-
- // Runtime key to get an optional overridden numerator for use in the
- // *percent_sampled* field. If found in runtime, this value will replace the
- // default numerator.
- string runtime_key = 1 [(validate.rules).string = {min_len: 1}];
-
- // The default sampling percentage. If not specified, defaults to 0% with
- // denominator of 100.
- type.v3.FractionalPercent percent_sampled = 2;
-
- // By default, sampling pivots on the header
- // :ref:`x-request-id` being
- // present. If :ref:`x-request-id`
- // is present, the filter will consistently sample across multiple hosts based
- // on the runtime key value and the value extracted from
- // :ref:`x-request-id`. If it is
- // missing, or *use_independent_randomness* is set to true, the filter will
- // randomly sample based on the runtime key value alone.
- // *use_independent_randomness* can be used for logging kill switches within
- // complex nested :ref:`AndFilter
- // ` and :ref:`OrFilter
- // ` blocks that are easier to
- // reason about from a probability perspective (i.e., setting to true will
- // cause the filter to behave like an independent random variable when
- // composed within logical operator filters).
- bool use_independent_randomness = 3;
-}
-
-// Performs a logical “and” operation on the result of each filter in filters.
-// Filters are evaluated sequentially and if one of them returns false, the
-// filter returns false immediately.
-message AndFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.AndFilter";
-
- repeated AccessLogFilter filters = 1 [(validate.rules).repeated = {min_items: 2}];
-}
-
-// Performs a logical “or” operation on the result of each individual filter.
-// Filters are evaluated sequentially and if one of them returns true, the
-// filter returns true immediately.
-message OrFilter {
- option (udpa.annotations.versioning).previous_message_type = "envoy.config.accesslog.v3.OrFilter";
-
- repeated AccessLogFilter filters = 2 [(validate.rules).repeated = {min_items: 2}];
-}
-
-// Filters requests based on the presence or value of a request header.
-message HeaderFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.HeaderFilter";
-
- // Only requests with a header which matches the specified HeaderMatcher will
- // pass the filter check.
- route.v4alpha.HeaderMatcher header = 1 [(validate.rules).message = {required: true}];
-}
-
-// Filters requests that received responses with an Envoy response flag set.
-// A list of the response flags can be found
-// in the access log formatter
-// :ref:`documentation`.
-message ResponseFlagFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.ResponseFlagFilter";
-
- // Only responses with the any of the flags listed in this field will be
- // logged. This field is optional. If it is not specified, then any response
- // flag will pass the filter check.
- repeated string flags = 1 [(validate.rules).repeated = {
- items {
- string {
- in: "LH"
- in: "UH"
- in: "UT"
- in: "LR"
- in: "UR"
- in: "UF"
- in: "UC"
- in: "UO"
- in: "NR"
- in: "DI"
- in: "FI"
- in: "RL"
- in: "UAEX"
- in: "RLSE"
- in: "DC"
- in: "URX"
- in: "SI"
- in: "IH"
- in: "DPE"
- in: "UMSDR"
- in: "RFCF"
- in: "NFCF"
- in: "DT"
- }
- }
- }];
-}
-
-// Filters gRPC requests based on their response status. If a gRPC status is not
-// provided, the filter will infer the status from the HTTP status code.
-message GrpcStatusFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.GrpcStatusFilter";
-
- enum Status {
- OK = 0;
- CANCELED = 1;
- UNKNOWN = 2;
- INVALID_ARGUMENT = 3;
- DEADLINE_EXCEEDED = 4;
- NOT_FOUND = 5;
- ALREADY_EXISTS = 6;
- PERMISSION_DENIED = 7;
- RESOURCE_EXHAUSTED = 8;
- FAILED_PRECONDITION = 9;
- ABORTED = 10;
- OUT_OF_RANGE = 11;
- UNIMPLEMENTED = 12;
- INTERNAL = 13;
- UNAVAILABLE = 14;
- DATA_LOSS = 15;
- UNAUTHENTICATED = 16;
- }
-
- // Logs only responses that have any one of the gRPC statuses in this field.
- repeated Status statuses = 1 [(validate.rules).repeated = {items {enum {defined_only: true}}}];
-
- // If included and set to true, the filter will instead block all responses
- // with a gRPC status or inferred gRPC status enumerated in statuses, and
- // allow all other responses.
- bool exclude = 2;
-}
-
-// Filters based on matching dynamic metadata.
-// If the matcher path and key correspond to an existing key in dynamic
-// metadata, the request is logged only if the matcher value is equal to the
-// metadata value. If the matcher path and key *do not* correspond to an
-// existing key in dynamic metadata, the request is logged only if
-// match_if_key_not_found is "true" or unset.
-message MetadataFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.MetadataFilter";
-
- // Matcher to check metadata for specified value. For example, to match on the
- // access_log_hint metadata, set the filter to "envoy.common" and the path to
- // "access_log_hint", and the value to "true".
- type.matcher.v4alpha.MetadataMatcher matcher = 1;
-
- // Default result if the key does not exist in dynamic metadata: if unset or
- // true, then log; if false, then don't log.
- google.protobuf.BoolValue match_if_key_not_found = 2;
-}
-
-// Extension filter is statically registered at runtime.
-message ExtensionFilter {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.accesslog.v3.ExtensionFilter";
-
- reserved 2;
-
- reserved "config";
-
- // The name of the filter implementation to instantiate. The name must
- // match a statically registered filter.
- string name = 1;
-
- // Custom configuration that depends on the filter being instantiated.
- oneof config_type {
- google.protobuf.Any typed_config = 3;
- }
-}
diff --git a/api/envoy/config/bootstrap/v2/bootstrap.proto b/api/envoy/config/bootstrap/v2/bootstrap.proto
index 30c276f242..68a08bc37a 100644
--- a/api/envoy/config/bootstrap/v2/bootstrap.proto
+++ b/api/envoy/config/bootstrap/v2/bootstrap.proto
@@ -25,6 +25,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.bootstrap.v2";
option java_outer_classname = "BootstrapProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/bootstrap/v2;bootstrapv2";
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: Bootstrap]
diff --git a/api/envoy/config/bootstrap/v3/bootstrap.proto b/api/envoy/config/bootstrap/v3/bootstrap.proto
index c3fee5e2df..bde4d5c396 100644
--- a/api/envoy/config/bootstrap/v3/bootstrap.proto
+++ b/api/envoy/config/bootstrap/v3/bootstrap.proto
@@ -2,12 +2,14 @@ syntax = "proto3";
package envoy.config.bootstrap.v3;
+import "envoy/config/accesslog/v3/accesslog.proto";
import "envoy/config/cluster/v3/cluster.proto";
import "envoy/config/core/v3/address.proto";
import "envoy/config/core/v3/base.proto";
import "envoy/config/core/v3/config_source.proto";
import "envoy/config/core/v3/event_service_config.proto";
import "envoy/config/core/v3/extension.proto";
+import "envoy/config/core/v3/resolver.proto";
import "envoy/config/core/v3/socket_option.proto";
import "envoy/config/listener/v3/listener.proto";
import "envoy/config/metrics/v3/stats.proto";
@@ -30,15 +32,16 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.bootstrap.v3";
option java_outer_classname = "BootstrapProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/bootstrap/v3;bootstrapv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Bootstrap]
// This proto is supplied via the :option:`-c` CLI flag and acts as the root
-// of the Envoy v2 configuration. See the :ref:`v2 configuration overview
+// of the Envoy v3 configuration. See the :ref:`v3 configuration overview
// ` for more detail.
// Bootstrap :ref:`configuration overview `.
-// [#next-free-field: 30]
+// [#next-free-field: 34]
message Bootstrap {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.bootstrap.v2.Bootstrap";
@@ -47,12 +50,12 @@ message Bootstrap {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.bootstrap.v2.Bootstrap.StaticResources";
- // Static :ref:`Listeners `. These listeners are
+ // Static :ref:`Listeners `. These listeners are
// available regardless of LDS configuration.
repeated listener.v3.Listener listeners = 1;
// If a network based configuration source is specified for :ref:`cds_config
- // `, it's necessary
+ // `, it's necessary
// to have some initial cluster definitions available to allow Envoy to know
// how to speak to the management server. These cluster definitions may not
// use :ref:`EDS ` (i.e. they should be static
@@ -60,7 +63,7 @@ message Bootstrap {
repeated cluster.v3.Cluster clusters = 2;
// These static secrets can be used by :ref:`SdsSecretConfig
- // `
+ // `
repeated envoy.extensions.transport_sockets.tls.v3.Secret secrets = 3;
}
@@ -71,7 +74,7 @@ message Bootstrap {
reserved 4;
- // All :ref:`Listeners ` are provided by a single
+ // All :ref:`Listeners ` are provided by a single
// :ref:`LDS ` configuration source.
core.v3.ConfigSource lds_config = 1;
@@ -79,7 +82,7 @@ message Bootstrap {
// [#not-implemented-hide:]
string lds_resources_locator = 5;
- // All post-bootstrap :ref:`Cluster ` definitions are
+ // All post-bootstrap :ref:`Cluster ` definitions are
// provided by a single :ref:`CDS `
// configuration source.
core.v3.ConfigSource cds_config = 2;
@@ -90,10 +93,10 @@ message Bootstrap {
// A single :ref:`ADS ` source may be optionally
// specified. This must have :ref:`api_type
- // ` :ref:`GRPC
- // `. Only
- // :ref:`ConfigSources ` that have
- // the :ref:`ads ` field set will be
+ // ` :ref:`GRPC
+ // `. Only
+ // :ref:`ConfigSources ` that have
+ // the :ref:`ads ` field set will be
// streamed on the ADS channel.
core.v3.ApiConfigSource ads_config = 3;
}
@@ -151,7 +154,7 @@ message Bootstrap {
ClusterManager cluster_manager = 4;
// Health discovery service config option.
- // (:ref:`core.ApiConfigSource `)
+ // (:ref:`core.ApiConfigSource `)
core.v3.ApiConfigSource hds_config = 14;
// Optional file system path to search for startup flag files.
@@ -187,18 +190,21 @@ message Bootstrap {
// Optional watchdog configuration.
// This is for a single watchdog configuration for the entire system.
// Deprecated in favor of *watchdogs* which has finer granularity.
- Watchdog watchdog = 8 [deprecated = true];
+ Watchdog watchdog = 8
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
// Optional watchdogs configuration.
// This is used for specifying different watchdogs for the different subsystems.
+ // [#extension-category: envoy.guarddog_actions]
Watchdogs watchdogs = 27;
// Configuration for an external tracing provider.
//
// .. attention::
// This field has been deprecated in favor of :ref:`HttpConnectionManager.Tracing.provider
- // `.
- trace.v3.Tracing tracing = 9 [deprecated = true];
+ // `.
+ trace.v3.Tracing tracing = 9
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
// Configuration for the runtime configuration provider. If not
// specified, a “null” provider will be used which will result in all defaults
@@ -217,7 +223,7 @@ message Bootstrap {
// Enable :ref:`stats for event dispatcher `, defaults to false.
// Note that this records a value for each iteration of the event loop on every thread. This
// should normally be minimal overhead, but when using
- // :ref:`statsd `, it will send each observed value
+ // :ref:`statsd `, it will send each observed value
// over the wire individually because the statsd protocol doesn't have any way to represent a
// histogram summary. Be aware that this can be a very large volume of data.
bool enable_dispatcher_stats = 16;
@@ -235,21 +241,44 @@ message Bootstrap {
// Optional proxy version which will be used to set the value of :ref:`server.version statistic
// ` if specified. Envoy will not process this value, it will be sent as is to
- // :ref:`stats sinks `.
+ // :ref:`stats sinks `.
google.protobuf.UInt64Value stats_server_version_override = 19;
// Always use TCP queries instead of UDP queries for DNS lookups.
// This may be overridden on a per-cluster basis in cds_config,
- // when :ref:`dns_resolvers ` and
- // :ref:`use_tcp_for_dns_lookups ` are
+ // when :ref:`dns_resolvers ` and
+ // :ref:`use_tcp_for_dns_lookups ` are
// specified.
- // Setting this value causes failure if the
- // ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime value is true during
- // server startup. Apple' API only uses UDP for DNS resolution.
- bool use_tcp_for_dns_lookups = 20;
+ // This field is deprecated in favor of *dns_resolution_config*
+ // which aggregates all of the DNS resolver configuration in a single message.
+ bool use_tcp_for_dns_lookups = 20
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
+
+ // DNS resolution configuration which includes the underlying dns resolver addresses and options.
+ // This may be overridden on a per-cluster basis in cds_config, when
+ // :ref:`dns_resolution_config `
+ // is specified.
+ // This field is deprecated in favor of
+ // :ref:`typed_dns_resolver_config `.
+ core.v3.DnsResolutionConfig dns_resolution_config = 30
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
+
+ // DNS resolver type configuration extension. This extension can be used to configure c-ares, apple,
+ // or any other DNS resolver types and the related parameters.
+ // For example, an object of
+ // :ref:`CaresDnsResolverConfig `
+ // can be packed into this *typed_dns_resolver_config*. This configuration replaces the
+ // :ref:`dns_resolution_config `
+ // configuration.
+ // During the transition period when both *dns_resolution_config* and *typed_dns_resolver_config* exists,
+ // when *typed_dns_resolver_config* is in place, Envoy will use it and ignore *dns_resolution_config*.
+ // When *typed_dns_resolver_config* is missing, the default behavior is in place.
+ // [#extension-category: envoy.network.dns_resolver]
+ core.v3.TypedExtensionConfig typed_dns_resolver_config = 31;
// Specifies optional bootstrap extensions to be instantiated at startup time.
// Each item contains extension specific configuration.
+ // [#extension-category: envoy.bootstrap]
repeated core.v3.TypedExtensionConfig bootstrap_extensions = 21;
// Specifies optional extensions instantiated at startup time and
@@ -286,21 +315,39 @@ message Bootstrap {
// Global map of CertificateProvider instances. These instances are referred to by name in the
// :ref:`CommonTlsContext.CertificateProviderInstance.instance_name
- // `
+ // `
// field.
// [#not-implemented-hide:]
map certificate_provider_instances = 25;
+
+ // Specifies a set of headers that need to be registered as inline header. This configuration
+ // allows users to customize the inline headers on-demand at Envoy startup without modifying
+ // Envoy's source code.
+ //
+ // Note that the 'set-cookie' header cannot be registered as inline header.
+ repeated CustomInlineHeader inline_headers = 32;
+
+ // Optional path to a file with performance tracing data created by "Perfetto" SDK in binary
+ // ProtoBuf format. The default value is "envoy.pftrace".
+ string perf_tracing_file_path = 33;
}
// Administration interface :ref:`operations documentation
// `.
+// [#next-free-field: 7]
message Admin {
option (udpa.annotations.versioning).previous_message_type = "envoy.config.bootstrap.v2.Admin";
+ // Configuration for :ref:`access logs `
+ // emitted by the administration server.
+ repeated accesslog.v3.AccessLog access_log = 5;
+
// The path to write the access log for the administration server. If no
// access log is desired specify ‘/dev/null’. This is only required if
- // :ref:`address ` is set.
- string access_log_path = 1;
+ // :ref:`address ` is set.
+ // Deprecated in favor of *access_log* which offers more options.
+ string access_log_path = 1
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
// The cpu profiler output path for the administration server. If no profile
// path is specified, the default is ‘/var/log/envoy/envoy.prof’.
@@ -313,6 +360,10 @@ message Admin {
// Additional socket options that may not be present in Envoy source code or
// precompiled binaries.
repeated core.v3.SocketOption socket_options = 4;
+
+ // Indicates whether :ref:`global_downstream_max_connections `
+ // should apply to the admin interface or not.
+ bool ignore_global_conn_limit = 6;
}
// Cluster manager :ref:`architecture overview `.
@@ -337,9 +388,9 @@ message ClusterManager {
// this configuration). In order to enable :ref:`zone aware routing
// ` this option must be set.
// If *local_cluster_name* is defined then :ref:`clusters
- // ` must be defined in the :ref:`Bootstrap
+ // ` must be defined in the :ref:`Bootstrap
// static cluster resources
- // `. This is unrelated to
+ // `. This is unrelated to
// the :option:`--service-cluster` option which does not `affect zone aware
// routing `_.
string local_cluster_name = 1;
@@ -353,8 +404,8 @@ message ClusterManager {
// A management server endpoint to stream load stats to via
// *StreamLoadStats*. This must have :ref:`api_type
- // ` :ref:`GRPC
- // `.
+ // ` :ref:`GRPC
+ // `.
core.v3.ApiConfigSource load_stats_config = 4;
}
@@ -556,3 +607,43 @@ message LayeredRuntime {
// such that later layers in the list overlay earlier entries.
repeated RuntimeLayer layers = 1;
}
+
+// Used to specify the header that needs to be registered as an inline header.
+//
+// If request or response contain multiple headers with the same name and the header
+// name is registered as an inline header. Then multiple headers will be folded
+// into one, and multiple header values will be concatenated by a suitable delimiter.
+// The delimiter is generally a comma.
+//
+// For example, if 'foo' is registered as an inline header, and the headers contains
+// the following two headers:
+//
+// .. code-block:: text
+//
+// foo: bar
+// foo: eep
+//
+// Then they will eventually be folded into:
+//
+// .. code-block:: text
+//
+// foo: bar, eep
+//
+// Inline headers provide O(1) search performance, but each inline header imposes
+// an additional memory overhead on all instances of the corresponding type of
+// HeaderMap or TrailerMap.
+message CustomInlineHeader {
+ enum InlineHeaderType {
+ REQUEST_HEADER = 0;
+ REQUEST_TRAILER = 1;
+ RESPONSE_HEADER = 2;
+ RESPONSE_TRAILER = 3;
+ }
+
+ // The name of the header that is expected to be set as the inline header.
+ string inline_header_name = 1
+ [(validate.rules).string = {min_len: 1 well_known_regex: HTTP_HEADER_NAME strict: false}];
+
+ // The type of the header that is expected to be set as the inline header.
+ InlineHeaderType inline_header_type = 2 [(validate.rules).enum = {defined_only: true}];
+}
diff --git a/api/envoy/config/bootstrap/v4alpha/bootstrap.proto b/api/envoy/config/bootstrap/v4alpha/bootstrap.proto
deleted file mode 100644
index b4aceffc91..0000000000
--- a/api/envoy/config/bootstrap/v4alpha/bootstrap.proto
+++ /dev/null
@@ -1,550 +0,0 @@
-syntax = "proto3";
-
-package envoy.config.bootstrap.v4alpha;
-
-import "envoy/config/cluster/v4alpha/cluster.proto";
-import "envoy/config/core/v4alpha/address.proto";
-import "envoy/config/core/v4alpha/base.proto";
-import "envoy/config/core/v4alpha/config_source.proto";
-import "envoy/config/core/v4alpha/event_service_config.proto";
-import "envoy/config/core/v4alpha/extension.proto";
-import "envoy/config/core/v4alpha/socket_option.proto";
-import "envoy/config/listener/v4alpha/listener.proto";
-import "envoy/config/metrics/v4alpha/stats.proto";
-import "envoy/config/overload/v3/overload.proto";
-import "envoy/extensions/transport_sockets/tls/v4alpha/secret.proto";
-import "envoy/type/v3/percent.proto";
-
-import "google/protobuf/duration.proto";
-import "google/protobuf/struct.proto";
-import "google/protobuf/wrappers.proto";
-
-import "envoy/annotations/deprecation.proto";
-import "udpa/annotations/security.proto";
-import "udpa/annotations/status.proto";
-import "udpa/annotations/versioning.proto";
-import "validate/validate.proto";
-
-option java_package = "io.envoyproxy.envoy.config.bootstrap.v4alpha";
-option java_outer_classname = "BootstrapProto";
-option java_multiple_files = true;
-option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
-
-// [#protodoc-title: Bootstrap]
-// This proto is supplied via the :option:`-c` CLI flag and acts as the root
-// of the Envoy v2 configuration. See the :ref:`v2 configuration overview
-// ` for more detail.
-
-// Bootstrap :ref:`configuration overview `.
-// [#next-free-field: 30]
-message Bootstrap {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.Bootstrap";
-
- message StaticResources {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.Bootstrap.StaticResources";
-
- // Static :ref:`Listeners `. These listeners are
- // available regardless of LDS configuration.
- repeated listener.v4alpha.Listener listeners = 1;
-
- // If a network based configuration source is specified for :ref:`cds_config
- // `, it's necessary
- // to have some initial cluster definitions available to allow Envoy to know
- // how to speak to the management server. These cluster definitions may not
- // use :ref:`EDS ` (i.e. they should be static
- // IP or DNS-based).
- repeated cluster.v4alpha.Cluster clusters = 2;
-
- // These static secrets can be used by :ref:`SdsSecretConfig
- // `
- repeated envoy.extensions.transport_sockets.tls.v4alpha.Secret secrets = 3;
- }
-
- // [#next-free-field: 7]
- message DynamicResources {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.Bootstrap.DynamicResources";
-
- reserved 4;
-
- // All :ref:`Listeners ` are provided by a single
- // :ref:`LDS ` configuration source.
- core.v4alpha.ConfigSource lds_config = 1;
-
- // xdstp:// resource locator for listener collection.
- // [#not-implemented-hide:]
- string lds_resources_locator = 5;
-
- // All post-bootstrap :ref:`Cluster ` definitions are
- // provided by a single :ref:`CDS `
- // configuration source.
- core.v4alpha.ConfigSource cds_config = 2;
-
- // xdstp:// resource locator for cluster collection.
- // [#not-implemented-hide:]
- string cds_resources_locator = 6;
-
- // A single :ref:`ADS ` source may be optionally
- // specified. This must have :ref:`api_type
- // ` :ref:`GRPC
- // `. Only
- // :ref:`ConfigSources ` that have
- // the :ref:`ads ` field set will be
- // streamed on the ADS channel.
- core.v4alpha.ApiConfigSource ads_config = 3;
- }
-
- reserved 10, 11, 8, 9;
-
- reserved "runtime", "watchdog", "tracing";
-
- // Node identity to present to the management server and for instance
- // identification purposes (e.g. in generated headers).
- core.v4alpha.Node node = 1;
-
- // A list of :ref:`Node ` field names
- // that will be included in the context parameters of the effective
- // xdstp:// URL that is sent in a discovery request when resource
- // locators are used for LDS/CDS. Any non-string field will have its JSON
- // encoding set as the context parameter value, with the exception of
- // metadata, which will be flattened (see example below). The supported field
- // names are:
- // - "cluster"
- // - "id"
- // - "locality.region"
- // - "locality.sub_zone"
- // - "locality.zone"
- // - "metadata"
- // - "user_agent_build_version.metadata"
- // - "user_agent_build_version.version"
- // - "user_agent_name"
- // - "user_agent_version"
- //
- // The node context parameters act as a base layer dictionary for the context
- // parameters (i.e. more specific resource specific context parameters will
- // override). Field names will be prefixed with “udpa.node.” when included in
- // context parameters.
- //
- // For example, if node_context_params is ``["user_agent_name", "metadata"]``,
- // the implied context parameters might be::
- //
- // node.user_agent_name: "envoy"
- // node.metadata.foo: "{\"bar\": \"baz\"}"
- // node.metadata.some: "42"
- // node.metadata.thing: "\"thing\""
- //
- // [#not-implemented-hide:]
- repeated string node_context_params = 26;
-
- // Statically specified resources.
- StaticResources static_resources = 2;
-
- // xDS configuration sources.
- DynamicResources dynamic_resources = 3;
-
- // Configuration for the cluster manager which owns all upstream clusters
- // within the server.
- ClusterManager cluster_manager = 4;
-
- // Health discovery service config option.
- // (:ref:`core.ApiConfigSource `)
- core.v4alpha.ApiConfigSource hds_config = 14;
-
- // Optional file system path to search for startup flag files.
- string flags_path = 5;
-
- // Optional set of stats sinks.
- repeated metrics.v4alpha.StatsSink stats_sinks = 6;
-
- // Configuration for internal processing of stats.
- metrics.v4alpha.StatsConfig stats_config = 13;
-
- oneof stats_flush {
- // Optional duration between flushes to configured stats sinks. For
- // performance reasons Envoy latches counters and only flushes counters and
- // gauges at a periodic interval. If not specified the default is 5000ms (5
- // seconds). Only one of `stats_flush_interval` or `stats_flush_on_admin`
- // can be set.
- // Duration must be at least 1ms and at most 5 min.
- google.protobuf.Duration stats_flush_interval = 7 [(validate.rules).duration = {
- lt {seconds: 300}
- gte {nanos: 1000000}
- }];
-
- // Flush stats to sinks only when queried for on the admin interface. If set,
- // a flush timer is not created. Only one of `stats_flush_on_admin` or
- // `stats_flush_interval` can be set.
- bool stats_flush_on_admin = 29 [(validate.rules).bool = {const: true}];
- }
-
- // Optional watchdogs configuration.
- // This is used for specifying different watchdogs for the different subsystems.
- Watchdogs watchdogs = 27;
-
- // Configuration for the runtime configuration provider. If not
- // specified, a “null” provider will be used which will result in all defaults
- // being used.
- LayeredRuntime layered_runtime = 17;
-
- // Configuration for the local administration HTTP server.
- Admin admin = 12;
-
- // Optional overload manager configuration.
- overload.v3.OverloadManager overload_manager = 15 [
- (udpa.annotations.security).configure_for_untrusted_downstream = true,
- (udpa.annotations.security).configure_for_untrusted_upstream = true
- ];
-
- // Enable :ref:`stats for event dispatcher `, defaults to false.
- // Note that this records a value for each iteration of the event loop on every thread. This
- // should normally be minimal overhead, but when using
- // :ref:`statsd `, it will send each observed value
- // over the wire individually because the statsd protocol doesn't have any way to represent a
- // histogram summary. Be aware that this can be a very large volume of data.
- bool enable_dispatcher_stats = 16;
-
- // Optional string which will be used in lieu of x-envoy in prefixing headers.
- //
- // For example, if this string is present and set to X-Foo, then x-envoy-retry-on will be
- // transformed into x-foo-retry-on etc.
- //
- // Note this applies to the headers Envoy will generate, the headers Envoy will sanitize, and the
- // headers Envoy will trust for core code and core extensions only. Be VERY careful making
- // changes to this string, especially in multi-layer Envoy deployments or deployments using
- // extensions which are not upstream.
- string header_prefix = 18;
-
- // Optional proxy version which will be used to set the value of :ref:`server.version statistic
- // ` if specified. Envoy will not process this value, it will be sent as is to
- // :ref:`stats sinks `.
- google.protobuf.UInt64Value stats_server_version_override = 19;
-
- // Always use TCP queries instead of UDP queries for DNS lookups.
- // This may be overridden on a per-cluster basis in cds_config,
- // when :ref:`dns_resolvers ` and
- // :ref:`use_tcp_for_dns_lookups ` are
- // specified.
- // Setting this value causes failure if the
- // ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime value is true during
- // server startup. Apple' API only uses UDP for DNS resolution.
- bool use_tcp_for_dns_lookups = 20;
-
- // Specifies optional bootstrap extensions to be instantiated at startup time.
- // Each item contains extension specific configuration.
- repeated core.v4alpha.TypedExtensionConfig bootstrap_extensions = 21;
-
- // Specifies optional extensions instantiated at startup time and
- // invoked during crash time on the request that caused the crash.
- repeated FatalAction fatal_actions = 28;
-
- // Configuration sources that will participate in
- // xdstp:// URL authority resolution. The algorithm is as
- // follows:
- // 1. The authority field is taken from the xdstp:// URL, call
- // this *resource_authority*.
- // 2. *resource_authority* is compared against the authorities in any peer
- // *ConfigSource*. The peer *ConfigSource* is the configuration source
- // message which would have been used unconditionally for resolution
- // with opaque resource names. If there is a match with an authority, the
- // peer *ConfigSource* message is used.
- // 3. *resource_authority* is compared sequentially with the authorities in
- // each configuration source in *config_sources*. The first *ConfigSource*
- // to match wins.
- // 4. As a fallback, if no configuration source matches, then
- // *default_config_source* is used.
- // 5. If *default_config_source* is not specified, resolution fails.
- // [#not-implemented-hide:]
- repeated core.v4alpha.ConfigSource config_sources = 22;
-
- // Default configuration source for xdstp:// URLs if all
- // other resolution fails.
- // [#not-implemented-hide:]
- core.v4alpha.ConfigSource default_config_source = 23;
-
- // Optional overriding of default socket interface. The value must be the name of one of the
- // socket interface factories initialized through a bootstrap extension
- string default_socket_interface = 24;
-
- // Global map of CertificateProvider instances. These instances are referred to by name in the
- // :ref:`CommonTlsContext.CertificateProviderInstance.instance_name
- // `
- // field.
- // [#not-implemented-hide:]
- map certificate_provider_instances = 25;
-}
-
-// Administration interface :ref:`operations documentation
-// `.
-message Admin {
- option (udpa.annotations.versioning).previous_message_type = "envoy.config.bootstrap.v3.Admin";
-
- // The path to write the access log for the administration server. If no
- // access log is desired specify ‘/dev/null’. This is only required if
- // :ref:`address ` is set.
- string access_log_path = 1;
-
- // The cpu profiler output path for the administration server. If no profile
- // path is specified, the default is ‘/var/log/envoy/envoy.prof’.
- string profile_path = 2;
-
- // The TCP address that the administration server will listen on.
- // If not specified, Envoy will not start an administration server.
- core.v4alpha.Address address = 3;
-
- // Additional socket options that may not be present in Envoy source code or
- // precompiled binaries.
- repeated core.v4alpha.SocketOption socket_options = 4;
-}
-
-// Cluster manager :ref:`architecture overview `.
-message ClusterManager {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.ClusterManager";
-
- message OutlierDetection {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.ClusterManager.OutlierDetection";
-
- // Specifies the path to the outlier event log.
- string event_log_path = 1;
-
- // [#not-implemented-hide:]
- // The gRPC service for the outlier detection event service.
- // If empty, outlier detection events won't be sent to a remote endpoint.
- core.v4alpha.EventServiceConfig event_service = 2;
- }
-
- // Name of the local cluster (i.e., the cluster that owns the Envoy running
- // this configuration). In order to enable :ref:`zone aware routing
- // ` this option must be set.
- // If *local_cluster_name* is defined then :ref:`clusters
- // ` must be defined in the :ref:`Bootstrap
- // static cluster resources
- // `. This is unrelated to
- // the :option:`--service-cluster` option which does not `affect zone aware
- // routing `_.
- string local_cluster_name = 1;
-
- // Optional global configuration for outlier detection.
- OutlierDetection outlier_detection = 2;
-
- // Optional configuration used to bind newly established upstream connections.
- // This may be overridden on a per-cluster basis by upstream_bind_config in the cds_config.
- core.v4alpha.BindConfig upstream_bind_config = 3;
-
- // A management server endpoint to stream load stats to via
- // *StreamLoadStats*. This must have :ref:`api_type
- // ` :ref:`GRPC
- // `.
- core.v4alpha.ApiConfigSource load_stats_config = 4;
-}
-
-// Allows you to specify different watchdog configs for different subsystems.
-// This allows finer tuned policies for the watchdog. If a subsystem is omitted
-// the default values for that system will be used.
-message Watchdogs {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.Watchdogs";
-
- // Watchdog for the main thread.
- Watchdog main_thread_watchdog = 1;
-
- // Watchdog for the worker threads.
- Watchdog worker_watchdog = 2;
-}
-
-// Envoy process watchdog configuration. When configured, this monitors for
-// nonresponsive threads and kills the process after the configured thresholds.
-// See the :ref:`watchdog documentation ` for more information.
-// [#next-free-field: 8]
-message Watchdog {
- option (udpa.annotations.versioning).previous_message_type = "envoy.config.bootstrap.v3.Watchdog";
-
- message WatchdogAction {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.Watchdog.WatchdogAction";
-
- // The events are fired in this order: KILL, MULTIKILL, MEGAMISS, MISS.
- // Within an event type, actions execute in the order they are configured.
- // For KILL/MULTIKILL there is a default PANIC that will run after the
- // registered actions and kills the process if it wasn't already killed.
- // It might be useful to specify several debug actions, and possibly an
- // alternate FATAL action.
- enum WatchdogEvent {
- UNKNOWN = 0;
- KILL = 1;
- MULTIKILL = 2;
- MEGAMISS = 3;
- MISS = 4;
- }
-
- // Extension specific configuration for the action.
- core.v4alpha.TypedExtensionConfig config = 1;
-
- WatchdogEvent event = 2 [(validate.rules).enum = {defined_only: true}];
- }
-
- // Register actions that will fire on given WatchDog events.
- // See *WatchDogAction* for priority of events.
- repeated WatchdogAction actions = 7;
-
- // The duration after which Envoy counts a nonresponsive thread in the
- // *watchdog_miss* statistic. If not specified the default is 200ms.
- google.protobuf.Duration miss_timeout = 1;
-
- // The duration after which Envoy counts a nonresponsive thread in the
- // *watchdog_mega_miss* statistic. If not specified the default is
- // 1000ms.
- google.protobuf.Duration megamiss_timeout = 2;
-
- // If a watched thread has been nonresponsive for this duration, assume a
- // programming error and kill the entire Envoy process. Set to 0 to disable
- // kill behavior. If not specified the default is 0 (disabled).
- google.protobuf.Duration kill_timeout = 3;
-
- // Defines the maximum jitter used to adjust the *kill_timeout* if *kill_timeout* is
- // enabled. Enabling this feature would help to reduce risk of synchronized
- // watchdog kill events across proxies due to external triggers. Set to 0 to
- // disable. If not specified the default is 0 (disabled).
- google.protobuf.Duration max_kill_timeout_jitter = 6 [(validate.rules).duration = {gte {}}];
-
- // If max(2, ceil(registered_threads * Fraction(*multikill_threshold*)))
- // threads have been nonresponsive for at least this duration kill the entire
- // Envoy process. Set to 0 to disable this behavior. If not specified the
- // default is 0 (disabled).
- google.protobuf.Duration multikill_timeout = 4;
-
- // Sets the threshold for *multikill_timeout* in terms of the percentage of
- // nonresponsive threads required for the *multikill_timeout*.
- // If not specified the default is 0.
- type.v3.Percent multikill_threshold = 5;
-}
-
-// Fatal actions to run while crashing. Actions can be safe (meaning they are
-// async-signal safe) or unsafe. We run all safe actions before we run unsafe actions.
-// If using an unsafe action that could get stuck or deadlock, it important to
-// have an out of band system to terminate the process.
-//
-// The interface for the extension is ``Envoy::Server::Configuration::FatalAction``.
-// *FatalAction* extensions live in the ``envoy.extensions.fatal_actions`` API
-// namespace.
-message FatalAction {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.FatalAction";
-
- // Extension specific configuration for the action. It's expected to conform
- // to the ``Envoy::Server::Configuration::FatalAction`` interface.
- core.v4alpha.TypedExtensionConfig config = 1;
-}
-
-// Runtime :ref:`configuration overview ` (deprecated).
-message Runtime {
- option (udpa.annotations.versioning).previous_message_type = "envoy.config.bootstrap.v3.Runtime";
-
- // The implementation assumes that the file system tree is accessed via a
- // symbolic link. An atomic link swap is used when a new tree should be
- // switched to. This parameter specifies the path to the symbolic link. Envoy
- // will watch the location for changes and reload the file system tree when
- // they happen. If this parameter is not set, there will be no disk based
- // runtime.
- string symlink_root = 1;
-
- // Specifies the subdirectory to load within the root directory. This is
- // useful if multiple systems share the same delivery mechanism. Envoy
- // configuration elements can be contained in a dedicated subdirectory.
- string subdirectory = 2;
-
- // Specifies an optional subdirectory to load within the root directory. If
- // specified and the directory exists, configuration values within this
- // directory will override those found in the primary subdirectory. This is
- // useful when Envoy is deployed across many different types of servers.
- // Sometimes it is useful to have a per service cluster directory for runtime
- // configuration. See below for exactly how the override directory is used.
- string override_subdirectory = 3;
-
- // Static base runtime. This will be :ref:`overridden
- // ` by other runtime layers, e.g.
- // disk or admin. This follows the :ref:`runtime protobuf JSON representation
- // encoding `.
- google.protobuf.Struct base = 4;
-}
-
-// [#next-free-field: 6]
-message RuntimeLayer {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.RuntimeLayer";
-
- // :ref:`Disk runtime ` layer.
- message DiskLayer {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.RuntimeLayer.DiskLayer";
-
- // The implementation assumes that the file system tree is accessed via a
- // symbolic link. An atomic link swap is used when a new tree should be
- // switched to. This parameter specifies the path to the symbolic link.
- // Envoy will watch the location for changes and reload the file system tree
- // when they happen. See documentation on runtime :ref:`atomicity
- // ` for further details on how reloads are
- // treated.
- string symlink_root = 1;
-
- // Specifies the subdirectory to load within the root directory. This is
- // useful if multiple systems share the same delivery mechanism. Envoy
- // configuration elements can be contained in a dedicated subdirectory.
- string subdirectory = 3;
-
- // :ref:`Append ` the
- // service cluster to the path under symlink root.
- bool append_service_cluster = 2;
- }
-
- // :ref:`Admin console runtime ` layer.
- message AdminLayer {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.RuntimeLayer.AdminLayer";
- }
-
- // :ref:`Runtime Discovery Service (RTDS) ` layer.
- message RtdsLayer {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.RuntimeLayer.RtdsLayer";
-
- // Resource to subscribe to at *rtds_config* for the RTDS layer.
- string name = 1;
-
- // RTDS configuration source.
- core.v4alpha.ConfigSource rtds_config = 2;
- }
-
- // Descriptive name for the runtime layer. This is only used for the runtime
- // :http:get:`/runtime` output.
- string name = 1 [(validate.rules).string = {min_len: 1}];
-
- oneof layer_specifier {
- option (validate.required) = true;
-
- // :ref:`Static runtime ` layer.
- // This follows the :ref:`runtime protobuf JSON representation encoding
- // `. Unlike static xDS resources, this static
- // layer is overridable by later layers in the runtime virtual filesystem.
- google.protobuf.Struct static_layer = 2;
-
- DiskLayer disk_layer = 3;
-
- AdminLayer admin_layer = 4;
-
- RtdsLayer rtds_layer = 5;
- }
-}
-
-// Runtime :ref:`configuration overview `.
-message LayeredRuntime {
- option (udpa.annotations.versioning).previous_message_type =
- "envoy.config.bootstrap.v3.LayeredRuntime";
-
- // The :ref:`layers ` of the runtime. This is ordered
- // such that later layers in the list overlay earlier entries.
- repeated RuntimeLayer layers = 1;
-}
diff --git a/api/envoy/config/cluster/aggregate/v2alpha/cluster.proto b/api/envoy/config/cluster/aggregate/v2alpha/cluster.proto
index a0fdadd757..3a6506eb8d 100644
--- a/api/envoy/config/cluster/aggregate/v2alpha/cluster.proto
+++ b/api/envoy/config/cluster/aggregate/v2alpha/cluster.proto
@@ -9,6 +9,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.cluster.aggregate.v2alpha";
option java_outer_classname = "ClusterProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/cluster/aggregate/v2alpha";
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.clusters.aggregate.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/cluster.proto b/api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/cluster.proto
index 33f5ffe057..fb3fc8338e 100644
--- a/api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/cluster.proto
+++ b/api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/cluster.proto
@@ -11,6 +11,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.cluster.dynamic_forward_proxy.v2alpha";
option java_outer_classname = "ClusterProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/cluster/dynamic_forward_proxy/v2alpha";
option (udpa.annotations.file_migrate).move_to_package =
"envoy.extensions.clusters.dynamic_forward_proxy.v3";
option (udpa.annotations.file_status).package_version_status = FROZEN;
diff --git a/api/envoy/config/cluster/redis/redis_cluster.proto b/api/envoy/config/cluster/redis/redis_cluster.proto
index abe88f76a6..78baa83371 100644
--- a/api/envoy/config/cluster/redis/redis_cluster.proto
+++ b/api/envoy/config/cluster/redis/redis_cluster.proto
@@ -11,6 +11,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.cluster.redis";
option java_outer_classname = "RedisClusterProto";
option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/cluster/redis";
option (udpa.annotations.file_status).package_version_status = FROZEN;
// [#protodoc-title: Redis Cluster Configuration]
diff --git a/api/envoy/config/cluster/v3/circuit_breaker.proto b/api/envoy/config/cluster/v3/circuit_breaker.proto
index 96e69701cd..fe798ceb09 100644
--- a/api/envoy/config/cluster/v3/circuit_breaker.proto
+++ b/api/envoy/config/cluster/v3/circuit_breaker.proto
@@ -14,6 +14,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
option java_outer_classname = "CircuitBreakerProto";
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: Circuit breakers]
@@ -25,7 +26,7 @@ message CircuitBreakers {
"envoy.api.v2.cluster.CircuitBreakers";
// A Thresholds defines CircuitBreaker settings for a
- // :ref:`RoutingPriority`.
+ // :ref:`RoutingPriority`.
// [#next-free-field: 9]
message Thresholds {
option (udpa.annotations.versioning).previous_message_type =
@@ -49,7 +50,7 @@ message CircuitBreakers {
google.protobuf.UInt32Value min_retry_concurrency = 2;
}
- // The :ref:`RoutingPriority`
+ // The :ref:`RoutingPriority`
// the specified CircuitBreaker settings apply to.
core.v3.RoutingPriority priority = 1 [(validate.rules).enum = {defined_only: true}];
@@ -59,10 +60,12 @@ message CircuitBreakers {
// The maximum number of pending requests that Envoy will allow to the
// upstream cluster. If not specified, the default is 1024.
+ // This limit is applied as a connection limit for non-HTTP traffic.
google.protobuf.UInt32Value max_pending_requests = 3;
// The maximum number of parallel requests that Envoy will make to the
// upstream cluster. If not specified, the default is 1024.
+ // This limit does not apply to non-HTTP traffic.
google.protobuf.UInt32Value max_requests = 4;
// The maximum number of parallel retries that Envoy will allow to the
@@ -96,10 +99,23 @@ message CircuitBreakers {
google.protobuf.UInt32Value max_connection_pools = 7;
}
- // If multiple :ref:`Thresholds`
- // are defined with the same :ref:`RoutingPriority`,
+ // If multiple :ref:`Thresholds`
+ // are defined with the same :ref:`RoutingPriority`,
// the first one in the list is used. If no Thresholds is defined for a given
- // :ref:`RoutingPriority`, the default values
+ // :ref:`RoutingPriority`, the default values
// are used.
repeated Thresholds thresholds = 1;
+
+ // Optional per-host limits which apply to each individual host in a cluster.
+ //
+ // .. note::
+ // currently only the :ref:`max_connections
+ // ` field is supported for per-host limits.
+ //
+ // If multiple per-host :ref:`Thresholds`
+ // are defined with the same :ref:`RoutingPriority`,
+ // the first one in the list is used. If no per-host Thresholds are defined for a given
+ // :ref:`RoutingPriority`,
+ // the cluster will not have per-host limits.
+ repeated Thresholds per_host_thresholds = 2;
}
diff --git a/api/envoy/config/cluster/v3/cluster.proto b/api/envoy/config/cluster/v3/cluster.proto
index f4e3386cfa..84bab4673b 100644
--- a/api/envoy/config/cluster/v3/cluster.proto
+++ b/api/envoy/config/cluster/v3/cluster.proto
@@ -11,6 +11,7 @@ import "envoy/config/core/v3/config_source.proto";
import "envoy/config/core/v3/extension.proto";
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/v3/percent.proto";
@@ -31,6 +32,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
option java_outer_classname = "ClusterProto";
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: Cluster configuration]
@@ -42,7 +44,7 @@ message ClusterCollection {
}
// Configuration for a single upstream cluster.
-// [#next-free-field: 53]
+// [#next-free-field: 57]
message Cluster {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.Cluster";
@@ -109,11 +111,11 @@ message Cluster {
// this option or not.
CLUSTER_PROVIDED = 6;
- // [#not-implemented-hide:] Use the new :ref:`load_balancing_policy
- // ` field to determine the LB policy.
- // [#next-major-version: In the v3 API, we should consider deprecating the lb_policy field
- // and instead using the new load_balancing_policy field as the one and only mechanism for
- // configuring this.]
+ // Use the new :ref:`load_balancing_policy
+ // ` field to determine the LB policy.
+ // This has been deprecated in favor of using the :ref:`load_balancing_policy
+ // ` field without
+ // setting any value in :ref:`lb_policy`.
LOAD_BALANCING_POLICY_CONFIG = 7;
}
@@ -122,20 +124,33 @@ message Cluster {
// only perform a lookup for addresses in the IPv6 family. If AUTO is
// specified, the DNS resolver will first perform a lookup for addresses in
// the IPv6 family and fallback to a lookup for addresses in the IPv4 family.
+ // This is semantically equivalent to a non-existent V6_PREFERRED option.
+ // AUTO is a legacy name that is more opaque than
+ // necessary and will be deprecated in favor of V6_PREFERRED in a future major version of the API.
+ // If V4_PREFERRED is specified, the DNS resolver will first perform a lookup for addresses in the
+ // 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. When this is used, Happy Eyeballs will be enabled for
+ // upstream connections. Refer to :ref:`Happy Eyeballs Support `
+ // for more information.
// For cluster types other than
- // :ref:`STRICT_DNS` and
- // :ref:`LOGICAL_DNS`,
+ // :ref:`STRICT_DNS` and
+ // :ref:`LOGICAL_DNS`,
// this setting is
// ignored.
+ // [#next-major-version: deprecate AUTO in favor of a V6_PREFERRED option.]
enum DnsLookupFamily {
AUTO = 0;
V4_ONLY = 1;
V6_ONLY = 2;
+ V4_PREFERRED = 3;
+ ALL = 4;
}
enum ClusterProtocolSelection {
// Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2).
- // If :ref:`http2_protocol_options ` are
+ // If :ref:`http2_protocol_options ` are
// present, HTTP2 will be used, otherwise HTTP1.1 will be used.
USE_CONFIGURED_PROTOCOL = 0;
@@ -160,6 +175,7 @@ message Cluster {
google.protobuf.Struct match = 2;
// The configuration of the transport socket.
+ // [#extension-category: envoy.transport_sockets.upstream]
core.v3.TransportSocket transport_socket = 3;
}
@@ -173,6 +189,7 @@ message Cluster {
// Cluster specific configuration which depends on the cluster being instantiated.
// See the supported cluster for further documentation.
+ // [#extension-category: envoy.clusters]
google.protobuf.Any typed_config = 2;
}
@@ -231,7 +248,7 @@ message Cluster {
// If KEYS_SUBSET is selected, subset selector matching is performed again with metadata
// keys reduced to
- // :ref:`fallback_keys_subset`.
+ // :ref:`fallback_keys_subset`.
// It allows for a fallback to a different, less specific selector if some of the keys of
// the selector are considered optional.
KEYS_SUBSET = 4;
@@ -260,30 +277,30 @@ message Cluster {
[(validate.rules).enum = {defined_only: true}];
// Subset of
- // :ref:`keys` used by
- // :ref:`KEYS_SUBSET`
+ // :ref:`keys` used by
+ // :ref:`KEYS_SUBSET`
// fallback policy.
// It has to be a non empty list if KEYS_SUBSET fallback policy is selected.
// For any other fallback policy the parameter is not used and should not be set.
// Only values also present in
- // :ref:`keys` are allowed, but
+ // :ref:`keys` are allowed, but
// `fallback_keys_subset` cannot be equal to `keys`.
repeated string fallback_keys_subset = 3;
}
// The behavior used when no endpoint subset matches the selected route's
// metadata. The value defaults to
- // :ref:`NO_FALLBACK`.
+ // :ref:`NO_FALLBACK`.
LbSubsetFallbackPolicy fallback_policy = 1 [(validate.rules).enum = {defined_only: true}];
// Specifies the default subset of endpoints used during fallback if
// fallback_policy is
- // :ref:`DEFAULT_SUBSET`.
+ // :ref:`DEFAULT_SUBSET`.
// Each field in default_subset is
// compared to the matching LbEndpoint.Metadata under the *envoy.lb*
// namespace. It is valid for no hosts to match, in which case the behavior
// is the same as a fallback_policy of
- // :ref:`NO_FALLBACK`.
+ // :ref:`NO_FALLBACK`.
google.protobuf.Struct default_subset = 2;
// For each entry, LbEndpoint.Metadata's
@@ -334,6 +351,40 @@ message Cluster {
bool list_as_any = 7;
}
+ // Configuration for :ref:`slow start mode `.
+ message SlowStartConfig {
+ // Represents the size of slow start window.
+ // If set, the newly created host remains in slow start mode starting from its creation time
+ // for the duration of slow start window.
+ google.protobuf.Duration slow_start_window = 1;
+
+ // This parameter controls the speed of traffic increase over the slow start window. Defaults to 1.0,
+ // so that endpoint would get linearly increasing amount of traffic.
+ // When increasing the value for this parameter, the speed of traffic ramp-up increases non-linearly.
+ // The value of aggression parameter should be greater than 0.0.
+ // By tuning the parameter, is possible to achieve polynomial or exponential shape of ramp-up curve.
+ //
+ // During slow start window, effective weight of an endpoint would be scaled with time factor and aggression:
+ // `new_weight = weight * max(min_weight_percent, time_factor ^ (1 / aggression))`,
+ // where `time_factor=(time_since_start_seconds / slow_start_time_seconds)`.
+ //
+ // As time progresses, more and more traffic would be sent to endpoint, which is in slow start window.
+ // Once host exits slow start, time_factor and aggression no longer affect its weight.
+ core.v3.RuntimeDouble aggression = 2;
+
+ // Configures the minimum percentage of origin weight that avoids too small new weight,
+ // which may cause endpoints in slow start mode receive no traffic in slow start window.
+ // If not specified, the default is 10%.
+ type.v3.Percent min_weight_percent = 3;
+ }
+
+ // Specific configuration for the RoundRobin load balancing policy.
+ message RoundRobinLbConfig {
+ // Configuration for slow start mode.
+ // If this configuration is not set, slow start will not be not enabled.
+ SlowStartConfig slow_start_config = 1;
+ }
+
// Specific configuration for the LeastRequest load balancing policy.
message LeastRequestLbConfig {
option (udpa.annotations.versioning).previous_message_type =
@@ -367,6 +418,10 @@ message Cluster {
// .. note::
// This setting only takes effect if all host weights are not equal.
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.
+ SlowStartConfig slow_start_config = 3;
}
// Specific configuration for the :ref:`RingHash`
@@ -391,16 +446,16 @@ message Cluster {
// Minimum hash ring size. The larger the ring is (that is, the more hashes there are for each
// provided host) the better the request distribution will reflect the desired weights. Defaults
// to 1024 entries, and limited to 8M entries. See also
- // :ref:`maximum_ring_size`.
+ // :ref:`maximum_ring_size`.
google.protobuf.UInt64Value minimum_ring_size = 1 [(validate.rules).uint64 = {lte: 8388608}];
// The hash function used to hash hosts onto the ketama ring. The value defaults to
- // :ref:`XX_HASH`.
+ // :ref:`XX_HASH`.
HashFunction hash_function = 3 [(validate.rules).enum = {defined_only: true}];
// Maximum hash ring size. Defaults to 8M entries, and limited to 8M entries, but can be lowered
// to further constrain resource use. See also
- // :ref:`minimum_ring_size`.
+ // :ref:`minimum_ring_size