mirror of https://github.com/grpc/grpc-java.git
xds: Envoy proto sync to 2022-04-08 (#9101)
Proto updates: - cncf/xds: Sort xds/import.sh protos alphabetically - cncf/xds: Sync protos to cncf/xds@d92e9ce (commit 2021-12-16, corresponding to envoy cl/440193522). It's a no-op for used protos, but helpful to import the latest matcher.proto - cncf/xds: Import xds/type/matcher/v3/matcher.proto with dependencies - envoyproxy/protoc-gen-validate: Sync protos to envoyproxy/protoc-gen-validate@dfcdc5e (commit 2022-03-10, corresponding to envoy cl/440193522) to pick up ignore_empty field required for the following envoy sync - envoyproxy/envoy Sync protos to envoyproxy/envoy@e33f444 (commit 2022-04-07, cl/440193522). This is the minimal version needed to pick up ClusterSpecifierPlugin.is_optional. a. Generated code: AggregatedDiscoveryServiceGrpc was regenerated from the updated proto. This is a no-op, just a minor change to the docblocks. b. Deprecated fields had to be taken care of manually, see "Manual updates to the code" below. - envoyproxy/envoy Sync protos to the latest imported version envoyproxy/envoy@5d74719 (commit 2022-04-08, cl/443359189). Not needed for anything specific, just the last version, and was easy to import. Manual updates to the code as the result of envoyproxy/envoy@e33f444 sync: - Deprecated ConfigSource.path replaced with the ConfigSource.path_config_source in test fake resources. The ConfigSource.path isn't in active code paths, so no prod code changes needed. - Suppress CertificateValidationContext.match_subject_alt_names deprecations in test files. Surprisingly, we don't report deprecations in prod files, despite the fact this field is used in prod code a few times.
This commit is contained in:
parent
538db03d56
commit
b1720f10a5
|
|
@ -4,7 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
@ -131,7 +131,7 @@ public final class AggregatedDiscoveryServiceGrpc {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
@ -180,7 +180,7 @@ public final class AggregatedDiscoveryServiceGrpc {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
@ -222,7 +222,7 @@ public final class AggregatedDiscoveryServiceGrpc {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
@ -245,7 +245,7 @@ public final class AggregatedDiscoveryServiceGrpc {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
@ -131,7 +131,7 @@ public final class AggregatedDiscoveryServiceGrpc {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
@ -180,7 +180,7 @@ public final class AggregatedDiscoveryServiceGrpc {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
@ -222,7 +222,7 @@ public final class AggregatedDiscoveryServiceGrpc {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
@ -245,7 +245,7 @@ public final class AggregatedDiscoveryServiceGrpc {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* See https://github.com/lyft/envoy-api#apis for a description of the role of
|
* See https://github.com/envoyproxy/envoy-api#apis for a description of the role of
|
||||||
* ADS and how it is intended to be used by a management server. ADS requests
|
* ADS and how it is intended to be used by a management server. ADS requests
|
||||||
* have the same structure as their singleton xDS counterparts, but can
|
* have the same structure as their singleton xDS counterparts, but can
|
||||||
* multiplex many resource types on a single stream. The type_url in the
|
* multiplex many resource types on a single stream. The type_url in the
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ import io.envoyproxy.envoy.config.core.v3.ConfigSource;
|
||||||
import io.envoyproxy.envoy.config.core.v3.DataSource;
|
import io.envoyproxy.envoy.config.core.v3.DataSource;
|
||||||
import io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions;
|
import io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions;
|
||||||
import io.envoyproxy.envoy.config.core.v3.Locality;
|
import io.envoyproxy.envoy.config.core.v3.Locality;
|
||||||
|
import io.envoyproxy.envoy.config.core.v3.PathConfigSource;
|
||||||
import io.envoyproxy.envoy.config.core.v3.RuntimeFractionalPercent;
|
import io.envoyproxy.envoy.config.core.v3.RuntimeFractionalPercent;
|
||||||
import io.envoyproxy.envoy.config.core.v3.SelfConfigSource;
|
import io.envoyproxy.envoy.config.core.v3.SelfConfigSource;
|
||||||
import io.envoyproxy.envoy.config.core.v3.SocketAddress;
|
import io.envoyproxy.envoy.config.core.v3.SocketAddress;
|
||||||
|
|
@ -1616,7 +1617,8 @@ public class ClientXdsClientDataTest {
|
||||||
.setRds(Rds.newBuilder()
|
.setRds(Rds.newBuilder()
|
||||||
.setRouteConfigName("rds-config-foo")
|
.setRouteConfigName("rds-config-foo")
|
||||||
.setConfigSource(
|
.setConfigSource(
|
||||||
ConfigSource.newBuilder().setPath("foo-path")))
|
ConfigSource.newBuilder()
|
||||||
|
.setPathConfigSource(PathConfigSource.newBuilder().setPath("foo-path"))))
|
||||||
.build();
|
.build();
|
||||||
thrown.expect(ResourceInvalidException.class);
|
thrown.expect(ResourceInvalidException.class);
|
||||||
thrown.expectMessage(
|
thrown.expectMessage(
|
||||||
|
|
@ -1822,7 +1824,7 @@ public class ClientXdsClientDataTest {
|
||||||
EdsClusterConfig.newBuilder()
|
EdsClusterConfig.newBuilder()
|
||||||
.setEdsConfig(
|
.setEdsConfig(
|
||||||
ConfigSource.newBuilder()
|
ConfigSource.newBuilder()
|
||||||
.setPath("foo-path"))
|
.setPathConfigSource(PathConfigSource.newBuilder().setPath("foo-path")))
|
||||||
.setServiceName("service-foo.googleapis.com"))
|
.setServiceName("service-foo.googleapis.com"))
|
||||||
.setLbPolicy(LbPolicy.ROUND_ROBIN)
|
.setLbPolicy(LbPolicy.ROUND_ROBIN)
|
||||||
.build();
|
.build();
|
||||||
|
|
|
||||||
|
|
@ -177,6 +177,7 @@ public class CertProviderServerSslContextProviderTest {
|
||||||
new CertificateProvider.DistributorWatcher[1];
|
new CertificateProvider.DistributorWatcher[1];
|
||||||
TestCertificateProvider.createAndRegisterProviderProvider(
|
TestCertificateProvider.createAndRegisterProviderProvider(
|
||||||
certificateProviderRegistry, watcherCaptor, "testca", 0);
|
certificateProviderRegistry, watcherCaptor, "testca", 0);
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext staticCertValidationContext =
|
CertificateValidationContext staticCertValidationContext =
|
||||||
CertificateValidationContext.newBuilder().addAllMatchSubjectAltNames(Arrays
|
CertificateValidationContext.newBuilder().addAllMatchSubjectAltNames(Arrays
|
||||||
.asList(StringMatcher.newBuilder().setExact("foo.com").build(),
|
.asList(StringMatcher.newBuilder().setExact("foo.com").build(),
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,7 @@ public class ClientSslContextProviderFactoryTest {
|
||||||
final CertificateProvider.DistributorWatcher[] watcherCaptor =
|
final CertificateProvider.DistributorWatcher[] watcherCaptor =
|
||||||
new CertificateProvider.DistributorWatcher[1];
|
new CertificateProvider.DistributorWatcher[1];
|
||||||
createAndRegisterProviderProvider(certificateProviderRegistry, watcherCaptor, "testca", 0);
|
createAndRegisterProviderProvider(certificateProviderRegistry, watcherCaptor, "testca", 0);
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext staticCertValidationContext =
|
CertificateValidationContext staticCertValidationContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addAllMatchSubjectAltNames(
|
.addAllMatchSubjectAltNames(
|
||||||
|
|
@ -216,6 +217,7 @@ public class ClientSslContextProviderFactoryTest {
|
||||||
createAndRegisterProviderProvider(
|
createAndRegisterProviderProvider(
|
||||||
certificateProviderRegistry, watcherCaptor, "file_watcher", 1);
|
certificateProviderRegistry, watcherCaptor, "file_watcher", 1);
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext staticCertValidationContext =
|
CertificateValidationContext staticCertValidationContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addAllMatchSubjectAltNames(
|
.addAllMatchSubjectAltNames(
|
||||||
|
|
@ -248,6 +250,7 @@ public class ClientSslContextProviderFactoryTest {
|
||||||
final CertificateProvider.DistributorWatcher[] watcherCaptor =
|
final CertificateProvider.DistributorWatcher[] watcherCaptor =
|
||||||
new CertificateProvider.DistributorWatcher[1];
|
new CertificateProvider.DistributorWatcher[1];
|
||||||
createAndRegisterProviderProvider(certificateProviderRegistry, watcherCaptor, "testca", 0);
|
createAndRegisterProviderProvider(certificateProviderRegistry, watcherCaptor, "testca", 0);
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext staticCertValidationContext =
|
CertificateValidationContext staticCertValidationContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addAllMatchSubjectAltNames(
|
.addAllMatchSubjectAltNames(
|
||||||
|
|
|
||||||
|
|
@ -149,6 +149,7 @@ public class ServerSslContextProviderFactoryTest {
|
||||||
final CertificateProvider.DistributorWatcher[] watcherCaptor =
|
final CertificateProvider.DistributorWatcher[] watcherCaptor =
|
||||||
new CertificateProvider.DistributorWatcher[1];
|
new CertificateProvider.DistributorWatcher[1];
|
||||||
createAndRegisterProviderProvider(certificateProviderRegistry, watcherCaptor, "testca", 0);
|
createAndRegisterProviderProvider(certificateProviderRegistry, watcherCaptor, "testca", 0);
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext staticCertValidationContext =
|
CertificateValidationContext staticCertValidationContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addAllMatchSubjectAltNames(
|
.addAllMatchSubjectAltNames(
|
||||||
|
|
@ -215,6 +216,7 @@ public class ServerSslContextProviderFactoryTest {
|
||||||
createAndRegisterProviderProvider(certificateProviderRegistry, watcherCaptor, "testca", 0);
|
createAndRegisterProviderProvider(certificateProviderRegistry, watcherCaptor, "testca", 0);
|
||||||
createAndRegisterProviderProvider(
|
createAndRegisterProviderProvider(
|
||||||
certificateProviderRegistry, watcherCaptor, "file_watcher", 1);
|
certificateProviderRegistry, watcherCaptor, "file_watcher", 1);
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext staticCertValidationContext =
|
CertificateValidationContext staticCertValidationContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addAllMatchSubjectAltNames(
|
.addAllMatchSubjectAltNames(
|
||||||
|
|
|
||||||
|
|
@ -256,6 +256,8 @@ public class SdsTrustManagerFactoryTest {
|
||||||
String... verifySans) {
|
String... verifySans) {
|
||||||
CertificateValidationContext.Builder builder = CertificateValidationContext.newBuilder();
|
CertificateValidationContext.Builder builder = CertificateValidationContext.newBuilder();
|
||||||
for (String san : verifySans) {
|
for (String san : verifySans) {
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
CertificateValidationContext.Builder unused =
|
||||||
builder.addMatchSubjectAltNames(StringMatcher.newBuilder().setExact(san));
|
builder.addMatchSubjectAltNames(StringMatcher.newBuilder().setExact(san));
|
||||||
}
|
}
|
||||||
return builder.build();
|
return builder.build();
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,7 @@ public class SdsX509TrustManagerTest {
|
||||||
@Test
|
@Test
|
||||||
public void missingPeerCerts() {
|
public void missingPeerCerts() {
|
||||||
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("foo.com").build();
|
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("foo.com").build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -104,6 +105,7 @@ public class SdsX509TrustManagerTest {
|
||||||
@Test
|
@Test
|
||||||
public void emptyArrayPeerCerts() {
|
public void emptyArrayPeerCerts() {
|
||||||
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("foo.com").build();
|
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("foo.com").build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -118,6 +120,7 @@ public class SdsX509TrustManagerTest {
|
||||||
@Test
|
@Test
|
||||||
public void noSansInPeerCerts() throws CertificateException, IOException {
|
public void noSansInPeerCerts() throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("foo.com").build();
|
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("foo.com").build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -138,6 +141,7 @@ public class SdsX509TrustManagerTest {
|
||||||
.setExact("waterzooi.test.google.be")
|
.setExact("waterzooi.test.google.be")
|
||||||
.setIgnoreCase(false)
|
.setIgnoreCase(false)
|
||||||
.build();
|
.build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -154,6 +158,7 @@ public class SdsX509TrustManagerTest {
|
||||||
.setExact("waterZooi.test.Google.be")
|
.setExact("waterZooi.test.Google.be")
|
||||||
.setIgnoreCase(false)
|
.setIgnoreCase(false)
|
||||||
.build();
|
.build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -171,6 +176,7 @@ public class SdsX509TrustManagerTest {
|
||||||
public void oneSanInPeerCertsVerifies_ignoreCase() throws CertificateException, IOException {
|
public void oneSanInPeerCertsVerifies_ignoreCase() throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher =
|
StringMatcher stringMatcher =
|
||||||
StringMatcher.newBuilder().setExact("Waterzooi.Test.google.be").setIgnoreCase(true).build();
|
StringMatcher.newBuilder().setExact("Waterzooi.Test.google.be").setIgnoreCase(true).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -186,6 +192,7 @@ public class SdsX509TrustManagerTest {
|
||||||
.setPrefix("waterzooi.") // test.google.be
|
.setPrefix("waterzooi.") // test.google.be
|
||||||
.setIgnoreCase(false)
|
.setIgnoreCase(false)
|
||||||
.build();
|
.build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -199,6 +206,7 @@ public class SdsX509TrustManagerTest {
|
||||||
throws CertificateException, IOException {
|
throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher =
|
StringMatcher stringMatcher =
|
||||||
StringMatcher.newBuilder().setPrefix("waterZooi.").setIgnoreCase(false).build();
|
StringMatcher.newBuilder().setPrefix("waterZooi.").setIgnoreCase(false).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -219,6 +227,7 @@ public class SdsX509TrustManagerTest {
|
||||||
.setPrefix("WaterZooi.") // test.google.be
|
.setPrefix("WaterZooi.") // test.google.be
|
||||||
.setIgnoreCase(true)
|
.setIgnoreCase(true)
|
||||||
.build();
|
.build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -231,6 +240,7 @@ public class SdsX509TrustManagerTest {
|
||||||
public void oneSanInPeerCerts_suffix() throws CertificateException, IOException {
|
public void oneSanInPeerCerts_suffix() throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher =
|
StringMatcher stringMatcher =
|
||||||
StringMatcher.newBuilder().setSuffix(".google.be").setIgnoreCase(false).build();
|
StringMatcher.newBuilder().setSuffix(".google.be").setIgnoreCase(false).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -244,6 +254,7 @@ public class SdsX509TrustManagerTest {
|
||||||
throws CertificateException, IOException {
|
throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher =
|
StringMatcher stringMatcher =
|
||||||
StringMatcher.newBuilder().setSuffix(".gooGle.bE").setIgnoreCase(false).build();
|
StringMatcher.newBuilder().setSuffix(".gooGle.bE").setIgnoreCase(false).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -261,6 +272,7 @@ public class SdsX509TrustManagerTest {
|
||||||
public void oneSanInPeerCerts_suffixIgnoreCase() throws CertificateException, IOException {
|
public void oneSanInPeerCerts_suffixIgnoreCase() throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher =
|
StringMatcher stringMatcher =
|
||||||
StringMatcher.newBuilder().setSuffix(".GooGle.BE").setIgnoreCase(true).build();
|
StringMatcher.newBuilder().setSuffix(".GooGle.BE").setIgnoreCase(true).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -273,6 +285,7 @@ public class SdsX509TrustManagerTest {
|
||||||
public void oneSanInPeerCerts_substring() throws CertificateException, IOException {
|
public void oneSanInPeerCerts_substring() throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher =
|
StringMatcher stringMatcher =
|
||||||
StringMatcher.newBuilder().setContains("zooi.test.google").setIgnoreCase(false).build();
|
StringMatcher.newBuilder().setContains("zooi.test.google").setIgnoreCase(false).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -286,6 +299,7 @@ public class SdsX509TrustManagerTest {
|
||||||
throws CertificateException, IOException {
|
throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher =
|
StringMatcher stringMatcher =
|
||||||
StringMatcher.newBuilder().setContains("zooi.Test.gooGle").setIgnoreCase(false).build();
|
StringMatcher.newBuilder().setContains("zooi.Test.gooGle").setIgnoreCase(false).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -303,6 +317,7 @@ public class SdsX509TrustManagerTest {
|
||||||
public void oneSanInPeerCerts_substringIgnoreCase() throws CertificateException, IOException {
|
public void oneSanInPeerCerts_substringIgnoreCase() throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher =
|
StringMatcher stringMatcher =
|
||||||
StringMatcher.newBuilder().setContains("zooI.Test.Google").setIgnoreCase(true).build();
|
StringMatcher.newBuilder().setContains("zooI.Test.Google").setIgnoreCase(true).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -318,6 +333,7 @@ public class SdsX509TrustManagerTest {
|
||||||
.setSafeRegex(
|
.setSafeRegex(
|
||||||
RegexMatcher.newBuilder().setRegex("water[[:alpha:]]{1}ooi\\.test\\.google\\.be"))
|
RegexMatcher.newBuilder().setRegex("water[[:alpha:]]{1}ooi\\.test\\.google\\.be"))
|
||||||
.build();
|
.build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -333,6 +349,7 @@ public class SdsX509TrustManagerTest {
|
||||||
.setSafeRegex(
|
.setSafeRegex(
|
||||||
RegexMatcher.newBuilder().setRegex("no-match-string|\\*\\.test\\.youtube\\.com"))
|
RegexMatcher.newBuilder().setRegex("no-match-string|\\*\\.test\\.youtube\\.com"))
|
||||||
.build();
|
.build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -348,6 +365,7 @@ public class SdsX509TrustManagerTest {
|
||||||
.setSafeRegex(
|
.setSafeRegex(
|
||||||
RegexMatcher.newBuilder().setRegex("([[:digit:]]{1,3}\\.){3}[[:digit:]]{1,3}"))
|
RegexMatcher.newBuilder().setRegex("([[:digit:]]{1,3}\\.){3}[[:digit:]]{1,3}"))
|
||||||
.build();
|
.build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -363,6 +381,7 @@ public class SdsX509TrustManagerTest {
|
||||||
.setSafeRegex(
|
.setSafeRegex(
|
||||||
RegexMatcher.newBuilder().setRegex("water[[:alpha:]]{2}ooi\\.test\\.google\\.be"))
|
RegexMatcher.newBuilder().setRegex("water[[:alpha:]]{2}ooi\\.test\\.google\\.be"))
|
||||||
.build();
|
.build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -382,6 +401,7 @@ public class SdsX509TrustManagerTest {
|
||||||
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
||||||
StringMatcher stringMatcher1 =
|
StringMatcher stringMatcher1 =
|
||||||
StringMatcher.newBuilder().setExact("waterzooi.test.google.be").build();
|
StringMatcher.newBuilder().setExact("waterzooi.test.google.be").build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addMatchSubjectAltNames(stringMatcher)
|
.addMatchSubjectAltNames(stringMatcher)
|
||||||
|
|
@ -397,6 +417,7 @@ public class SdsX509TrustManagerTest {
|
||||||
public void oneSanInPeerCertsNotFoundException()
|
public void oneSanInPeerCertsNotFoundException()
|
||||||
throws CertificateException, IOException {
|
throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -416,6 +437,7 @@ public class SdsX509TrustManagerTest {
|
||||||
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
||||||
StringMatcher stringMatcher1 =
|
StringMatcher stringMatcher1 =
|
||||||
StringMatcher.newBuilder().setSuffix("test.youTube.Com").setIgnoreCase(true).build();
|
StringMatcher.newBuilder().setSuffix("test.youTube.Com").setIgnoreCase(true).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addMatchSubjectAltNames(stringMatcher)
|
.addMatchSubjectAltNames(stringMatcher)
|
||||||
|
|
@ -433,6 +455,7 @@ public class SdsX509TrustManagerTest {
|
||||||
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
||||||
StringMatcher stringMatcher1 =
|
StringMatcher stringMatcher1 =
|
||||||
StringMatcher.newBuilder().setContains("est.Google.f").setIgnoreCase(true).build();
|
StringMatcher.newBuilder().setContains("est.Google.f").setIgnoreCase(true).build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addMatchSubjectAltNames(stringMatcher)
|
.addMatchSubjectAltNames(stringMatcher)
|
||||||
|
|
@ -452,6 +475,7 @@ public class SdsX509TrustManagerTest {
|
||||||
// sub.test.example.com.
|
// sub.test.example.com.
|
||||||
StringMatcher stringMatcher =
|
StringMatcher stringMatcher =
|
||||||
StringMatcher.newBuilder().setExact("sub.abc.test.youtube.com").build();
|
StringMatcher.newBuilder().setExact("sub.abc.test.youtube.com").build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
@ -469,6 +493,7 @@ public class SdsX509TrustManagerTest {
|
||||||
public void oneIpAddressInPeerCertsVerifies() throws CertificateException, IOException {
|
public void oneIpAddressInPeerCertsVerifies() throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
||||||
StringMatcher stringMatcher1 = StringMatcher.newBuilder().setExact("192.168.1.3").build();
|
StringMatcher stringMatcher1 = StringMatcher.newBuilder().setExact("192.168.1.3").build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addMatchSubjectAltNames(stringMatcher)
|
.addMatchSubjectAltNames(stringMatcher)
|
||||||
|
|
@ -484,6 +509,7 @@ public class SdsX509TrustManagerTest {
|
||||||
public void oneIpAddressInPeerCertsMismatch() throws CertificateException, IOException {
|
public void oneIpAddressInPeerCertsMismatch() throws CertificateException, IOException {
|
||||||
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
StringMatcher stringMatcher = StringMatcher.newBuilder().setExact("x.foo.com").build();
|
||||||
StringMatcher stringMatcher1 = StringMatcher.newBuilder().setExact("192.168.2.3").build();
|
StringMatcher stringMatcher1 = StringMatcher.newBuilder().setExact("192.168.2.3").build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder()
|
CertificateValidationContext.newBuilder()
|
||||||
.addMatchSubjectAltNames(stringMatcher)
|
.addMatchSubjectAltNames(stringMatcher)
|
||||||
|
|
@ -561,6 +587,7 @@ public class SdsX509TrustManagerTest {
|
||||||
.setExact("waterzooi.test.google.be")
|
.setExact("waterzooi.test.google.be")
|
||||||
.setIgnoreCase(false)
|
.setIgnoreCase(false)
|
||||||
.build();
|
.build();
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
CertificateValidationContext certContext =
|
CertificateValidationContext certContext =
|
||||||
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
CertificateValidationContext.newBuilder().addMatchSubjectAltNames(stringMatcher).build();
|
||||||
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
trustManager = new SdsX509TrustManager(certContext, mockDelegate);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
Envoy
|
Envoy
|
||||||
Copyright 2016-2019 Envoy Project Authors
|
Copyright The Envoy Project Authors
|
||||||
|
|
||||||
Licensed under Apache License 2.0. See LICENSE for terms.
|
Licensed under Apache License 2.0. See LICENSE for terms.
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
set -e
|
set -e
|
||||||
BRANCH=main
|
BRANCH=main
|
||||||
# import VERSION from one of the google internal CLs
|
# import VERSION from one of the google internal CLs
|
||||||
VERSION=c223756b0856f734a6a5cff2d0b95388cd2583d4
|
VERSION=5d74719102f461bc57e85acdda706e0a8df9b12d
|
||||||
GIT_REPO="https://github.com/envoyproxy/envoy.git"
|
GIT_REPO="https://github.com/envoyproxy/envoy.git"
|
||||||
GIT_BASE_DIR=envoy
|
GIT_BASE_DIR=envoy
|
||||||
SOURCE_PROTO_BASE_DIR=envoy/api
|
SOURCE_PROTO_BASE_DIR=envoy/api
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import "udpa/annotations/versioning.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.admin.v3";
|
option java_package = "io.envoyproxy.envoy.admin.v3";
|
||||||
option java_outer_classname = "ConfigDumpProto";
|
option java_outer_classname = "ConfigDumpProto";
|
||||||
option java_multiple_files = true;
|
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;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: ConfigDump]
|
// [#protodoc-title: ConfigDump]
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
package envoy.annotations;
|
package envoy.annotations;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/annotations";
|
||||||
|
|
||||||
import "google/protobuf/descriptor.proto";
|
import "google/protobuf/descriptor.proto";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
package envoy.annotations;
|
package envoy.annotations;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/annotations";
|
||||||
|
|
||||||
import "google/protobuf/descriptor.proto";
|
import "google/protobuf/descriptor.proto";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,5 +11,6 @@ import public "envoy/api/v2/auth/tls.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.auth";
|
option java_package = "io.envoyproxy.envoy.api.v2.auth";
|
||||||
option java_outer_classname = "CertProto";
|
option java_outer_classname = "CertProto";
|
||||||
option java_multiple_files = true;
|
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 =
|
option (udpa.annotations.file_migrate).move_to_package =
|
||||||
"envoy.extensions.transport_sockets.tls.v3";
|
"envoy.extensions.transport_sockets.tls.v3";
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.auth";
|
option java_package = "io.envoyproxy.envoy.api.v2.auth";
|
||||||
option java_outer_classname = "CommonProto";
|
option java_outer_classname = "CommonProto";
|
||||||
option java_multiple_files = true;
|
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 =
|
option (udpa.annotations.file_migrate).move_to_package =
|
||||||
"envoy.extensions.transport_sockets.tls.v3";
|
"envoy.extensions.transport_sockets.tls.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
@ -41,8 +42,7 @@ message TlsParameters {
|
||||||
TLSv1_3 = 4;
|
TLSv1_3 = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Minimum TLS protocol version. By default, it's ``TLSv1_2`` for clients and ``TLSv1_0`` for
|
// Minimum TLS protocol version. By default, it's ``TLSv1_2`` for both clients and servers.
|
||||||
// servers.
|
|
||||||
TlsProtocol tls_minimum_protocol_version = 1 [(validate.rules).enum = {defined_only: true}];
|
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
|
// Maximum TLS protocol version. By default, it's ``TLSv1_2`` for clients and ``TLSv1_3`` for
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import "udpa/annotations/status.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.auth";
|
option java_package = "io.envoyproxy.envoy.api.v2.auth";
|
||||||
option java_outer_classname = "SecretProto";
|
option java_outer_classname = "SecretProto";
|
||||||
option java_multiple_files = true;
|
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 =
|
option (udpa.annotations.file_migrate).move_to_package =
|
||||||
"envoy.extensions.transport_sockets.tls.v3";
|
"envoy.extensions.transport_sockets.tls.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.auth";
|
option java_package = "io.envoyproxy.envoy.api.v2.auth";
|
||||||
option java_outer_classname = "TlsProto";
|
option java_outer_classname = "TlsProto";
|
||||||
option java_multiple_files = true;
|
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 =
|
option (udpa.annotations.file_migrate).move_to_package =
|
||||||
"envoy.extensions.transport_sockets.tls.v3";
|
"envoy.extensions.transport_sockets.tls.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
@ -81,10 +82,9 @@ message DownstreamTlsContext {
|
||||||
bool disable_stateless_session_resumption = 7;
|
bool disable_stateless_session_resumption = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If specified, session_timeout will change maximum lifetime (in seconds) of TLS session
|
// If specified, ``session_timeout`` will change the maximum lifetime (in seconds) of the TLS session.
|
||||||
// Currently this value is used as a hint to `TLS session ticket lifetime (for TLSv1.2)
|
// Currently this value is used as a hint for the `TLS session ticket lifetime (for TLSv1.2) <https://tools.ietf.org/html/rfc5077#section-5.6>`_.
|
||||||
// <https://tools.ietf.org/html/rfc5077#section-5.6>`
|
// Only seconds can be specified (fractional seconds are ignored).
|
||||||
// only seconds could be specified (fractional seconds are going to be ignored).
|
|
||||||
google.protobuf.Duration session_timeout = 6 [(validate.rules).duration = {
|
google.protobuf.Duration session_timeout = 6 [(validate.rules).duration = {
|
||||||
lt {seconds: 4294967296}
|
lt {seconds: 4294967296}
|
||||||
gte {}
|
gte {}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import public "envoy/api/v2/cluster.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "CdsProto";
|
option java_outer_classname = "CdsProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
|
||||||
option java_generic_services = true;
|
option java_generic_services = true;
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.cluster.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.cluster.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "ClusterProto";
|
option java_outer_classname = "ClusterProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.cluster.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,9 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.cluster";
|
option java_package = "io.envoyproxy.envoy.api.v2.cluster";
|
||||||
option java_outer_classname = "CircuitBreakerProto";
|
option java_outer_classname = "CircuitBreakerProto";
|
||||||
option java_multiple_files = true;
|
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 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_migrate).move_to_package = "envoy.config.cluster.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,9 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.cluster";
|
option java_package = "io.envoyproxy.envoy.api.v2.cluster";
|
||||||
option java_outer_classname = "FilterProto";
|
option java_outer_classname = "FilterProto";
|
||||||
option java_multiple_files = true;
|
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 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_migrate).move_to_package = "envoy.config.cluster.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,9 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.cluster";
|
option java_package = "io.envoyproxy.envoy.api.v2.cluster";
|
||||||
option java_outer_classname = "OutlierDetectionProto";
|
option java_outer_classname = "OutlierDetectionProto";
|
||||||
option java_multiple_files = true;
|
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 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_migrate).move_to_package = "envoy.config.cluster.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "AddressProto";
|
option java_outer_classname = "AddressProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "BackoffProto";
|
option java_outer_classname = "BackoffProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import public "envoy/api/v2/core/socket_option.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "BaseProto";
|
option java_outer_classname = "BaseProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "ConfigSourceProto";
|
option java_outer_classname = "ConfigSourceProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "EventServiceConfigProto";
|
option java_outer_classname = "EventServiceConfigProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "GrpcServiceProto";
|
option java_outer_classname = "GrpcServiceProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "HealthCheckProto";
|
option java_outer_classname = "HealthCheckProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "HttpUriProto";
|
option java_outer_classname = "HttpUriProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "ProtocolProto";
|
option java_outer_classname = "ProtocolProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
option java_package = "io.envoyproxy.envoy.api.v2.core";
|
||||||
option java_outer_classname = "SocketOptionProto";
|
option java_outer_classname = "SocketOptionProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.core.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import "udpa/annotations/status.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "DiscoveryProto";
|
option java_outer_classname = "DiscoveryProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.service.discovery.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import public "envoy/api/v2/endpoint.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "EdsProto";
|
option java_outer_classname = "EdsProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
|
||||||
option java_generic_services = true;
|
option java_generic_services = true;
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.endpoint.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.endpoint.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "EndpointProto";
|
option java_outer_classname = "EndpointProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.endpoint.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,4 @@ import public "envoy/api/v2/endpoint/endpoint_components.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.endpoint";
|
option java_package = "io.envoyproxy.envoy.api.v2.endpoint";
|
||||||
option java_outer_classname = "EndpointProto";
|
option java_outer_classname = "EndpointProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/endpoint";
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.endpoint";
|
option java_package = "io.envoyproxy.envoy.api.v2.endpoint";
|
||||||
option java_outer_classname = "EndpointComponentsProto";
|
option java_outer_classname = "EndpointComponentsProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.endpoint.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.endpoint";
|
option java_package = "io.envoyproxy.envoy.api.v2.endpoint";
|
||||||
option java_outer_classname = "LoadReportProto";
|
option java_outer_classname = "LoadReportProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.endpoint.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import public "envoy/api/v2/listener.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "LdsProto";
|
option java_outer_classname = "LdsProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
|
||||||
option java_generic_services = true;
|
option java_generic_services = true;
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.listener.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.listener.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "ListenerProto";
|
option java_outer_classname = "ListenerProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.listener.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,5 +7,6 @@ import public "envoy/api/v2/listener/listener_components.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.listener";
|
option java_package = "io.envoyproxy.envoy.api.v2.listener";
|
||||||
option java_outer_classname = "ListenerProto";
|
option java_outer_classname = "ListenerProto";
|
||||||
option java_multiple_files = true;
|
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 csharp_namespace = "Envoy.Api.V2.ListenerNS";
|
||||||
option ruby_package = "Envoy.Api.V2.ListenerNS";
|
option ruby_package = "Envoy::Api::V2::ListenerNS";
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,9 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.listener";
|
option java_package = "io.envoyproxy.envoy.api.v2.listener";
|
||||||
option java_outer_classname = "ListenerComponentsProto";
|
option java_outer_classname = "ListenerComponentsProto";
|
||||||
option java_multiple_files = true;
|
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 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_migrate).move_to_package = "envoy.config.listener.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,9 @@ import "udpa/annotations/status.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.listener";
|
option java_package = "io.envoyproxy.envoy.api.v2.listener";
|
||||||
option java_outer_classname = "UdpListenerConfigProto";
|
option java_outer_classname = "UdpListenerConfigProto";
|
||||||
option java_multiple_files = true;
|
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 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_migrate).move_to_package = "envoy.config.listener.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import public "envoy/api/v2/route.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "RdsProto";
|
option java_outer_classname = "RdsProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
|
||||||
option java_generic_services = true;
|
option java_generic_services = true;
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.route.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.route.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "RouteProto";
|
option java_outer_classname = "RouteProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.route.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,4 @@ import public "envoy/api/v2/route/route_components.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.route";
|
option java_package = "io.envoyproxy.envoy.api.v2.route";
|
||||||
option java_outer_classname = "RouteProto";
|
option java_outer_classname = "RouteProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/route";
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2.route";
|
option java_package = "io.envoyproxy.envoy.api.v2.route";
|
||||||
option java_outer_classname = "RouteComponentsProto";
|
option java_outer_classname = "RouteComponentsProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.route.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
@ -675,8 +676,8 @@ message RouteAction {
|
||||||
|
|
||||||
message FilterState {
|
message FilterState {
|
||||||
// The name of the Object in the per-request filterState, which is an
|
// 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,
|
// Envoy::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.
|
// or the stored object is not Envoy::Hashable, no hash will be produced.
|
||||||
string key = 1 [(validate.rules).string = {min_bytes: 1}];
|
string key = 1 [(validate.rules).string = {min_bytes: 1}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "ScopedRouteProto";
|
option java_outer_classname = "ScopedRouteProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.config.route.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import public "envoy/api/v2/scoped_route.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.api.v2";
|
option java_package = "io.envoyproxy.envoy.api.v2";
|
||||||
option java_outer_classname = "SrdsProto";
|
option java_outer_classname = "SrdsProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2;apiv2";
|
||||||
option java_generic_services = true;
|
option java_generic_services = true;
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.route.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.service.route.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.accesslog.v3";
|
option java_package = "io.envoyproxy.envoy.config.accesslog.v3";
|
||||||
option java_outer_classname = "AccesslogProto";
|
option java_outer_classname = "AccesslogProto";
|
||||||
option java_multiple_files = true;
|
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;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Common access log types]
|
// [#protodoc-title: Common access log types]
|
||||||
|
|
@ -29,9 +30,7 @@ message AccessLog {
|
||||||
|
|
||||||
reserved "config";
|
reserved "config";
|
||||||
|
|
||||||
// The name of the access log extension to instantiate.
|
// The name of the access log extension configuration.
|
||||||
// The name must match one of the compiled in loggers.
|
|
||||||
// See the :ref:`extensions listed in typed_config below <extension_category_envoy.access_loggers>` for the default list of available loggers.
|
|
||||||
string name = 1;
|
string name = 1;
|
||||||
|
|
||||||
// Filter which is used to determine if the access log needs to be written.
|
// Filter which is used to determine if the access log needs to be written.
|
||||||
|
|
@ -83,6 +82,7 @@ message AccessLogFilter {
|
||||||
GrpcStatusFilter grpc_status_filter = 10;
|
GrpcStatusFilter grpc_status_filter = 10;
|
||||||
|
|
||||||
// Extension filter.
|
// Extension filter.
|
||||||
|
// [#extension-category: envoy.access_loggers.extension_filters]
|
||||||
ExtensionFilter extension_filter = 11;
|
ExtensionFilter extension_filter = 11;
|
||||||
|
|
||||||
// Metadata Filter
|
// Metadata Filter
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.bootstrap.v3";
|
option java_package = "io.envoyproxy.envoy.config.bootstrap.v3";
|
||||||
option java_outer_classname = "BootstrapProto";
|
option java_outer_classname = "BootstrapProto";
|
||||||
option java_multiple_files = true;
|
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;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Bootstrap]
|
// [#protodoc-title: Bootstrap]
|
||||||
|
|
@ -40,7 +41,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
// <config_overview_bootstrap>` for more detail.
|
// <config_overview_bootstrap>` for more detail.
|
||||||
|
|
||||||
// Bootstrap :ref:`configuration overview <config_overview_bootstrap>`.
|
// Bootstrap :ref:`configuration overview <config_overview_bootstrap>`.
|
||||||
// [#next-free-field: 33]
|
// [#next-free-field: 34]
|
||||||
message Bootstrap {
|
message Bootstrap {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.config.bootstrap.v2.Bootstrap";
|
"envoy.config.bootstrap.v2.Bootstrap";
|
||||||
|
|
@ -248,9 +249,6 @@ message Bootstrap {
|
||||||
// when :ref:`dns_resolvers <envoy_v3_api_field_config.cluster.v3.Cluster.dns_resolvers>` and
|
// when :ref:`dns_resolvers <envoy_v3_api_field_config.cluster.v3.Cluster.dns_resolvers>` and
|
||||||
// :ref:`use_tcp_for_dns_lookups <envoy_v3_api_field_config.cluster.v3.Cluster.use_tcp_for_dns_lookups>` are
|
// :ref:`use_tcp_for_dns_lookups <envoy_v3_api_field_config.cluster.v3.Cluster.use_tcp_for_dns_lookups>` are
|
||||||
// specified.
|
// 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.
|
|
||||||
// This field is deprecated in favor of *dns_resolution_config*
|
// This field is deprecated in favor of *dns_resolution_config*
|
||||||
// which aggregates all of the DNS resolver configuration in a single message.
|
// which aggregates all of the DNS resolver configuration in a single message.
|
||||||
bool use_tcp_for_dns_lookups = 20
|
bool use_tcp_for_dns_lookups = 20
|
||||||
|
|
@ -260,23 +258,22 @@ message Bootstrap {
|
||||||
// This may be overridden on a per-cluster basis in cds_config, when
|
// This may be overridden on a per-cluster basis in cds_config, when
|
||||||
// :ref:`dns_resolution_config <envoy_v3_api_field_config.cluster.v3.Cluster.dns_resolution_config>`
|
// :ref:`dns_resolution_config <envoy_v3_api_field_config.cluster.v3.Cluster.dns_resolution_config>`
|
||||||
// is specified.
|
// is specified.
|
||||||
// *dns_resolution_config* will be deprecated once
|
// This field is deprecated in favor of
|
||||||
// :ref:'typed_dns_resolver_config <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.typed_dns_resolver_config>'
|
// :ref:`typed_dns_resolver_config <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.typed_dns_resolver_config>`.
|
||||||
// is fully supported.
|
core.v3.DnsResolutionConfig dns_resolution_config = 30
|
||||||
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,
|
// 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.
|
// or any other DNS resolver types and the related parameters.
|
||||||
// For example, an object of :ref:`DnsResolutionConfig <envoy_v3_api_msg_config.core.v3.DnsResolutionConfig>`
|
// For example, an object of
|
||||||
// can be packed into this *typed_dns_resolver_config*. This configuration will replace the
|
// :ref:`CaresDnsResolverConfig <envoy_v3_api_msg_extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig>`
|
||||||
// :ref:'dns_resolution_config <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.dns_resolution_config>'
|
// can be packed into this *typed_dns_resolver_config*. This configuration replaces the
|
||||||
// configuration eventually.
|
// :ref:`dns_resolution_config <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.dns_resolution_config>`
|
||||||
// TODO(yanjunxiang): Investigate the deprecation plan for *dns_resolution_config*.
|
// configuration.
|
||||||
// During the transition period when both *dns_resolution_config* and *typed_dns_resolver_config* exists,
|
// During the transition period when both *dns_resolution_config* and *typed_dns_resolver_config* exists,
|
||||||
// this configuration is optional.
|
// when *typed_dns_resolver_config* is in place, Envoy will use it and ignore *dns_resolution_config*.
|
||||||
// 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.
|
// When *typed_dns_resolver_config* is missing, the default behavior is in place.
|
||||||
// [#not-implemented-hide:]
|
// [#extension-category: envoy.network.dns_resolver]
|
||||||
core.v3.TypedExtensionConfig typed_dns_resolver_config = 31;
|
core.v3.TypedExtensionConfig typed_dns_resolver_config = 31;
|
||||||
|
|
||||||
// Specifies optional bootstrap extensions to be instantiated at startup time.
|
// Specifies optional bootstrap extensions to be instantiated at startup time.
|
||||||
|
|
@ -329,11 +326,15 @@ message Bootstrap {
|
||||||
//
|
//
|
||||||
// Note that the 'set-cookie' header cannot be registered as inline header.
|
// Note that the 'set-cookie' header cannot be registered as inline header.
|
||||||
repeated CustomInlineHeader inline_headers = 32;
|
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
|
// Administration interface :ref:`operations documentation
|
||||||
// <operations_admin_interface>`.
|
// <operations_admin_interface>`.
|
||||||
// [#next-free-field: 6]
|
// [#next-free-field: 7]
|
||||||
message Admin {
|
message Admin {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.config.bootstrap.v2.Admin";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.config.bootstrap.v2.Admin";
|
||||||
|
|
||||||
|
|
@ -359,6 +360,10 @@ message Admin {
|
||||||
// Additional socket options that may not be present in Envoy source code or
|
// Additional socket options that may not be present in Envoy source code or
|
||||||
// precompiled binaries.
|
// precompiled binaries.
|
||||||
repeated core.v3.SocketOption socket_options = 4;
|
repeated core.v3.SocketOption socket_options = 4;
|
||||||
|
|
||||||
|
// Indicates whether :ref:`global_downstream_max_connections <config_overload_manager_limiting_connections>`
|
||||||
|
// should apply to the admin interface or not.
|
||||||
|
bool ignore_global_conn_limit = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cluster manager :ref:`architecture overview <arch_overview_cluster_manager>`.
|
// Cluster manager :ref:`architecture overview <arch_overview_cluster_manager>`.
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.cluster.aggregate.v2alpha";
|
option java_package = "io.envoyproxy.envoy.config.cluster.aggregate.v2alpha";
|
||||||
option java_outer_classname = "ClusterProto";
|
option java_outer_classname = "ClusterProto";
|
||||||
option java_multiple_files = true;
|
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_migrate).move_to_package = "envoy.extensions.clusters.aggregate.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
|
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
|
||||||
option java_outer_classname = "CircuitBreakerProto";
|
option java_outer_classname = "CircuitBreakerProto";
|
||||||
option java_multiple_files = true;
|
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;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Circuit breakers]
|
// [#protodoc-title: Circuit breakers]
|
||||||
|
|
@ -59,10 +60,12 @@ message CircuitBreakers {
|
||||||
|
|
||||||
// The maximum number of pending requests that Envoy will allow to the
|
// The maximum number of pending requests that Envoy will allow to the
|
||||||
// upstream cluster. If not specified, the default is 1024.
|
// 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;
|
google.protobuf.UInt32Value max_pending_requests = 3;
|
||||||
|
|
||||||
// The maximum number of parallel requests that Envoy will make to the
|
// The maximum number of parallel requests that Envoy will make to the
|
||||||
// upstream cluster. If not specified, the default is 1024.
|
// upstream cluster. If not specified, the default is 1024.
|
||||||
|
// This limit does not apply to non-HTTP traffic.
|
||||||
google.protobuf.UInt32Value max_requests = 4;
|
google.protobuf.UInt32Value max_requests = 4;
|
||||||
|
|
||||||
// The maximum number of parallel retries that Envoy will allow to the
|
// The maximum number of parallel retries that Envoy will allow to the
|
||||||
|
|
@ -102,4 +105,17 @@ message CircuitBreakers {
|
||||||
// :ref:`RoutingPriority<envoy_v3_api_enum_config.core.v3.RoutingPriority>`, the default values
|
// :ref:`RoutingPriority<envoy_v3_api_enum_config.core.v3.RoutingPriority>`, the default values
|
||||||
// are used.
|
// are used.
|
||||||
repeated Thresholds thresholds = 1;
|
repeated Thresholds thresholds = 1;
|
||||||
|
|
||||||
|
// Optional per-host limits which apply to each individual host in a cluster.
|
||||||
|
//
|
||||||
|
// .. note::
|
||||||
|
// currently only the :ref:`max_connections
|
||||||
|
// <envoy_v3_api_field_config.cluster.v3.CircuitBreakers.Thresholds.max_connections>` field is supported for per-host limits.
|
||||||
|
//
|
||||||
|
// If multiple per-host :ref:`Thresholds<envoy_v3_api_msg_config.cluster.v3.CircuitBreakers.Thresholds>`
|
||||||
|
// are defined with the same :ref:`RoutingPriority<envoy_v3_api_enum_config.core.v3.RoutingPriority>`,
|
||||||
|
// the first one in the list is used. If no per-host Thresholds are defined for a given
|
||||||
|
// :ref:`RoutingPriority<envoy_v3_api_enum_config.core.v3.RoutingPriority>`,
|
||||||
|
// the cluster will not have per-host limits.
|
||||||
|
repeated Thresholds per_host_thresholds = 2;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
|
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
|
||||||
option java_outer_classname = "ClusterProto";
|
option java_outer_classname = "ClusterProto";
|
||||||
option java_multiple_files = true;
|
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;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Cluster configuration]
|
// [#protodoc-title: Cluster configuration]
|
||||||
|
|
@ -43,7 +44,7 @@ message ClusterCollection {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configuration for a single upstream cluster.
|
// Configuration for a single upstream cluster.
|
||||||
// [#next-free-field: 56]
|
// [#next-free-field: 57]
|
||||||
message Cluster {
|
message Cluster {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.Cluster";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.Cluster";
|
||||||
|
|
||||||
|
|
@ -112,9 +113,9 @@ message Cluster {
|
||||||
|
|
||||||
// Use the new :ref:`load_balancing_policy
|
// Use the new :ref:`load_balancing_policy
|
||||||
// <envoy_v3_api_field_config.cluster.v3.Cluster.load_balancing_policy>` field to determine the LB policy.
|
// <envoy_v3_api_field_config.cluster.v3.Cluster.load_balancing_policy>` field to determine the LB policy.
|
||||||
// [#next-major-version: In the v3 API, we should consider deprecating the lb_policy field
|
// This has been deprecated in favor of using the :ref:`load_balancing_policy
|
||||||
// and instead using the new load_balancing_policy field as the one and only mechanism for
|
// <envoy_v3_api_field_config.cluster.v3.Cluster.load_balancing_policy>` field without
|
||||||
// configuring this.]
|
// setting any value in :ref:`lb_policy<envoy_v3_api_field_config.cluster.v3.Cluster.lb_policy>`.
|
||||||
LOAD_BALANCING_POLICY_CONFIG = 7;
|
LOAD_BALANCING_POLICY_CONFIG = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -123,15 +124,26 @@ message Cluster {
|
||||||
// only perform a lookup for addresses in the IPv6 family. If AUTO is
|
// 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
|
// 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.
|
// 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.
|
||||||
// For cluster types other than
|
// For cluster types other than
|
||||||
// :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>` and
|
// :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>` and
|
||||||
// :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`,
|
// :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`,
|
||||||
// this setting is
|
// this setting is
|
||||||
// ignored.
|
// ignored.
|
||||||
|
// [#next-major-version: deprecate AUTO in favor of a V6_PREFERRED option.]
|
||||||
enum DnsLookupFamily {
|
enum DnsLookupFamily {
|
||||||
AUTO = 0;
|
AUTO = 0;
|
||||||
V4_ONLY = 1;
|
V4_ONLY = 1;
|
||||||
V6_ONLY = 2;
|
V6_ONLY = 2;
|
||||||
|
V4_PREFERRED = 3;
|
||||||
|
ALL = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ClusterProtocolSelection {
|
enum ClusterProtocolSelection {
|
||||||
|
|
@ -337,6 +349,40 @@ message Cluster {
|
||||||
bool list_as_any = 7;
|
bool list_as_any = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Configuration for :ref:`slow start mode <arch_overview_load_balancing_slow_start>`.
|
||||||
|
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.
|
// Specific configuration for the LeastRequest load balancing policy.
|
||||||
message LeastRequestLbConfig {
|
message LeastRequestLbConfig {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
|
|
@ -370,6 +416,10 @@ message Cluster {
|
||||||
// .. note::
|
// .. note::
|
||||||
// This setting only takes effect if all host weights are not equal.
|
// This setting only takes effect if all host weights are not equal.
|
||||||
core.v3.RuntimeDouble active_request_bias = 2;
|
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<arch_overview_load_balancing_types_ring_hash>`
|
// Specific configuration for the :ref:`RingHash<arch_overview_load_balancing_types_ring_hash>`
|
||||||
|
|
@ -424,9 +474,8 @@ message Cluster {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.api.v2.Cluster.OriginalDstLbConfig";
|
"envoy.api.v2.Cluster.OriginalDstLbConfig";
|
||||||
|
|
||||||
// When true, :ref:`x-envoy-original-dst-host
|
// When true, a HTTP header can be used to override the original dst address. The default header is
|
||||||
// <config_http_conn_man_headers_x-envoy-original-dst-host>` can be used to override destination
|
// :ref:`x-envoy-original-dst-host <config_http_conn_man_headers_x-envoy-original-dst-host>`.
|
||||||
// address.
|
|
||||||
//
|
//
|
||||||
// .. attention::
|
// .. attention::
|
||||||
//
|
//
|
||||||
|
|
@ -438,10 +487,14 @@ message Cluster {
|
||||||
//
|
//
|
||||||
// If the header appears multiple times only the first value is used.
|
// If the header appears multiple times only the first value is used.
|
||||||
bool use_http_header = 1;
|
bool use_http_header = 1;
|
||||||
|
|
||||||
|
// The http header to override destination address if :ref:`use_http_header <envoy_v3_api_field_config.cluster.v3.Cluster.OriginalDstLbConfig.use_http_header>`.
|
||||||
|
// is set to true. If the value is empty, :ref:`x-envoy-original-dst-host <config_http_conn_man_headers_x-envoy-original-dst-host>` will be used.
|
||||||
|
string http_header_name = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Common configuration for all load balancer implementations.
|
// Common configuration for all load balancer implementations.
|
||||||
// [#next-free-field: 8]
|
// [#next-free-field: 9]
|
||||||
message CommonLbConfig {
|
message CommonLbConfig {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.api.v2.Cluster.CommonLbConfig";
|
"envoy.api.v2.Cluster.CommonLbConfig";
|
||||||
|
|
@ -550,6 +603,14 @@ message Cluster {
|
||||||
|
|
||||||
// Common Configuration for all consistent hashing load balancers (MaglevLb, RingHashLb, etc.)
|
// Common Configuration for all consistent hashing load balancers (MaglevLb, RingHashLb, etc.)
|
||||||
ConsistentHashingLbConfig consistent_hashing_lb_config = 7;
|
ConsistentHashingLbConfig consistent_hashing_lb_config = 7;
|
||||||
|
|
||||||
|
// This controls what hosts are considered valid when using
|
||||||
|
// :ref:`host overrides <arch_overview_load_balancing_override_host>`, which is used by some
|
||||||
|
// filters to modify the load balancing decision.
|
||||||
|
//
|
||||||
|
// If this is unset then [UNKNOWN, HEALTHY, DEGRADED] will be applied by default. If this is
|
||||||
|
// set with an empty set of statuses then host overrides will be ignored by the load balancing.
|
||||||
|
core.v3.HealthStatusSet override_host_status = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
message RefreshRate {
|
message RefreshRate {
|
||||||
|
|
@ -690,11 +751,9 @@ message Cluster {
|
||||||
// emitting stats for the cluster and access logging the cluster name. This will appear as
|
// emitting stats for the cluster and access logging the cluster name. This will appear as
|
||||||
// additional information in configuration dumps of a cluster's current status as
|
// additional information in configuration dumps of a cluster's current status as
|
||||||
// :ref:`observability_name <envoy_v3_api_field_admin.v3.ClusterStatus.observability_name>`
|
// :ref:`observability_name <envoy_v3_api_field_admin.v3.ClusterStatus.observability_name>`
|
||||||
// and as an additional tag "upstream_cluster.name" while tracing. Note: access logging using
|
// and as an additional tag "upstream_cluster.name" while tracing. Note: Any ``:`` in the name
|
||||||
// this field is presently enabled with runtime feature
|
// will be converted to ``_`` when emitting statistics. This should not be confused with
|
||||||
// `envoy.reloadable_features.use_observable_cluster_name`. Any ``:`` in the name will be
|
// :ref:`Router Filter Header <config_http_filters_router_x-envoy-upstream-alt-stat-name>`.
|
||||||
// converted to ``_`` when emitting statistics. This should not be confused with :ref:`Router
|
|
||||||
// Filter Header <config_http_filters_router_x-envoy-upstream-alt-stat-name>`.
|
|
||||||
string alt_stat_name = 28 [(udpa.annotations.field_migrate).rename = "observability_name"];
|
string alt_stat_name = 28 [(udpa.annotations.field_migrate).rename = "observability_name"];
|
||||||
|
|
||||||
oneof cluster_discovery_type {
|
oneof cluster_discovery_type {
|
||||||
|
|
@ -859,41 +918,34 @@ message Cluster {
|
||||||
// :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`
|
// :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`
|
||||||
// and :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`
|
// and :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`
|
||||||
// this setting is ignored.
|
// this setting is ignored.
|
||||||
// Setting this value causes failure if the
|
|
||||||
// ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime value is true during
|
|
||||||
// server startup. Apple's API only allows overriding DNS resolvers via system settings.
|
|
||||||
// This field is deprecated in favor of *dns_resolution_config*
|
// This field is deprecated in favor of *dns_resolution_config*
|
||||||
// which aggregates all of the DNS resolver configuration in a single message.
|
// which aggregates all of the DNS resolver configuration in a single message.
|
||||||
repeated core.v3.Address dns_resolvers = 18
|
repeated core.v3.Address dns_resolvers = 18
|
||||||
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
|
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
|
||||||
|
|
||||||
// Always use TCP queries instead of UDP queries for DNS lookups.
|
// Always use TCP queries instead of UDP queries for DNS lookups.
|
||||||
// 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.
|
|
||||||
// This field is deprecated in favor of *dns_resolution_config*
|
// This field is deprecated in favor of *dns_resolution_config*
|
||||||
// which aggregates all of the DNS resolver configuration in a single message.
|
// which aggregates all of the DNS resolver configuration in a single message.
|
||||||
bool use_tcp_for_dns_lookups = 45
|
bool use_tcp_for_dns_lookups = 45
|
||||||
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
|
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
|
||||||
|
|
||||||
// DNS resolution configuration which includes the underlying dns resolver addresses and options.
|
// DNS resolution configuration which includes the underlying dns resolver addresses and options.
|
||||||
// *dns_resolution_config* will be deprecated once
|
// This field is deprecated in favor of
|
||||||
// :ref:'typed_dns_resolver_config <envoy_v3_api_field_config.cluster.v3.Cluster.typed_dns_resolver_config>'
|
// :ref:`typed_dns_resolver_config <envoy_v3_api_field_config.cluster.v3.Cluster.typed_dns_resolver_config>`.
|
||||||
// is fully supported.
|
core.v3.DnsResolutionConfig dns_resolution_config = 53
|
||||||
core.v3.DnsResolutionConfig dns_resolution_config = 53;
|
[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,
|
// 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.
|
// or any other DNS resolver types and the related parameters.
|
||||||
// For example, an object of :ref:`DnsResolutionConfig <envoy_v3_api_msg_config.core.v3.DnsResolutionConfig>`
|
// For example, an object of
|
||||||
// can be packed into this *typed_dns_resolver_config*. This configuration will replace the
|
// :ref:`CaresDnsResolverConfig <envoy_v3_api_msg_extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig>`
|
||||||
// :ref:'dns_resolution_config <envoy_v3_api_field_config.cluster.v3.Cluster.dns_resolution_config>'
|
// can be packed into this *typed_dns_resolver_config*. This configuration replaces the
|
||||||
// configuration eventually.
|
// :ref:`dns_resolution_config <envoy_v3_api_field_config.cluster.v3.Cluster.dns_resolution_config>`
|
||||||
// TODO(yanjunxiang): Investigate the deprecation plan for *dns_resolution_config*.
|
// configuration.
|
||||||
// During the transition period when both *dns_resolution_config* and *typed_dns_resolver_config* exists,
|
// During the transition period when both *dns_resolution_config* and *typed_dns_resolver_config* exists,
|
||||||
// this configuration is optional.
|
// when *typed_dns_resolver_config* is in place, Envoy will use it and ignore *dns_resolution_config*.
|
||||||
// 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.
|
// When *typed_dns_resolver_config* is missing, the default behavior is in place.
|
||||||
// [#not-implemented-hide:]
|
// [#extension-category: envoy.network.dns_resolver]
|
||||||
core.v3.TypedExtensionConfig typed_dns_resolver_config = 55;
|
core.v3.TypedExtensionConfig typed_dns_resolver_config = 55;
|
||||||
|
|
||||||
// Optional configuration for having cluster readiness block on warm-up. Currently, only applicable for
|
// Optional configuration for having cluster readiness block on warm-up. Currently, only applicable for
|
||||||
|
|
@ -951,6 +1003,9 @@ message Cluster {
|
||||||
|
|
||||||
// Optional configuration for the LeastRequest load balancing policy.
|
// Optional configuration for the LeastRequest load balancing policy.
|
||||||
LeastRequestLbConfig least_request_lb_config = 37;
|
LeastRequestLbConfig least_request_lb_config = 37;
|
||||||
|
|
||||||
|
// Optional configuration for the RoundRobin load balancing policy.
|
||||||
|
RoundRobinLbConfig round_robin_lb_config = 56;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Common configuration for all load balancer implementations.
|
// Common configuration for all load balancer implementations.
|
||||||
|
|
@ -1007,9 +1062,8 @@ message Cluster {
|
||||||
// servers of this cluster.
|
// servers of this cluster.
|
||||||
repeated Filter filters = 40;
|
repeated Filter filters = 40;
|
||||||
|
|
||||||
// New mechanism for LB policy configuration. Used only if the
|
// If this field is set and is supported by the client, it will supersede the value of
|
||||||
// :ref:`lb_policy<envoy_v3_api_field_config.cluster.v3.Cluster.lb_policy>` field has the value
|
// :ref:`lb_policy<envoy_v3_api_field_config.cluster.v3.Cluster.lb_policy>`.
|
||||||
// :ref:`LOAD_BALANCING_POLICY_CONFIG<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbPolicy.LOAD_BALANCING_POLICY_CONFIG>`.
|
|
||||||
LoadBalancingPolicy load_balancing_policy = 41;
|
LoadBalancingPolicy load_balancing_policy = 41;
|
||||||
|
|
||||||
// [#not-implemented-hide:]
|
// [#not-implemented-hide:]
|
||||||
|
|
@ -1126,6 +1180,11 @@ message UpstreamConnectionOptions {
|
||||||
|
|
||||||
// If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.
|
// If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.
|
||||||
core.v3.TcpKeepalive tcp_keepalive = 1;
|
core.v3.TcpKeepalive tcp_keepalive = 1;
|
||||||
|
|
||||||
|
// If enabled, associates the interface name of the local address with the upstream connection.
|
||||||
|
// This can be used by extensions during processing of requests. The association mechanism is
|
||||||
|
// implementation specific. Defaults to false due to performance concerns.
|
||||||
|
bool set_local_interface_name_on_upstream_connections = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message TrackClusterStats {
|
message TrackClusterStats {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
|
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
|
||||||
option java_outer_classname = "FilterProto";
|
option java_outer_classname = "FilterProto";
|
||||||
option java_multiple_files = true;
|
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;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Upstream filters]
|
// [#protodoc-title: Upstream filters]
|
||||||
|
|
@ -19,12 +20,12 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
message Filter {
|
message Filter {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.cluster.Filter";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.cluster.Filter";
|
||||||
|
|
||||||
// The name of the filter to instantiate. The name must match a
|
// The name of the filter configuration.
|
||||||
// supported upstream filter. Note that Envoy's :ref:`downstream network
|
|
||||||
// filters <config_network_filters>` are not valid upstream filters.
|
|
||||||
string name = 1 [(validate.rules).string = {min_len: 1}];
|
string name = 1 [(validate.rules).string = {min_len: 1}];
|
||||||
|
|
||||||
// Filter specific configuration which depends on the filter being
|
// Filter specific configuration which depends on the filter being
|
||||||
// instantiated. See the supported filters for further documentation.
|
// instantiated. See the supported filters for further documentation.
|
||||||
|
// Note that Envoy's :ref:`downstream network
|
||||||
|
// filters <config_network_filters>` are not valid upstream filters.
|
||||||
google.protobuf.Any typed_config = 2;
|
google.protobuf.Any typed_config = 2;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,14 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
|
option java_package = "io.envoyproxy.envoy.config.cluster.v3";
|
||||||
option java_outer_classname = "OutlierDetectionProto";
|
option java_outer_classname = "OutlierDetectionProto";
|
||||||
option java_multiple_files = true;
|
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;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Outlier detection]
|
// [#protodoc-title: Outlier detection]
|
||||||
|
|
||||||
// See the :ref:`architecture overview <arch_overview_outlier_detection>` for
|
// See the :ref:`architecture overview <arch_overview_outlier_detection>` for
|
||||||
// more information on outlier detection.
|
// more information on outlier detection.
|
||||||
// [#next-free-field: 22]
|
// [#next-free-field: 23]
|
||||||
message OutlierDetection {
|
message OutlierDetection {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.api.v2.cluster.OutlierDetection";
|
"envoy.api.v2.cluster.OutlierDetection";
|
||||||
|
|
@ -154,4 +155,10 @@ message OutlierDetection {
|
||||||
// for more information. If not specified, the default value (300000ms or 300s) or
|
// for more information. If not specified, the default value (300000ms or 300s) or
|
||||||
// :ref:`base_ejection_time<envoy_v3_api_field_config.cluster.v3.OutlierDetection.base_ejection_time>` value is applied, whatever is larger.
|
// :ref:`base_ejection_time<envoy_v3_api_field_config.cluster.v3.OutlierDetection.base_ejection_time>` value is applied, whatever is larger.
|
||||||
google.protobuf.Duration max_ejection_time = 21 [(validate.rules).duration = {gt {}}];
|
google.protobuf.Duration max_ejection_time = 21 [(validate.rules).duration = {gt {}}];
|
||||||
|
|
||||||
|
// The maximum amount of jitter to add to the ejection time, in order to prevent
|
||||||
|
// a 'thundering herd' effect where all proxies try to reconnect to host at the same time.
|
||||||
|
// See :ref:`max_ejection_time_jitter<envoy_v3_api_field_config.cluster.v3.OutlierDetection.base_ejection_time>`
|
||||||
|
// Defaults to 0s.
|
||||||
|
google.protobuf.Duration max_ejection_time_jitter = 22;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "AddressProto";
|
option java_outer_classname = "AddressProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Network addresses]
|
// [#protodoc-title: Network addresses]
|
||||||
|
|
@ -30,9 +31,9 @@ message Pipe {
|
||||||
uint32 mode = 2 [(validate.rules).uint32 = {lte: 511}];
|
uint32 mode = 2 [(validate.rules).uint32 = {lte: 511}];
|
||||||
}
|
}
|
||||||
|
|
||||||
// [#not-implemented-hide:] The address represents an envoy internal listener.
|
// The address represents an envoy internal listener.
|
||||||
// TODO(lambdai): Make this address available for listener and endpoint.
|
// [#comment: TODO(lambdai): Make this address available for listener and endpoint.
|
||||||
// TODO(asraa): When address available, remove workaround from test/server/server_fuzz_test.cc:30.
|
// TODO(asraa): When address available, remove workaround from test/server/server_fuzz_test.cc:30.]
|
||||||
message EnvoyInternalAddress {
|
message EnvoyInternalAddress {
|
||||||
oneof address_name_specifier {
|
oneof address_name_specifier {
|
||||||
option (validate.required) = true;
|
option (validate.required) = true;
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "BackoffProto";
|
option java_outer_classname = "BackoffProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Backoff Strategy]
|
// [#protodoc-title: Backoff Strategy]
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "BaseProto";
|
option java_outer_classname = "BaseProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Common types]
|
// [#protodoc-title: Common types]
|
||||||
|
|
@ -296,6 +297,15 @@ message RuntimeFeatureFlag {
|
||||||
string runtime_key = 2 [(validate.rules).string = {min_len: 1}];
|
string runtime_key = 2 [(validate.rules).string = {min_len: 1}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Query parameter name/value pair.
|
||||||
|
message QueryParameter {
|
||||||
|
// The key of the query parameter. Case sensitive.
|
||||||
|
string key = 1 [(validate.rules).string = {min_len: 1}];
|
||||||
|
|
||||||
|
// The value of the query parameter.
|
||||||
|
string value = 2;
|
||||||
|
}
|
||||||
|
|
||||||
// Header name/value pair.
|
// Header name/value pair.
|
||||||
message HeaderValue {
|
message HeaderValue {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.HeaderValue";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.HeaderValue";
|
||||||
|
|
@ -320,12 +330,33 @@ message HeaderValueOption {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.api.v2.core.HeaderValueOption";
|
"envoy.api.v2.core.HeaderValueOption";
|
||||||
|
|
||||||
|
// Describes the supported actions types for header append action.
|
||||||
|
enum HeaderAppendAction {
|
||||||
|
// This action will append the specified value to the existing values if the header
|
||||||
|
// already exists. If the header doesn't exist then this will add the header with
|
||||||
|
// specified key and value.
|
||||||
|
APPEND_IF_EXISTS_OR_ADD = 0;
|
||||||
|
|
||||||
|
// This action will add the header if it doesn't already exist. If the header
|
||||||
|
// already exists then this will be a no-op.
|
||||||
|
ADD_IF_ABSENT = 1;
|
||||||
|
|
||||||
|
// This action will overwrite the specified value by discarding any existing values if
|
||||||
|
// the header already exists. If the header doesn't exist then this will add the header
|
||||||
|
// with specified key and value.
|
||||||
|
OVERWRITE_IF_EXISTS_OR_ADD = 2;
|
||||||
|
}
|
||||||
|
|
||||||
// Header name/value pair that this option applies to.
|
// Header name/value pair that this option applies to.
|
||||||
HeaderValue header = 1 [(validate.rules).message = {required: true}];
|
HeaderValue header = 1 [(validate.rules).message = {required: true}];
|
||||||
|
|
||||||
// Should the value be appended? If true (default), the value is appended to
|
// Should the value be appended? If true (default), the value is appended to
|
||||||
// existing values. Otherwise it replaces any existing values.
|
// existing values. Otherwise it replaces any existing values.
|
||||||
google.protobuf.BoolValue append = 2;
|
google.protobuf.BoolValue append = 2;
|
||||||
|
|
||||||
|
// [#not-implemented-hide:] Describes the action taken to append/overwrite the given value for an existing header
|
||||||
|
// or to only add this header if it's absent. Value defaults to :ref:`APPEND_IF_EXISTS_OR_ADD<envoy_v3_api_enum_value_config.core.v3.HeaderValueOption.HeaderAppendAction.APPEND_IF_EXISTS_OR_ADD>`.
|
||||||
|
HeaderAppendAction append_action = 3 [(validate.rules).enum = {defined_only: true}];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrapper for a set of headers.
|
// Wrapper for a set of headers.
|
||||||
|
|
@ -342,7 +373,7 @@ message WatchedDirectory {
|
||||||
string path = 1 [(validate.rules).string = {min_len: 1}];
|
string path = 1 [(validate.rules).string = {min_len: 1}];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Data source consisting of either a file or an inline value.
|
// Data source consisting of a file, an inline value, or an environment variable.
|
||||||
message DataSource {
|
message DataSource {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.DataSource";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.DataSource";
|
||||||
|
|
||||||
|
|
@ -357,6 +388,9 @@ message DataSource {
|
||||||
|
|
||||||
// String inlined in the configuration.
|
// String inlined in the configuration.
|
||||||
string inline_string = 3;
|
string inline_string = 3;
|
||||||
|
|
||||||
|
// Environment variable data source.
|
||||||
|
string environment_variable = 4 [(validate.rules).string = {min_len: 1}];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,11 @@ syntax = "proto3";
|
||||||
|
|
||||||
package envoy.config.core.v3;
|
package envoy.config.core.v3;
|
||||||
|
|
||||||
|
import "envoy/config/core/v3/base.proto";
|
||||||
|
import "envoy/config/core/v3/extension.proto";
|
||||||
import "envoy/config/core/v3/grpc_service.proto";
|
import "envoy/config/core/v3/grpc_service.proto";
|
||||||
|
|
||||||
|
import "google/protobuf/any.proto";
|
||||||
import "google/protobuf/duration.proto";
|
import "google/protobuf/duration.proto";
|
||||||
import "google/protobuf/wrappers.proto";
|
import "google/protobuf/wrappers.proto";
|
||||||
|
|
||||||
|
|
@ -17,6 +20,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "ConfigSourceProto";
|
option java_outer_classname = "ConfigSourceProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Configuration sources]
|
// [#protodoc-title: Configuration sources]
|
||||||
|
|
@ -38,7 +42,7 @@ enum ApiVersion {
|
||||||
|
|
||||||
// API configuration source. This identifies the API type and cluster that Envoy
|
// API configuration source. This identifies the API type and cluster that Envoy
|
||||||
// will use to fetch an xDS API.
|
// will use to fetch an xDS API.
|
||||||
// [#next-free-field: 9]
|
// [#next-free-field: 10]
|
||||||
message ApiConfigSource {
|
message ApiConfigSource {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.ApiConfigSource";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.ApiConfigSource";
|
||||||
|
|
||||||
|
|
@ -106,6 +110,16 @@ message ApiConfigSource {
|
||||||
|
|
||||||
// Skip the node identifier in subsequent discovery requests for streaming gRPC config types.
|
// Skip the node identifier in subsequent discovery requests for streaming gRPC config types.
|
||||||
bool set_node_on_first_message_only = 7;
|
bool set_node_on_first_message_only = 7;
|
||||||
|
|
||||||
|
// A list of config validators that will be executed when a new update is
|
||||||
|
// received from the ApiConfigSource. Note that each validator handles a
|
||||||
|
// specific xDS service type, and only the validators corresponding to the
|
||||||
|
// type url (in `:ref: DiscoveryResponse` or `:ref: DeltaDiscoveryResponse`)
|
||||||
|
// will be invoked.
|
||||||
|
// If the validator returns false or throws an exception, the config will be rejected by
|
||||||
|
// the client, and a NACK will be sent.
|
||||||
|
// [#extension-category: envoy.config.validators]
|
||||||
|
repeated TypedExtensionConfig config_validators = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Aggregated Discovery Service (ADS) options. This is currently empty, but when
|
// Aggregated Discovery Service (ADS) options. This is currently empty, but when
|
||||||
|
|
@ -142,13 +156,49 @@ message RateLimitSettings {
|
||||||
google.protobuf.DoubleValue fill_rate = 2 [(validate.rules).double = {gt: 0.0}];
|
google.protobuf.DoubleValue fill_rate = 2 [(validate.rules).double = {gt: 0.0}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Local filesystem path configuration source.
|
||||||
|
message PathConfigSource {
|
||||||
|
// Path on the filesystem to source and watch for configuration updates.
|
||||||
|
// When sourcing configuration for a :ref:`secret <envoy_v3_api_msg_extensions.transport_sockets.tls.v3.Secret>`,
|
||||||
|
// the certificate and key files are also watched for updates.
|
||||||
|
//
|
||||||
|
// .. note::
|
||||||
|
//
|
||||||
|
// The path to the source must exist at config load time.
|
||||||
|
//
|
||||||
|
// .. note::
|
||||||
|
//
|
||||||
|
// If `watched_directory` is *not* configured, Envoy will watch the file path for *moves.*
|
||||||
|
// This is because in general only moves are atomic. The same method of swapping files as is
|
||||||
|
// demonstrated in the :ref:`runtime documentation <config_runtime_symbolic_link_swap>` can be
|
||||||
|
// used here also. If `watched_directory` is configured, no watch will be placed directly on
|
||||||
|
// this path. Instead, the configured `watched_directory` will be used to trigger reloads of
|
||||||
|
// this path. This is required in certain deployment scenarios. See below for more information.
|
||||||
|
string path = 1 [(validate.rules).string = {min_len: 1}];
|
||||||
|
|
||||||
|
// If configured, this directory will be watched for *moves.* When an entry in this directory is
|
||||||
|
// moved to, the `path` will be reloaded. This is required in certain deployment scenarios.
|
||||||
|
//
|
||||||
|
// Specifically, if trying to load an xDS resource using a
|
||||||
|
// `Kubernetes ConfigMap <https://kubernetes.io/docs/concepts/configuration/configmap/>`_, the
|
||||||
|
// following configuration might be used:
|
||||||
|
// 1. Store xds.yaml inside a ConfigMap.
|
||||||
|
// 2. Mount the ConfigMap to `/config_map/xds`
|
||||||
|
// 3. Configure path `/config_map/xds/xds.yaml`
|
||||||
|
// 4. Configure watched directory `/config_map/xds`
|
||||||
|
//
|
||||||
|
// The above configuration will ensure that Envoy watches the owning directory for moves which is
|
||||||
|
// required due to how Kubernetes manages ConfigMap symbolic links during atomic updates.
|
||||||
|
WatchedDirectory watched_directory = 2;
|
||||||
|
}
|
||||||
|
|
||||||
// Configuration for :ref:`listeners <config_listeners>`, :ref:`clusters
|
// Configuration for :ref:`listeners <config_listeners>`, :ref:`clusters
|
||||||
// <config_cluster_manager>`, :ref:`routes
|
// <config_cluster_manager>`, :ref:`routes
|
||||||
// <envoy_v3_api_msg_config.route.v3.RouteConfiguration>`, :ref:`endpoints
|
// <envoy_v3_api_msg_config.route.v3.RouteConfiguration>`, :ref:`endpoints
|
||||||
// <arch_overview_service_discovery>` etc. may either be sourced from the
|
// <arch_overview_service_discovery>` etc. may either be sourced from the
|
||||||
// filesystem or from an xDS API source. Filesystem configs are watched with
|
// filesystem or from an xDS API source. Filesystem configs are watched with
|
||||||
// inotify for updates.
|
// inotify for updates.
|
||||||
// [#next-free-field: 8]
|
// [#next-free-field: 9]
|
||||||
message ConfigSource {
|
message ConfigSource {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.ConfigSource";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.ConfigSource";
|
||||||
|
|
||||||
|
|
@ -161,20 +211,11 @@ message ConfigSource {
|
||||||
oneof config_source_specifier {
|
oneof config_source_specifier {
|
||||||
option (validate.required) = true;
|
option (validate.required) = true;
|
||||||
|
|
||||||
// Path on the filesystem to source and watch for configuration updates.
|
// Deprecated in favor of `path_config_source`. Use that field instead.
|
||||||
// When sourcing configuration for :ref:`secret <envoy_v3_api_msg_extensions.transport_sockets.tls.v3.Secret>`,
|
string path = 1 [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
|
||||||
// the certificate and key files are also watched for updates.
|
|
||||||
//
|
// Local filesystem path configuration source.
|
||||||
// .. note::
|
PathConfigSource path_config_source = 8;
|
||||||
//
|
|
||||||
// The path to the source must exist at config load time.
|
|
||||||
//
|
|
||||||
// .. note::
|
|
||||||
//
|
|
||||||
// Envoy will only watch the file path for *moves.* This is because in general only moves
|
|
||||||
// are atomic. The same method of swapping files as is demonstrated in the
|
|
||||||
// :ref:`runtime documentation <config_runtime_symbolic_link_swap>` can be used here also.
|
|
||||||
string path = 1;
|
|
||||||
|
|
||||||
// API configuration source.
|
// API configuration source.
|
||||||
ApiConfigSource api_config_source = 2;
|
ApiConfigSource api_config_source = 2;
|
||||||
|
|
@ -211,3 +252,32 @@ message ConfigSource {
|
||||||
// turn expect to be delivered.
|
// turn expect to be delivered.
|
||||||
ApiVersion resource_api_version = 6 [(validate.rules).enum = {defined_only: true}];
|
ApiVersion resource_api_version = 6 [(validate.rules).enum = {defined_only: true}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Configuration source specifier for a late-bound extension configuration. The
|
||||||
|
// parent resource is warmed until all the initial extension configurations are
|
||||||
|
// received, unless the flag to apply the default configuration is set.
|
||||||
|
// Subsequent extension updates are atomic on a per-worker basis. Once an
|
||||||
|
// extension configuration is applied to a request or a connection, it remains
|
||||||
|
// constant for the duration of processing. If the initial delivery of the
|
||||||
|
// extension configuration fails, due to a timeout for example, the optional
|
||||||
|
// default configuration is applied. Without a default configuration, the
|
||||||
|
// extension is disabled, until an extension configuration is received. The
|
||||||
|
// behavior of a disabled extension depends on the context. For example, a
|
||||||
|
// filter chain with a disabled extension filter rejects all incoming streams.
|
||||||
|
message ExtensionConfigSource {
|
||||||
|
ConfigSource config_source = 1 [(validate.rules).any = {required: true}];
|
||||||
|
|
||||||
|
// Optional default configuration to use as the initial configuration if
|
||||||
|
// there is a failure to receive the initial extension configuration or if
|
||||||
|
// `apply_default_config_without_warming` flag is set.
|
||||||
|
google.protobuf.Any default_config = 2;
|
||||||
|
|
||||||
|
// Use the default config as the initial configuration without warming and
|
||||||
|
// waiting for the first discovery response. Requires the default configuration
|
||||||
|
// to be supplied.
|
||||||
|
bool apply_default_config_without_warming = 3;
|
||||||
|
|
||||||
|
// A set of permitted extension type URLs. Extension configuration updates are rejected
|
||||||
|
// if they do not match any type URL in the set.
|
||||||
|
repeated string type_urls = 4 [(validate.rules).repeated = {min_items: 1}];
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "EventServiceConfigProto";
|
option java_outer_classname = "EventServiceConfigProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#not-implemented-hide:]
|
// [#not-implemented-hide:]
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,6 @@ syntax = "proto3";
|
||||||
|
|
||||||
package envoy.config.core.v3;
|
package envoy.config.core.v3;
|
||||||
|
|
||||||
import "envoy/config/core/v3/config_source.proto";
|
|
||||||
|
|
||||||
import "google/protobuf/any.proto";
|
import "google/protobuf/any.proto";
|
||||||
|
|
||||||
import "udpa/annotations/status.proto";
|
import "udpa/annotations/status.proto";
|
||||||
|
|
@ -12,6 +10,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "ExtensionProto";
|
option java_outer_classname = "ExtensionProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Extension configuration]
|
// [#protodoc-title: Extension configuration]
|
||||||
|
|
@ -24,38 +23,10 @@ message TypedExtensionConfig {
|
||||||
string name = 1 [(validate.rules).string = {min_len: 1}];
|
string name = 1 [(validate.rules).string = {min_len: 1}];
|
||||||
|
|
||||||
// The typed config for the extension. The type URL will be used to identify
|
// The typed config for the extension. The type URL will be used to identify
|
||||||
// the extension. In the case that the type URL is *udpa.type.v1.TypedStruct*,
|
// the extension. In the case that the type URL is *xds.type.v3.TypedStruct*
|
||||||
// the inner type URL of *TypedStruct* will be utilized. See the
|
// (or, for historical reasons, *udpa.type.v1.TypedStruct*), the inner type
|
||||||
|
// URL of *TypedStruct* will be utilized. See the
|
||||||
// :ref:`extension configuration overview
|
// :ref:`extension configuration overview
|
||||||
// <config_overview_extension_configuration>` for further details.
|
// <config_overview_extension_configuration>` for further details.
|
||||||
google.protobuf.Any typed_config = 2 [(validate.rules).any = {required: true}];
|
google.protobuf.Any typed_config = 2 [(validate.rules).any = {required: true}];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configuration source specifier for a late-bound extension configuration. The
|
|
||||||
// parent resource is warmed until all the initial extension configurations are
|
|
||||||
// received, unless the flag to apply the default configuration is set.
|
|
||||||
// Subsequent extension updates are atomic on a per-worker basis. Once an
|
|
||||||
// extension configuration is applied to a request or a connection, it remains
|
|
||||||
// constant for the duration of processing. If the initial delivery of the
|
|
||||||
// extension configuration fails, due to a timeout for example, the optional
|
|
||||||
// default configuration is applied. Without a default configuration, the
|
|
||||||
// extension is disabled, until an extension configuration is received. The
|
|
||||||
// behavior of a disabled extension depends on the context. For example, a
|
|
||||||
// filter chain with a disabled extension filter rejects all incoming streams.
|
|
||||||
message ExtensionConfigSource {
|
|
||||||
ConfigSource config_source = 1 [(validate.rules).any = {required: true}];
|
|
||||||
|
|
||||||
// Optional default configuration to use as the initial configuration if
|
|
||||||
// there is a failure to receive the initial extension configuration or if
|
|
||||||
// `apply_default_config_without_warming` flag is set.
|
|
||||||
google.protobuf.Any default_config = 2;
|
|
||||||
|
|
||||||
// Use the default config as the initial configuration without warming and
|
|
||||||
// waiting for the first discovery response. Requires the default configuration
|
|
||||||
// to be supplied.
|
|
||||||
bool apply_default_config_without_warming = 3;
|
|
||||||
|
|
||||||
// A set of permitted extension type URLs. Extension configuration updates are rejected
|
|
||||||
// if they do not match any type URL in the set.
|
|
||||||
repeated string type_urls = 4 [(validate.rules).repeated = {min_items: 1}];
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "GrpcServiceProto";
|
option java_outer_classname = "GrpcServiceProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: gRPC services]
|
// [#protodoc-title: gRPC services]
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "HealthCheckProto";
|
option java_outer_classname = "HealthCheckProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Health check]
|
// [#protodoc-title: Health check]
|
||||||
|
|
@ -53,6 +54,12 @@ enum HealthStatus {
|
||||||
DEGRADED = 5;
|
DEGRADED = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message HealthStatusSet {
|
||||||
|
// An order-independent set of health status.
|
||||||
|
repeated HealthStatus statuses = 1
|
||||||
|
[(validate.rules).repeated = {items {enum {defined_only: true}}}];
|
||||||
|
}
|
||||||
|
|
||||||
// [#next-free-field: 25]
|
// [#next-free-field: 25]
|
||||||
message HealthCheck {
|
message HealthCheck {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.HealthCheck";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.core.HealthCheck";
|
||||||
|
|
@ -73,7 +80,7 @@ message HealthCheck {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// [#next-free-field: 12]
|
// [#next-free-field: 13]
|
||||||
message HttpHealthCheck {
|
message HttpHealthCheck {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.api.v2.core.HealthCheck.HttpHealthCheck";
|
"envoy.api.v2.core.HealthCheck.HttpHealthCheck";
|
||||||
|
|
@ -118,6 +125,18 @@ message HealthCheck {
|
||||||
// range are required. Only statuses in the range [100, 600) are allowed.
|
// range are required. Only statuses in the range [100, 600) are allowed.
|
||||||
repeated type.v3.Int64Range expected_statuses = 9;
|
repeated type.v3.Int64Range expected_statuses = 9;
|
||||||
|
|
||||||
|
// Specifies a list of HTTP response statuses considered retriable. If provided, responses in this range
|
||||||
|
// will count towards the configured :ref:`unhealthy_threshold <envoy_v3_api_field_config.core.v3.HealthCheck.unhealthy_threshold>`,
|
||||||
|
// but will not result in the host being considered immediately unhealthy. Ranges follow half-open semantics of
|
||||||
|
// :ref:`Int64Range <envoy_v3_api_msg_type.v3.Int64Range>`. The start and end of each range are required.
|
||||||
|
// Only statuses in the range [100, 600) are allowed. The :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>`
|
||||||
|
// field takes precedence for any range overlaps with this field i.e. if status code 200 is both retriable and expected, a 200 response will
|
||||||
|
// be considered a successful health check. By default all responses not in
|
||||||
|
// :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>` will result in
|
||||||
|
// the host being considered immediately unhealthy i.e. if status code 200 is expected and there are no configured retriable statuses, any
|
||||||
|
// non-200 response will result in the host being marked unhealthy.
|
||||||
|
repeated type.v3.Int64Range retriable_statuses = 12;
|
||||||
|
|
||||||
// Use specified application protocol for health checks.
|
// Use specified application protocol for health checks.
|
||||||
type.v3.CodecClientType codec_client_type = 10 [(validate.rules).enum = {defined_only: true}];
|
type.v3.CodecClientType codec_client_type = 10 [(validate.rules).enum = {defined_only: true}];
|
||||||
|
|
||||||
|
|
@ -173,6 +192,12 @@ message HealthCheck {
|
||||||
// the :ref:`hostname <envoy_v3_api_field_config.endpoint.v3.Endpoint.HealthCheckConfig.hostname>` field.
|
// the :ref:`hostname <envoy_v3_api_field_config.endpoint.v3.Endpoint.HealthCheckConfig.hostname>` field.
|
||||||
string authority = 2
|
string authority = 2
|
||||||
[(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
|
||||||
|
|
||||||
|
// Specifies a list of key-value pairs that should be added to the metadata of each GRPC call
|
||||||
|
// that is sent to the health checked cluster. For more information, including details on header value syntax,
|
||||||
|
// see the documentation on :ref:`custom request headers
|
||||||
|
// <config_http_conn_man_headers_custom_request_headers>`.
|
||||||
|
repeated HeaderValueOption initial_metadata = 3 [(validate.rules).repeated = {max_items: 1000}];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Custom health check.
|
// Custom health check.
|
||||||
|
|
@ -243,8 +268,10 @@ message HealthCheck {
|
||||||
uint32 interval_jitter_percent = 18;
|
uint32 interval_jitter_percent = 18;
|
||||||
|
|
||||||
// The number of unhealthy health checks required before a host is marked
|
// The number of unhealthy health checks required before a host is marked
|
||||||
// unhealthy. Note that for *http* health checking if a host responds with 503
|
// unhealthy. Note that for *http* health checking if a host responds with a code not in
|
||||||
// this threshold is ignored and the host is considered unhealthy immediately.
|
// :ref:`expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>`
|
||||||
|
// or :ref:`retriable_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.retriable_statuses>`,
|
||||||
|
// this threshold is ignored and the host is considered immediately unhealthy.
|
||||||
google.protobuf.UInt32Value unhealthy_threshold = 4 [(validate.rules).message = {required: true}];
|
google.protobuf.UInt32Value unhealthy_threshold = 4 [(validate.rules).message = {required: true}];
|
||||||
|
|
||||||
// The number of healthy health checks required before a host is marked
|
// The number of healthy health checks required before a host is marked
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "HttpUriProto";
|
option java_outer_classname = "HttpUriProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: HTTP Service URI ]
|
// [#protodoc-title: HTTP Service URI ]
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@ import "envoy/type/v3/percent.proto";
|
||||||
import "google/protobuf/duration.proto";
|
import "google/protobuf/duration.proto";
|
||||||
import "google/protobuf/wrappers.proto";
|
import "google/protobuf/wrappers.proto";
|
||||||
|
|
||||||
|
import "xds/annotations/v3/status.proto";
|
||||||
|
|
||||||
import "envoy/annotations/deprecation.proto";
|
import "envoy/annotations/deprecation.proto";
|
||||||
import "udpa/annotations/status.proto";
|
import "udpa/annotations/status.proto";
|
||||||
import "udpa/annotations/versioning.proto";
|
import "udpa/annotations/versioning.proto";
|
||||||
|
|
@ -16,6 +18,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "ProtocolProto";
|
option java_outer_classname = "ProtocolProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Protocol options]
|
// [#protodoc-title: Protocol options]
|
||||||
|
|
@ -26,11 +29,38 @@ message TcpProtocolOptions {
|
||||||
"envoy.api.v2.core.TcpProtocolOptions";
|
"envoy.api.v2.core.TcpProtocolOptions";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Config for keepalive probes in a QUIC connection.
|
||||||
|
// Note that QUIC keep-alive probing packets work differently from HTTP/2 keep-alive PINGs in a sense that the probing packet
|
||||||
|
// itself doesn't timeout waiting for a probing response. Quic has a shorter idle timeout than TCP, so it doesn't rely on such probing to discover dead connections. If the peer fails to respond, the connection will idle timeout eventually. Thus, they are configured differently from :ref:`connection_keepalive <envoy_v3_api_field_config.core.v3.Http2ProtocolOptions.connection_keepalive>`.
|
||||||
|
message QuicKeepAliveSettings {
|
||||||
|
// The max interval for a connection to send keep-alive probing packets (with PING or PATH_RESPONSE). The value should be smaller than :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` to prevent idle timeout while not less than 1s to avoid throttling the connection or flooding the peer with probes.
|
||||||
|
//
|
||||||
|
// If :ref:`initial_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.initial_interval>` is absent or zero, a client connection will use this value to start probing.
|
||||||
|
//
|
||||||
|
// If zero, disable keepalive probing.
|
||||||
|
// If absent, use the QUICHE default interval to probe.
|
||||||
|
google.protobuf.Duration max_interval = 1 [(validate.rules).duration = {
|
||||||
|
lte {}
|
||||||
|
gte {seconds: 1}
|
||||||
|
}];
|
||||||
|
|
||||||
|
// The interval to send the first few keep-alive probing packets to prevent connection from hitting the idle timeout. Subsequent probes will be sent, each one with an interval exponentially longer than previous one, till it reaches :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>`. And the probes afterwards will always use :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>`.
|
||||||
|
//
|
||||||
|
// The value should be smaller than :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` to prevent idle timeout and smaller than max_interval to take effect.
|
||||||
|
//
|
||||||
|
// If absent or zero, disable keepalive probing for a server connection. For a client connection, if :ref:`max_interval <envoy_v3_api_field_config.core.v3.QuicKeepAliveSettings.max_interval>` is also zero, do not keepalive, otherwise use max_interval or QUICHE default to probe all the time.
|
||||||
|
google.protobuf.Duration initial_interval = 2 [(validate.rules).duration = {
|
||||||
|
lte {}
|
||||||
|
gte {seconds: 1}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
// QUIC protocol options which apply to both downstream and upstream connections.
|
// QUIC protocol options which apply to both downstream and upstream connections.
|
||||||
|
// [#next-free-field: 6]
|
||||||
message QuicProtocolOptions {
|
message QuicProtocolOptions {
|
||||||
// Maximum number of streams that the client can negotiate per connection. 100
|
// Maximum number of streams that the client can negotiate per connection. 100
|
||||||
// if not specified.
|
// if not specified.
|
||||||
google.protobuf.UInt32Value max_concurrent_streams = 1;
|
google.protobuf.UInt32Value max_concurrent_streams = 1 [(validate.rules).uint32 = {gte: 1}];
|
||||||
|
|
||||||
// `Initial stream-level flow-control receive window
|
// `Initial stream-level flow-control receive window
|
||||||
// <https://tools.ietf.org/html/draft-ietf-quic-transport-34#section-4.1>`_ size. Valid values range from
|
// <https://tools.ietf.org/html/draft-ietf-quic-transport-34#section-4.1>`_ size. Valid values range from
|
||||||
|
|
@ -53,6 +83,17 @@ message QuicProtocolOptions {
|
||||||
// window size now, so it's also the minimum.
|
// window size now, so it's also the minimum.
|
||||||
google.protobuf.UInt32Value initial_connection_window_size = 3
|
google.protobuf.UInt32Value initial_connection_window_size = 3
|
||||||
[(validate.rules).uint32 = {lte: 25165824 gte: 1}];
|
[(validate.rules).uint32 = {lte: 25165824 gte: 1}];
|
||||||
|
|
||||||
|
// The number of timeouts that can occur before port migration is triggered for QUIC clients.
|
||||||
|
// This defaults to 1. If set to 0, port migration will not occur on path degrading.
|
||||||
|
// Timeout here refers to QUIC internal path degrading timeout mechanism, such as PTO.
|
||||||
|
// This has no effect on server sessions.
|
||||||
|
google.protobuf.UInt32Value num_timeouts_to_trigger_port_migration = 4
|
||||||
|
[(validate.rules).uint32 = {lte: 5 gte: 0}];
|
||||||
|
|
||||||
|
// Probes the peer at the configured interval to solicit traffic, i.e. ACK or PATH_RESPONSE, from the peer to push back connection idle timeout.
|
||||||
|
// If absent, use the default keepalive behavior of which a client connection sends PINGs every 15s, and a server connection doesn't do anything.
|
||||||
|
QuicKeepAliveSettings connection_keepalive = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message UpstreamHttpProtocolOptions {
|
message UpstreamHttpProtocolOptions {
|
||||||
|
|
@ -60,15 +101,26 @@ message UpstreamHttpProtocolOptions {
|
||||||
"envoy.api.v2.core.UpstreamHttpProtocolOptions";
|
"envoy.api.v2.core.UpstreamHttpProtocolOptions";
|
||||||
|
|
||||||
// Set transport socket `SNI <https://en.wikipedia.org/wiki/Server_Name_Indication>`_ for new
|
// Set transport socket `SNI <https://en.wikipedia.org/wiki/Server_Name_Indication>`_ for new
|
||||||
// upstream connections based on the downstream HTTP host/authority header, as seen by the
|
// upstream connections based on the downstream HTTP host/authority header or any other arbitrary
|
||||||
// :ref:`router filter <config_http_filters_router>`.
|
// header when :ref:`override_auto_sni_header <envoy_v3_api_field_config.core.v3.UpstreamHttpProtocolOptions.override_auto_sni_header>`
|
||||||
|
// is set, as seen by the :ref:`router filter <config_http_filters_router>`.
|
||||||
bool auto_sni = 1;
|
bool auto_sni = 1;
|
||||||
|
|
||||||
// Automatic validate upstream presented certificate for new upstream connections based on the
|
// Automatic validate upstream presented certificate for new upstream connections based on the
|
||||||
// downstream HTTP host/authority header, as seen by the
|
// downstream HTTP host/authority header or any other arbitrary header when :ref:`override_auto_sni_header <envoy_v3_api_field_config.core.v3.UpstreamHttpProtocolOptions.override_auto_sni_header>`
|
||||||
// :ref:`router filter <config_http_filters_router>`.
|
// is set, as seen by the :ref:`router filter <config_http_filters_router>`.
|
||||||
// This field is intended to set with `auto_sni` field.
|
// This field is intended to be set with `auto_sni` field.
|
||||||
bool auto_san_validation = 2;
|
bool auto_san_validation = 2;
|
||||||
|
|
||||||
|
// An optional alternative to the host/authority header to be used for setting the SNI value.
|
||||||
|
// It should be a valid downstream HTTP header, as seen by the
|
||||||
|
// :ref:`router filter <config_http_filters_router>`.
|
||||||
|
// If unset, host/authority header will be used for populating the SNI. If the specified header
|
||||||
|
// is not found or the value is empty, host/authority header will be used instead.
|
||||||
|
// This field is intended to be set with `auto_sni` and/or `auto_san_validation` fields.
|
||||||
|
// If none of these fields are set then setting this would be a no-op.
|
||||||
|
string override_auto_sni_header = 3
|
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configures the alternate protocols cache which tracks alternate protocols that can be used to
|
// Configures the alternate protocols cache which tracks alternate protocols that can be used to
|
||||||
|
|
@ -76,6 +128,24 @@ message UpstreamHttpProtocolOptions {
|
||||||
// HTTP Alternative Services and https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-04
|
// HTTP Alternative Services and https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-04
|
||||||
// for the "HTTPS" DNS resource record.
|
// for the "HTTPS" DNS resource record.
|
||||||
message AlternateProtocolsCacheOptions {
|
message AlternateProtocolsCacheOptions {
|
||||||
|
// Allows pre-populating the cache with HTTP/3 alternate protocols entries with a 7 day lifetime.
|
||||||
|
// This will cause Envoy to attempt HTTP/3 to those upstreams, even if the upstreams have not
|
||||||
|
// advertised HTTP/3 support. These entries will be overwritten by alt-svc
|
||||||
|
// response headers or cached values.
|
||||||
|
// As with regular cached entries, if the origin response would result in clearing an existing
|
||||||
|
// alternate protocol cache entry, pre-populated entries will also be cleared.
|
||||||
|
// Adding a cache entry with hostname=foo.com port=123 is the equivalent of getting
|
||||||
|
// response headers
|
||||||
|
// alt-svc: h3=:"123"; ma=86400" in a response to a request to foo.com:123
|
||||||
|
message AlternateProtocolsCacheEntry {
|
||||||
|
// The host name for the alternate protocol entry.
|
||||||
|
string hostname = 1
|
||||||
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
|
||||||
|
|
||||||
|
// The port for the alternate protocol entry.
|
||||||
|
uint32 port = 2 [(validate.rules).uint32 = {lt: 65535 gt: 0}];
|
||||||
|
}
|
||||||
|
|
||||||
// The name of the cache. Multiple named caches allow independent alternate protocols cache
|
// The name of the cache. Multiple named caches allow independent alternate protocols cache
|
||||||
// configurations to operate within a single Envoy process using different configurations. All
|
// configurations to operate within a single Envoy process using different configurations. All
|
||||||
// alternate protocols cache options with the same name *must* be equal in all fields when
|
// alternate protocols cache options with the same name *must* be equal in all fields when
|
||||||
|
|
@ -91,6 +161,16 @@ message AlternateProtocolsCacheOptions {
|
||||||
// it is possible for the maximum entries in the cache to go slightly above the configured
|
// it is possible for the maximum entries in the cache to go slightly above the configured
|
||||||
// value depending on timing. This is similar to how other circuit breakers work.
|
// value depending on timing. This is similar to how other circuit breakers work.
|
||||||
google.protobuf.UInt32Value max_entries = 2 [(validate.rules).uint32 = {gt: 0}];
|
google.protobuf.UInt32Value max_entries = 2 [(validate.rules).uint32 = {gt: 0}];
|
||||||
|
|
||||||
|
// Allows configuring a persistent
|
||||||
|
// :ref:`key value store <envoy_v3_api_msg_config.common.key_value.v3.KeyValueStoreConfig>` to flush
|
||||||
|
// alternate protocols entries to disk.
|
||||||
|
// This function is currently only supported if concurrency is 1
|
||||||
|
// Cached entries will take precedence over pre-populated entries below.
|
||||||
|
TypedExtensionConfig key_value_store_config = 3;
|
||||||
|
|
||||||
|
// Allows pre-populating the cache with entries, as described above.
|
||||||
|
repeated AlternateProtocolsCacheEntry prepopulated_entries = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
// [#next-free-field: 7]
|
// [#next-free-field: 7]
|
||||||
|
|
@ -112,7 +192,7 @@ message HttpProtocolOptions {
|
||||||
// is incremented for each rejected request.
|
// is incremented for each rejected request.
|
||||||
REJECT_REQUEST = 1;
|
REJECT_REQUEST = 1;
|
||||||
|
|
||||||
// Drop the header with name containing underscores. The header is dropped before the filter chain is
|
// Drop the client header with name containing underscores. The header is dropped before the filter chain is
|
||||||
// invoked and as such filters will not see dropped headers. The
|
// invoked and as such filters will not see dropped headers. The
|
||||||
// "httpN.dropped_headers_with_underscores" is incremented for each dropped header.
|
// "httpN.dropped_headers_with_underscores" is incremented for each dropped header.
|
||||||
DROP_HEADER = 2;
|
DROP_HEADER = 2;
|
||||||
|
|
@ -138,10 +218,10 @@ message HttpProtocolOptions {
|
||||||
|
|
||||||
// The maximum duration of a connection. The duration is defined as a period since a connection
|
// The maximum duration of a connection. The duration is defined as a period since a connection
|
||||||
// was established. If not set, there is no max duration. When max_connection_duration is reached
|
// was established. If not set, there is no max duration. When max_connection_duration is reached
|
||||||
// the connection will be closed. Drain sequence will occur prior to closing the connection if
|
// and if there are no active streams, the connection will be closed. If the connection is a
|
||||||
// if's applicable. See :ref:`drain_timeout
|
// downstream connection and there are any active streams, the drain sequence will kick-in,
|
||||||
|
// and the connection will be force-closed after the drain period. See :ref:`drain_timeout
|
||||||
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.drain_timeout>`.
|
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.drain_timeout>`.
|
||||||
// Note: not implemented for upstream connections.
|
|
||||||
google.protobuf.Duration max_connection_duration = 3;
|
google.protobuf.Duration max_connection_duration = 3;
|
||||||
|
|
||||||
// The maximum number of headers. If unconfigured, the default
|
// The maximum number of headers. If unconfigured, the default
|
||||||
|
|
@ -156,6 +236,8 @@ message HttpProtocolOptions {
|
||||||
// Action to take when a client request with a header name containing underscore characters is received.
|
// Action to take when a client request with a header name containing underscore characters is received.
|
||||||
// If this setting is not specified, the value defaults to ALLOW.
|
// If this setting is not specified, the value defaults to ALLOW.
|
||||||
// Note: upstream responses are not affected by this setting.
|
// Note: upstream responses are not affected by this setting.
|
||||||
|
// Note: this only affects client headers. It does not affect headers added
|
||||||
|
// by Envoy filters and does not have any impact if added to cluster config.
|
||||||
HeadersWithUnderscoresAction headers_with_underscores_action = 5;
|
HeadersWithUnderscoresAction headers_with_underscores_action = 5;
|
||||||
|
|
||||||
// Optional maximum requests for both upstream and downstream connections.
|
// Optional maximum requests for both upstream and downstream connections.
|
||||||
|
|
@ -232,7 +314,7 @@ message Http1ProtocolOptions {
|
||||||
// Allows Envoy to process requests/responses with both `Content-Length` and `Transfer-Encoding`
|
// Allows Envoy to process requests/responses with both `Content-Length` and `Transfer-Encoding`
|
||||||
// headers set. By default such messages are rejected, but if option is enabled - Envoy will
|
// headers set. By default such messages are rejected, but if option is enabled - Envoy will
|
||||||
// remove Content-Length header and process message.
|
// remove Content-Length header and process message.
|
||||||
// See `RFC7230, sec. 3.3.3 <https://tools.ietf.org/html/rfc7230#section-3.3.3>` for details.
|
// See `RFC7230, sec. 3.3.3 <https://tools.ietf.org/html/rfc7230#section-3.3.3>`_ for details.
|
||||||
//
|
//
|
||||||
// .. attention::
|
// .. attention::
|
||||||
// Enabling this option might lead to request smuggling vulnerability, especially if traffic
|
// Enabling this option might lead to request smuggling vulnerability, especially if traffic
|
||||||
|
|
@ -270,6 +352,8 @@ message KeepaliveSettings {
|
||||||
// If this is zero, this type of PING will not be sent.
|
// If this is zero, this type of PING will not be sent.
|
||||||
// If an interval ping is outstanding, a second ping will not be sent as the
|
// If an interval ping is outstanding, a second ping will not be sent as the
|
||||||
// interval ping will determine if the connection is dead.
|
// interval ping will determine if the connection is dead.
|
||||||
|
//
|
||||||
|
// The same feature for HTTP/3 is given by inheritance from QUICHE which uses :ref:`connection idle_timeout <envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.idle_timeout>` and the current PTO of the connection to decide whether to probe before sending a new request.
|
||||||
google.protobuf.Duration connection_idle_interval = 4
|
google.protobuf.Duration connection_idle_interval = 4
|
||||||
[(validate.rules).duration = {gte {nanos: 1000000}}];
|
[(validate.rules).duration = {gte {nanos: 1000000}}];
|
||||||
}
|
}
|
||||||
|
|
@ -349,8 +433,6 @@ message Http2ProtocolOptions {
|
||||||
// be written into the socket). Exceeding this limit triggers flood mitigation and connection is
|
// be written into the socket). Exceeding this limit triggers flood mitigation and connection is
|
||||||
// terminated. The ``http2.outbound_flood`` stat tracks the number of terminated connections due
|
// terminated. The ``http2.outbound_flood`` stat tracks the number of terminated connections due
|
||||||
// to flood mitigation. The default limit is 10000.
|
// to flood mitigation. The default limit is 10000.
|
||||||
// NOTE: flood and abuse mitigation for upstream connections is presently enabled by the
|
|
||||||
// `envoy.reloadable_features.upstream_http2_flood_checks` flag.
|
|
||||||
google.protobuf.UInt32Value max_outbound_frames = 7 [(validate.rules).uint32 = {gte: 1}];
|
google.protobuf.UInt32Value max_outbound_frames = 7 [(validate.rules).uint32 = {gte: 1}];
|
||||||
|
|
||||||
// Limit the number of pending outbound downstream frames of types PING, SETTINGS and RST_STREAM,
|
// Limit the number of pending outbound downstream frames of types PING, SETTINGS and RST_STREAM,
|
||||||
|
|
@ -358,8 +440,6 @@ message Http2ProtocolOptions {
|
||||||
// this limit triggers flood mitigation and connection is terminated. The
|
// this limit triggers flood mitigation and connection is terminated. The
|
||||||
// ``http2.outbound_control_flood`` stat tracks the number of terminated connections due to flood
|
// ``http2.outbound_control_flood`` stat tracks the number of terminated connections due to flood
|
||||||
// mitigation. The default limit is 1000.
|
// mitigation. The default limit is 1000.
|
||||||
// NOTE: flood and abuse mitigation for upstream connections is presently enabled by the
|
|
||||||
// `envoy.reloadable_features.upstream_http2_flood_checks` flag.
|
|
||||||
google.protobuf.UInt32Value max_outbound_control_frames = 8 [(validate.rules).uint32 = {gte: 1}];
|
google.protobuf.UInt32Value max_outbound_control_frames = 8 [(validate.rules).uint32 = {gte: 1}];
|
||||||
|
|
||||||
// Limit the number of consecutive inbound frames of types HEADERS, CONTINUATION and DATA with an
|
// Limit the number of consecutive inbound frames of types HEADERS, CONTINUATION and DATA with an
|
||||||
|
|
@ -368,8 +448,6 @@ message Http2ProtocolOptions {
|
||||||
// stat tracks the number of connections terminated due to flood mitigation.
|
// stat tracks the number of connections terminated due to flood mitigation.
|
||||||
// Setting this to 0 will terminate connection upon receiving first frame with an empty payload
|
// Setting this to 0 will terminate connection upon receiving first frame with an empty payload
|
||||||
// and no end stream flag. The default limit is 1.
|
// and no end stream flag. The default limit is 1.
|
||||||
// NOTE: flood and abuse mitigation for upstream connections is presently enabled by the
|
|
||||||
// `envoy.reloadable_features.upstream_http2_flood_checks` flag.
|
|
||||||
google.protobuf.UInt32Value max_consecutive_inbound_frames_with_empty_payload = 9;
|
google.protobuf.UInt32Value max_consecutive_inbound_frames_with_empty_payload = 9;
|
||||||
|
|
||||||
// Limit the number of inbound PRIORITY frames allowed per each opened stream. If the number
|
// Limit the number of inbound PRIORITY frames allowed per each opened stream. If the number
|
||||||
|
|
@ -383,8 +461,6 @@ message Http2ProtocolOptions {
|
||||||
// `opened_streams` is incremented when Envoy send the HEADERS frame for a new stream. The
|
// `opened_streams` is incremented when Envoy send the HEADERS frame for a new stream. The
|
||||||
// ``http2.inbound_priority_frames_flood`` stat tracks
|
// ``http2.inbound_priority_frames_flood`` stat tracks
|
||||||
// the number of connections terminated due to flood mitigation. The default limit is 100.
|
// the number of connections terminated due to flood mitigation. The default limit is 100.
|
||||||
// NOTE: flood and abuse mitigation for upstream connections is presently enabled by the
|
|
||||||
// `envoy.reloadable_features.upstream_http2_flood_checks` flag.
|
|
||||||
google.protobuf.UInt32Value max_inbound_priority_frames_per_stream = 10;
|
google.protobuf.UInt32Value max_inbound_priority_frames_per_stream = 10;
|
||||||
|
|
||||||
// Limit the number of inbound WINDOW_UPDATE frames allowed per DATA frame sent. If the number
|
// Limit the number of inbound WINDOW_UPDATE frames allowed per DATA frame sent. If the number
|
||||||
|
|
@ -401,8 +477,6 @@ message Http2ProtocolOptions {
|
||||||
// flood mitigation. The default max_inbound_window_update_frames_per_data_frame_sent value is 10.
|
// flood mitigation. The default max_inbound_window_update_frames_per_data_frame_sent value is 10.
|
||||||
// Setting this to 1 should be enough to support HTTP/2 implementations with basic flow control,
|
// Setting this to 1 should be enough to support HTTP/2 implementations with basic flow control,
|
||||||
// but more complex implementations that try to estimate available bandwidth require at least 2.
|
// but more complex implementations that try to estimate available bandwidth require at least 2.
|
||||||
// NOTE: flood and abuse mitigation for upstream connections is presently enabled by the
|
|
||||||
// `envoy.reloadable_features.upstream_http2_flood_checks` flag.
|
|
||||||
google.protobuf.UInt32Value max_inbound_window_update_frames_per_data_frame_sent = 11
|
google.protobuf.UInt32Value max_inbound_window_update_frames_per_data_frame_sent = 11
|
||||||
[(validate.rules).uint32 = {gte: 1}];
|
[(validate.rules).uint32 = {gte: 1}];
|
||||||
|
|
||||||
|
|
@ -473,6 +547,7 @@ message GrpcProtocolOptions {
|
||||||
}
|
}
|
||||||
|
|
||||||
// A message which allows using HTTP/3.
|
// A message which allows using HTTP/3.
|
||||||
|
// [#next-free-field: 6]
|
||||||
message Http3ProtocolOptions {
|
message Http3ProtocolOptions {
|
||||||
QuicProtocolOptions quic_protocol_options = 1;
|
QuicProtocolOptions quic_protocol_options = 1;
|
||||||
|
|
||||||
|
|
@ -483,6 +558,14 @@ message Http3ProtocolOptions {
|
||||||
// If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging
|
// If set, this overrides any HCM :ref:`stream_error_on_invalid_http_messaging
|
||||||
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`.
|
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>`.
|
||||||
google.protobuf.BoolValue override_stream_error_on_invalid_http_message = 2;
|
google.protobuf.BoolValue override_stream_error_on_invalid_http_message = 2;
|
||||||
|
|
||||||
|
// Allows proxying Websocket and other upgrades over HTTP/3 CONNECT using
|
||||||
|
// the header mechanisms from the `HTTP/2 extended connect RFC
|
||||||
|
// <https://datatracker.ietf.org/doc/html/rfc8441>`_
|
||||||
|
// and settings `proposed for HTTP/3
|
||||||
|
// <https://datatracker.ietf.org/doc/draft-ietf-httpbis-h3-websockets/>`_
|
||||||
|
// Note that HTTP/3 CONNECT is not yet an RFC.
|
||||||
|
bool allow_extended_connect = 5 [(xds.annotations.v3.field_status).work_in_progress = true];
|
||||||
}
|
}
|
||||||
|
|
||||||
// A message to control transformations to the :scheme header
|
// A message to control transformations to the :scheme header
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import "udpa/annotations/status.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "ProxyProtocolProto";
|
option java_outer_classname = "ProxyProtocolProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Proxy Protocol]
|
// [#protodoc-title: Proxy Protocol]
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "ResolverProto";
|
option java_outer_classname = "ResolverProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Resolver]
|
// [#protodoc-title: Resolver]
|
||||||
|
|
@ -17,9 +18,6 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
|
// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
|
||||||
message DnsResolverOptions {
|
message DnsResolverOptions {
|
||||||
// Use TCP for all DNS queries instead of the default protocol UDP.
|
// Use TCP for all DNS queries instead of the default protocol UDP.
|
||||||
// Setting this value causes failure if the
|
|
||||||
// ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime value is true during
|
|
||||||
// server startup. Apple's API only uses UDP for DNS resolution.
|
|
||||||
bool use_tcp_for_dns_lookups = 1;
|
bool use_tcp_for_dns_lookups = 1;
|
||||||
|
|
||||||
// Do not use the default search domains; only query hostnames as-is or as aliases.
|
// Do not use the default search domains; only query hostnames as-is or as aliases.
|
||||||
|
|
@ -31,9 +29,6 @@ message DnsResolutionConfig {
|
||||||
// A list of dns resolver addresses. If specified, the DNS client library will perform resolution
|
// A list of dns resolver addresses. If specified, the DNS client library will perform resolution
|
||||||
// via the underlying DNS resolvers. Otherwise, the default system resolvers
|
// via the underlying DNS resolvers. Otherwise, the default system resolvers
|
||||||
// (e.g., /etc/resolv.conf) will be used.
|
// (e.g., /etc/resolv.conf) will be used.
|
||||||
// Setting this value causes failure if the
|
|
||||||
// ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime value is true during
|
|
||||||
// server startup. Apple's API only allows overriding DNS resolvers via system settings.
|
|
||||||
repeated Address resolvers = 1 [(validate.rules).repeated = {min_items: 1}];
|
repeated Address resolvers = 1 [(validate.rules).repeated = {min_items: 1}];
|
||||||
|
|
||||||
// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
|
// Configuration of DNS resolver option flags which control the behavior of the DNS resolver.
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "SocketOptionProto";
|
option java_outer_classname = "SocketOptionProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Socket Option ]
|
// [#protodoc-title: Socket Option ]
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "SubstitutionFormatStringProto";
|
option java_outer_classname = "SubstitutionFormatStringProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Substitution format string]
|
// [#protodoc-title: Substitution format string]
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
option java_package = "io.envoyproxy.envoy.config.core.v3";
|
||||||
option java_outer_classname = "UdpSocketConfigProto";
|
option java_outer_classname = "UdpSocketConfigProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: UDP socket config]
|
// [#protodoc-title: UDP socket config]
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
|
option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
|
||||||
option java_outer_classname = "EndpointProto";
|
option java_outer_classname = "EndpointProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Endpoint configuration]
|
// [#protodoc-title: Endpoint configuration]
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ import "envoy/config/core/v3/health_check.proto";
|
||||||
|
|
||||||
import "google/protobuf/wrappers.proto";
|
import "google/protobuf/wrappers.proto";
|
||||||
|
|
||||||
import "udpa/annotations/migrate.proto";
|
|
||||||
import "udpa/annotations/status.proto";
|
import "udpa/annotations/status.proto";
|
||||||
import "udpa/annotations/versioning.proto";
|
import "udpa/annotations/versioning.proto";
|
||||||
import "validate/validate.proto";
|
import "validate/validate.proto";
|
||||||
|
|
@ -17,6 +16,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
|
option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
|
||||||
option java_outer_classname = "EndpointComponentsProto";
|
option java_outer_classname = "EndpointComponentsProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Endpoints]
|
// [#protodoc-title: Endpoints]
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
|
option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
|
||||||
option java_outer_classname = "LoadReportProto";
|
option java_outer_classname = "LoadReportProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Load Report]
|
// [#protodoc-title: Load Report]
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.filter.accesslog.v2";
|
option java_package = "io.envoyproxy.envoy.config.filter.accesslog.v2";
|
||||||
option java_outer_classname = "AccesslogProto";
|
option java_outer_classname = "AccesslogProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/accesslog/v2;accesslogv2";
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.accesslog.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.accesslog.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.filter.fault.v2";
|
option java_package = "io.envoyproxy.envoy.config.filter.fault.v2";
|
||||||
option java_outer_classname = "FaultProto";
|
option java_outer_classname = "FaultProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/fault/v2;faultv2";
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.common.fault.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.common.fault.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.filter.http.fault.v2";
|
option java_package = "io.envoyproxy.envoy.config.filter.http.fault.v2";
|
||||||
option java_outer_classname = "FaultProto";
|
option java_outer_classname = "FaultProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/http/fault/v2;faultv2";
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.http.fault.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.http.fault.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.filter.http.router.v2";
|
option java_package = "io.envoyproxy.envoy.config.filter.http.router.v2";
|
||||||
option java_outer_classname = "RouterProto";
|
option java_outer_classname = "RouterProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/http/router/v2;routerv2";
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.http.router.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.extensions.filters.http.router.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.filter.network.http_connection_manager.v2";
|
option java_package = "io.envoyproxy.envoy.config.filter.network.http_connection_manager.v2";
|
||||||
option java_outer_classname = "HttpConnectionManagerProto";
|
option java_outer_classname = "HttpConnectionManagerProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/filter/network/http_connection_manager/v2;http_connection_managerv2";
|
||||||
option (udpa.annotations.file_migrate).move_to_package =
|
option (udpa.annotations.file_migrate).move_to_package =
|
||||||
"envoy.extensions.filters.network.http_connection_manager.v3";
|
"envoy.extensions.filters.network.http_connection_manager.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import "udpa/annotations/status.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.listener.v2";
|
option java_package = "io.envoyproxy.envoy.config.listener.v2";
|
||||||
option java_outer_classname = "ApiListenerProto";
|
option java_outer_classname = "ApiListenerProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/listener/v2;listenerv2";
|
||||||
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.listener.v3";
|
option (udpa.annotations.file_migrate).move_to_package = "envoy.config.listener.v3";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import "udpa/annotations/versioning.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
||||||
option java_outer_classname = "ApiListenerProto";
|
option java_outer_classname = "ApiListenerProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: API listener]
|
// [#protodoc-title: API listener]
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
||||||
option java_outer_classname = "ListenerProto";
|
option java_outer_classname = "ListenerProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Listener configuration]
|
// [#protodoc-title: Listener configuration]
|
||||||
|
|
@ -35,7 +36,7 @@ message ListenerCollection {
|
||||||
repeated xds.core.v3.CollectionEntry entries = 1;
|
repeated xds.core.v3.CollectionEntry entries = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// [#next-free-field: 30]
|
// [#next-free-field: 32]
|
||||||
message Listener {
|
message Listener {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.Listener";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.Listener";
|
||||||
|
|
||||||
|
|
@ -153,7 +154,6 @@ message Listener {
|
||||||
// UDP Listener filters can be specified when the protocol in the listener socket address in
|
// UDP Listener filters can be specified when the protocol in the listener socket address in
|
||||||
// :ref:`protocol <envoy_v3_api_field_config.core.v3.SocketAddress.protocol>` is :ref:`UDP
|
// :ref:`protocol <envoy_v3_api_field_config.core.v3.SocketAddress.protocol>` is :ref:`UDP
|
||||||
// <envoy_v3_api_enum_value_config.core.v3.SocketAddress.Protocol.UDP>`.
|
// <envoy_v3_api_enum_value_config.core.v3.SocketAddress.Protocol.UDP>`.
|
||||||
// UDP listeners currently support a single filter.
|
|
||||||
repeated ListenerFilter listener_filters = 9;
|
repeated ListenerFilter listener_filters = 9;
|
||||||
|
|
||||||
// The timeout to wait for all listener filters to complete operation. If the timeout is reached,
|
// The timeout to wait for all listener filters to complete operation. If the timeout is reached,
|
||||||
|
|
@ -315,4 +315,12 @@ message Listener {
|
||||||
// [#not-implemented-hide:]
|
// [#not-implemented-hide:]
|
||||||
InternalListenerConfig internal_listener = 27;
|
InternalListenerConfig internal_listener = 27;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enable MPTCP (multi-path TCP) on this listener. Clients will be allowed to establish
|
||||||
|
// MPTCP connections. Non-MPTCP clients will fall back to regular TCP.
|
||||||
|
bool enable_mptcp = 30;
|
||||||
|
|
||||||
|
// Whether the listener should limit connections based upon the value of
|
||||||
|
// :ref:`global_downstream_max_connections <config_overload_manager_limiting_connections>`.
|
||||||
|
bool ignore_global_conn_limit = 31;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ package envoy.config.listener.v3;
|
||||||
|
|
||||||
import "envoy/config/core/v3/address.proto";
|
import "envoy/config/core/v3/address.proto";
|
||||||
import "envoy/config/core/v3/base.proto";
|
import "envoy/config/core/v3/base.proto";
|
||||||
import "envoy/config/core/v3/extension.proto";
|
import "envoy/config/core/v3/config_source.proto";
|
||||||
import "envoy/type/v3/range.proto";
|
import "envoy/type/v3/range.proto";
|
||||||
|
|
||||||
import "google/protobuf/any.proto";
|
import "google/protobuf/any.proto";
|
||||||
|
|
@ -19,6 +19,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
||||||
option java_outer_classname = "ListenerComponentsProto";
|
option java_outer_classname = "ListenerComponentsProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Listener components]
|
// [#protodoc-title: Listener components]
|
||||||
|
|
@ -32,8 +33,7 @@ message Filter {
|
||||||
|
|
||||||
reserved "config";
|
reserved "config";
|
||||||
|
|
||||||
// The name of the filter to instantiate. The name must match a
|
// The name of the filter configuration.
|
||||||
// :ref:`supported filter <config_network_filters>`.
|
|
||||||
string name = 1 [(validate.rules).string = {min_len: 1}];
|
string name = 1 [(validate.rules).string = {min_len: 1}];
|
||||||
|
|
||||||
oneof config_type {
|
oneof config_type {
|
||||||
|
|
@ -333,6 +333,7 @@ message ListenerFilterChainMatchPredicate {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [#next-free-field: 6]
|
||||||
message ListenerFilter {
|
message ListenerFilter {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.api.v2.listener.ListenerFilter";
|
"envoy.api.v2.listener.ListenerFilter";
|
||||||
|
|
@ -341,8 +342,7 @@ message ListenerFilter {
|
||||||
|
|
||||||
reserved "config";
|
reserved "config";
|
||||||
|
|
||||||
// The name of the filter to instantiate. The name must match a
|
// The name of the filter configuration.
|
||||||
// :ref:`supported filter <config_listener_filters>`.
|
|
||||||
string name = 1 [(validate.rules).string = {min_len: 1}];
|
string name = 1 [(validate.rules).string = {min_len: 1}];
|
||||||
|
|
||||||
oneof config_type {
|
oneof config_type {
|
||||||
|
|
@ -350,6 +350,12 @@ message ListenerFilter {
|
||||||
// instantiated. See the supported filters for further documentation.
|
// instantiated. See the supported filters for further documentation.
|
||||||
// [#extension-category: envoy.filters.listener,envoy.filters.udp_listener]
|
// [#extension-category: envoy.filters.listener,envoy.filters.udp_listener]
|
||||||
google.protobuf.Any typed_config = 3;
|
google.protobuf.Any typed_config = 3;
|
||||||
|
|
||||||
|
// Configuration source specifier for an extension configuration discovery
|
||||||
|
// service. In case of a failure and without the default configuration, the
|
||||||
|
// listener closes the connections.
|
||||||
|
// [#not-implemented-hide:]
|
||||||
|
core.v3.ExtensionConfigSource config_discovery = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Optional match predicate used to disable the filter. The filter is enabled when this field is empty.
|
// Optional match predicate used to disable the filter. The filter is enabled when this field is empty.
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
||||||
option java_outer_classname = "QuicConfigProto";
|
option java_outer_classname = "QuicConfigProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: QUIC listener config]
|
// [#protodoc-title: QUIC listener config]
|
||||||
|
|
@ -29,11 +30,14 @@ message QuicProtocolOptions {
|
||||||
core.v3.QuicProtocolOptions quic_protocol_options = 1;
|
core.v3.QuicProtocolOptions quic_protocol_options = 1;
|
||||||
|
|
||||||
// Maximum number of milliseconds that connection will be alive when there is
|
// Maximum number of milliseconds that connection will be alive when there is
|
||||||
// no network activity. 300000ms if not specified.
|
// no network activity.
|
||||||
|
//
|
||||||
|
// If it is less than 1ms, Envoy will use 1ms. 300000ms if not specified.
|
||||||
google.protobuf.Duration idle_timeout = 2;
|
google.protobuf.Duration idle_timeout = 2;
|
||||||
|
|
||||||
// Connection timeout in milliseconds before the crypto handshake is finished.
|
// Connection timeout in milliseconds before the crypto handshake is finished.
|
||||||
// 20000ms if not specified.
|
//
|
||||||
|
// If it is less than 5000ms, Envoy will use 5000ms. 20000ms if not specified.
|
||||||
google.protobuf.Duration crypto_handshake_timeout = 3;
|
google.protobuf.Duration crypto_handshake_timeout = 3;
|
||||||
|
|
||||||
// Runtime flag that controls whether the listener is enabled or not. If not specified, defaults
|
// Runtime flag that controls whether the listener is enabled or not. If not specified, defaults
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "udpa/annotations/versioning.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
option java_package = "io.envoyproxy.envoy.config.listener.v3";
|
||||||
option java_outer_classname = "UdpListenerConfigProto";
|
option java_outer_classname = "UdpListenerConfigProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: UDP listener config]
|
// [#protodoc-title: UDP listener config]
|
||||||
|
|
@ -33,10 +34,6 @@ message UdpListenerConfig {
|
||||||
|
|
||||||
// Configuration for QUIC protocol. If empty, QUIC will not be enabled on this listener. Set
|
// Configuration for QUIC protocol. If empty, QUIC will not be enabled on this listener. Set
|
||||||
// to the default object to enable QUIC without modifying any additional options.
|
// to the default object to enable QUIC without modifying any additional options.
|
||||||
//
|
|
||||||
// .. warning::
|
|
||||||
// QUIC support is currently alpha and should be used with caution. Please
|
|
||||||
// see :ref:`here <arch_overview_http3>` for details.
|
|
||||||
QuicProtocolOptions quic_options = 7;
|
QuicProtocolOptions quic_options = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.metrics.v3";
|
option java_package = "io.envoyproxy.envoy.config.metrics.v3";
|
||||||
option java_outer_classname = "StatsProto";
|
option java_outer_classname = "StatsProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/metrics/v3;metricsv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Stats]
|
// [#protodoc-title: Stats]
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.overload.v3";
|
option java_package = "io.envoyproxy.envoy.config.overload.v3";
|
||||||
option java_outer_classname = "OverloadProto";
|
option java_outer_classname = "OverloadProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/overload/v3;overloadv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Overload Manager]
|
// [#protodoc-title: Overload Manager]
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.rbac.v2";
|
option java_package = "io.envoyproxy.envoy.config.rbac.v2";
|
||||||
option java_outer_classname = "RbacProto";
|
option java_outer_classname = "RbacProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/rbac/v2;rbacv2";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
// [#protodoc-title: Role Based Access Control (RBAC)]
|
// [#protodoc-title: Role Based Access Control (RBAC)]
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ syntax = "proto3";
|
||||||
package envoy.config.rbac.v3;
|
package envoy.config.rbac.v3;
|
||||||
|
|
||||||
import "envoy/config/core/v3/address.proto";
|
import "envoy/config/core/v3/address.proto";
|
||||||
|
import "envoy/config/core/v3/extension.proto";
|
||||||
import "envoy/config/route/v3/route_components.proto";
|
import "envoy/config/route/v3/route_components.proto";
|
||||||
import "envoy/type/matcher/v3/metadata.proto";
|
import "envoy/type/matcher/v3/metadata.proto";
|
||||||
import "envoy/type/matcher/v3/path.proto";
|
import "envoy/type/matcher/v3/path.proto";
|
||||||
|
|
@ -21,6 +22,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.rbac.v3";
|
option java_package = "io.envoyproxy.envoy.config.rbac.v3";
|
||||||
option java_outer_classname = "RbacProto";
|
option java_outer_classname = "RbacProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/rbac/v3;rbacv3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: Role Based Access Control (RBAC)]
|
// [#protodoc-title: Role Based Access Control (RBAC)]
|
||||||
|
|
@ -146,7 +148,7 @@ message Policy {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Permission defines an action (or actions) that a principal can take.
|
// Permission defines an action (or actions) that a principal can take.
|
||||||
// [#next-free-field: 12]
|
// [#next-free-field: 13]
|
||||||
message Permission {
|
message Permission {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.config.rbac.v2.Permission";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.config.rbac.v2.Permission";
|
||||||
|
|
||||||
|
|
@ -218,6 +220,10 @@ message Permission {
|
||||||
// Please refer to :ref:`this FAQ entry <faq_how_to_setup_sni>` to learn to
|
// Please refer to :ref:`this FAQ entry <faq_how_to_setup_sni>` to learn to
|
||||||
// setup SNI.
|
// setup SNI.
|
||||||
type.matcher.v3.StringMatcher requested_server_name = 9;
|
type.matcher.v3.StringMatcher requested_server_name = 9;
|
||||||
|
|
||||||
|
// Extension for configuring custom matchers for RBAC.
|
||||||
|
// [#extension-category: envoy.rbac.matchers]
|
||||||
|
core.v3.TypedExtensionConfig matcher = 12;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,14 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.route.v3";
|
option java_package = "io.envoyproxy.envoy.config.route.v3";
|
||||||
option java_outer_classname = "RouteProto";
|
option java_outer_classname = "RouteProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: HTTP route configuration]
|
// [#protodoc-title: HTTP route configuration]
|
||||||
// * Routing :ref:`architecture overview <arch_overview_http_routing>`
|
// * Routing :ref:`architecture overview <arch_overview_http_routing>`
|
||||||
// * HTTP :ref:`router filter <config_http_filters_router>`
|
// * HTTP :ref:`router filter <config_http_filters_router>`
|
||||||
|
|
||||||
// [#next-free-field: 13]
|
// [#next-free-field: 14]
|
||||||
message RouteConfiguration {
|
message RouteConfiguration {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.RouteConfiguration";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.RouteConfiguration";
|
||||||
|
|
||||||
|
|
@ -126,12 +127,23 @@ message RouteConfiguration {
|
||||||
// :ref:`envoy_v3_api_field_config.route.v3.RouteAction.cluster_specifier_plugin`
|
// :ref:`envoy_v3_api_field_config.route.v3.RouteAction.cluster_specifier_plugin`
|
||||||
// within the route. All *extension.name* fields in this list must be unique.
|
// within the route. All *extension.name* fields in this list must be unique.
|
||||||
repeated ClusterSpecifierPlugin cluster_specifier_plugins = 12;
|
repeated ClusterSpecifierPlugin cluster_specifier_plugins = 12;
|
||||||
|
|
||||||
|
// Specify a set of default request mirroring policies which apply to all routes under its virtual hosts.
|
||||||
|
// Note that policies are not merged, the most specific non-empty one becomes the mirror policies.
|
||||||
|
repeated RouteAction.RequestMirrorPolicy request_mirror_policies = 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configuration for a cluster specifier plugin.
|
// Configuration for a cluster specifier plugin.
|
||||||
message ClusterSpecifierPlugin {
|
message ClusterSpecifierPlugin {
|
||||||
// The name of the plugin and its opaque configuration.
|
// The name of the plugin and its opaque configuration.
|
||||||
core.v3.TypedExtensionConfig extension = 1;
|
core.v3.TypedExtensionConfig extension = 1;
|
||||||
|
|
||||||
|
// If is_optional is not set and the plugin defined by this message is not
|
||||||
|
// a supported type, the containing resource is NACKed. If is_optional is
|
||||||
|
// set, the resource would not be NACKed for this reason. In this case,
|
||||||
|
// routes referencing this plugin's name would not be treated as an illegal
|
||||||
|
// configuration, but would result in a failure if the route is selected.
|
||||||
|
bool is_optional = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Vhds {
|
message Vhds {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ package envoy.config.route.v3;
|
||||||
import "envoy/config/core/v3/base.proto";
|
import "envoy/config/core/v3/base.proto";
|
||||||
import "envoy/config/core/v3/extension.proto";
|
import "envoy/config/core/v3/extension.proto";
|
||||||
import "envoy/config/core/v3/proxy_protocol.proto";
|
import "envoy/config/core/v3/proxy_protocol.proto";
|
||||||
|
import "envoy/type/matcher/v3/metadata.proto";
|
||||||
import "envoy/type/matcher/v3/regex.proto";
|
import "envoy/type/matcher/v3/regex.proto";
|
||||||
import "envoy/type/matcher/v3/string.proto";
|
import "envoy/type/matcher/v3/string.proto";
|
||||||
import "envoy/type/metadata/v3/metadata.proto";
|
import "envoy/type/metadata/v3/metadata.proto";
|
||||||
|
|
@ -16,6 +17,9 @@ import "google/protobuf/any.proto";
|
||||||
import "google/protobuf/duration.proto";
|
import "google/protobuf/duration.proto";
|
||||||
import "google/protobuf/wrappers.proto";
|
import "google/protobuf/wrappers.proto";
|
||||||
|
|
||||||
|
import "xds/annotations/v3/status.proto";
|
||||||
|
import "xds/type/matcher/v3/matcher.proto";
|
||||||
|
|
||||||
import "envoy/annotations/deprecation.proto";
|
import "envoy/annotations/deprecation.proto";
|
||||||
import "udpa/annotations/migrate.proto";
|
import "udpa/annotations/migrate.proto";
|
||||||
import "udpa/annotations/status.proto";
|
import "udpa/annotations/status.proto";
|
||||||
|
|
@ -25,6 +29,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.route.v3";
|
option java_package = "io.envoyproxy.envoy.config.route.v3";
|
||||||
option java_outer_classname = "RouteComponentsProto";
|
option java_outer_classname = "RouteComponentsProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: HTTP route components]
|
// [#protodoc-title: HTTP route components]
|
||||||
|
|
@ -36,7 +41,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
// host header. This allows a single listener to service multiple top level domain path trees. Once
|
// host header. This allows a single listener to service multiple top level domain path trees. Once
|
||||||
// a virtual host is selected based on the domain, the routes are processed in order to see which
|
// a virtual host is selected based on the domain, the routes are processed in order to see which
|
||||||
// upstream cluster to route to or whether to perform a redirect.
|
// upstream cluster to route to or whether to perform a redirect.
|
||||||
// [#next-free-field: 21]
|
// [#next-free-field: 23]
|
||||||
message VirtualHost {
|
message VirtualHost {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.VirtualHost";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.VirtualHost";
|
||||||
|
|
||||||
|
|
@ -86,8 +91,15 @@ message VirtualHost {
|
||||||
|
|
||||||
// The list of routes that will be matched, in order, for incoming requests.
|
// The list of routes that will be matched, in order, for incoming requests.
|
||||||
// The first route that matches will be used.
|
// The first route that matches will be used.
|
||||||
|
// Only one of this and `matcher` can be specified.
|
||||||
repeated Route routes = 3;
|
repeated Route routes = 3;
|
||||||
|
|
||||||
|
// [#next-major-version: This should be included in a oneof with routes wrapped in a message.]
|
||||||
|
// The match tree to use when resolving route actions for incoming requests. Only one of this and `routes`
|
||||||
|
// can be specified.
|
||||||
|
xds.type.matcher.v3.Matcher matcher = 21
|
||||||
|
[(xds.annotations.v3.field_status).work_in_progress = true];
|
||||||
|
|
||||||
// Specifies the type of TLS enforcement the virtual host expects. If this option is not
|
// Specifies the type of TLS enforcement the virtual host expects. If this option is not
|
||||||
// specified, there is no TLS requirement for the virtual host.
|
// specified, there is no TLS requirement for the virtual host.
|
||||||
TlsRequirementType require_tls = 4 [(validate.rules).enum = {defined_only: true}];
|
TlsRequirementType require_tls = 4 [(validate.rules).enum = {defined_only: true}];
|
||||||
|
|
@ -186,6 +198,11 @@ message VirtualHost {
|
||||||
// If set and a route-specific limit is not set, the bytes actually buffered will be the minimum
|
// If set and a route-specific limit is not set, the bytes actually buffered will be the minimum
|
||||||
// value of this and the listener per_connection_buffer_limit_bytes.
|
// value of this and the listener per_connection_buffer_limit_bytes.
|
||||||
google.protobuf.UInt32Value per_request_buffer_limit_bytes = 18;
|
google.protobuf.UInt32Value per_request_buffer_limit_bytes = 18;
|
||||||
|
|
||||||
|
// Specify a set of default request mirroring policies for every route under this virtual host.
|
||||||
|
// It takes precedence over the route config mirror policy entirely.
|
||||||
|
// That is, policies are not merged, the most specific non-empty one becomes the mirror policies.
|
||||||
|
repeated RouteAction.RequestMirrorPolicy request_mirror_policies = 22;
|
||||||
}
|
}
|
||||||
|
|
||||||
// A filter-defined action type.
|
// A filter-defined action type.
|
||||||
|
|
@ -311,7 +328,7 @@ message Route {
|
||||||
message WeightedCluster {
|
message WeightedCluster {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.WeightedCluster";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.WeightedCluster";
|
||||||
|
|
||||||
// [#next-free-field: 12]
|
// [#next-free-field: 13]
|
||||||
message ClusterWeight {
|
message ClusterWeight {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.api.v2.route.WeightedCluster.ClusterWeight";
|
"envoy.api.v2.route.WeightedCluster.ClusterWeight";
|
||||||
|
|
@ -320,9 +337,31 @@ message WeightedCluster {
|
||||||
|
|
||||||
reserved "per_filter_config";
|
reserved "per_filter_config";
|
||||||
|
|
||||||
|
// Only one of *name* and *cluster_header* may be specified.
|
||||||
|
// [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1}]
|
||||||
// Name of the upstream cluster. The cluster must exist in the
|
// Name of the upstream cluster. The cluster must exist in the
|
||||||
// :ref:`cluster manager configuration <config_cluster_manager>`.
|
// :ref:`cluster manager configuration <config_cluster_manager>`.
|
||||||
string name = 1 [(validate.rules).string = {min_len: 1}];
|
string name = 1 [(udpa.annotations.field_migrate).oneof_promotion = "cluster_specifier"];
|
||||||
|
|
||||||
|
// Only one of *name* and *cluster_header* may be specified.
|
||||||
|
// [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1 }]
|
||||||
|
// Envoy will determine the cluster to route to by reading the value of the
|
||||||
|
// HTTP header named by cluster_header from the request headers. If the
|
||||||
|
// header is not found or the referenced cluster does not exist, Envoy will
|
||||||
|
// return a 404 response.
|
||||||
|
//
|
||||||
|
// .. attention::
|
||||||
|
//
|
||||||
|
// Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1
|
||||||
|
// *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead.
|
||||||
|
//
|
||||||
|
// .. note::
|
||||||
|
//
|
||||||
|
// If the header appears multiple times only the first value is used.
|
||||||
|
string cluster_header = 12 [
|
||||||
|
(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME strict: false},
|
||||||
|
(udpa.annotations.field_migrate).oneof_promotion = "cluster_specifier"
|
||||||
|
];
|
||||||
|
|
||||||
// An integer between 0 and :ref:`total_weight
|
// An integer between 0 and :ref:`total_weight
|
||||||
// <envoy_v3_api_field_config.route.v3.WeightedCluster.total_weight>`. When a request matches the route,
|
// <envoy_v3_api_field_config.route.v3.WeightedCluster.total_weight>`. When a request matches the route,
|
||||||
|
|
@ -403,9 +442,18 @@ message WeightedCluster {
|
||||||
// configuration file will be used as the default weight. See the :ref:`runtime documentation
|
// configuration file will be used as the default weight. See the :ref:`runtime documentation
|
||||||
// <operations_runtime>` for how key names map to the underlying implementation.
|
// <operations_runtime>` for how key names map to the underlying implementation.
|
||||||
string runtime_key_prefix = 2;
|
string runtime_key_prefix = 2;
|
||||||
|
|
||||||
|
oneof random_value_specifier {
|
||||||
|
// Specifies the header name that is used to look up the random value passed in the request header.
|
||||||
|
// This is used to ensure consistent cluster picking across multiple proxy levels for weighted traffic.
|
||||||
|
// If header is not present or invalid, Envoy will fall back to use the internally generated random value.
|
||||||
|
// This header is expected to be single-valued header as we only want to have one selected value throughout
|
||||||
|
// the process for the consistency. And the value is a unsigned number between 0 and UINT64_MAX.
|
||||||
|
string header_name = 4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// [#next-free-field: 13]
|
// [#next-free-field: 15]
|
||||||
message RouteMatch {
|
message RouteMatch {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RouteMatch";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RouteMatch";
|
||||||
|
|
||||||
|
|
@ -470,6 +518,17 @@ message RouteMatch {
|
||||||
// Note that CONNECT support is currently considered alpha in Envoy.
|
// Note that CONNECT support is currently considered alpha in Envoy.
|
||||||
// [#comment: TODO(htuch): Replace the above comment with an alpha tag.]
|
// [#comment: TODO(htuch): Replace the above comment with an alpha tag.]
|
||||||
ConnectMatcher connect_matcher = 12;
|
ConnectMatcher connect_matcher = 12;
|
||||||
|
|
||||||
|
// If specified, the route is a path-separated prefix rule meaning that the
|
||||||
|
// ``:path`` header (without the query string) must either exactly match the
|
||||||
|
// ``path_separated_prefix`` or have it as a prefix, followed by ``/``
|
||||||
|
//
|
||||||
|
// For example, ``/api/dev`` would match
|
||||||
|
// ``/api/dev``, ``/api/dev/``, ``/api/dev/v1``, and ``/api/dev?param=true``
|
||||||
|
// but would not match ``/api/developer``
|
||||||
|
//
|
||||||
|
// Expect the value to not contain ``?`` or ``#`` and not to end in ``/``
|
||||||
|
string path_separated_prefix = 14 [(validate.rules).string = {pattern: "^[^?#]+[^?#/]$"}];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Indicates that prefix/path matching should be case sensitive. The default
|
// Indicates that prefix/path matching should be case sensitive. The default
|
||||||
|
|
@ -506,6 +565,14 @@ message RouteMatch {
|
||||||
// against all the specified query parameters. If the number of specified
|
// against all the specified query parameters. If the number of specified
|
||||||
// query parameters is nonzero, they all must match the *path* header's
|
// query parameters is nonzero, they all must match the *path* header's
|
||||||
// query string for a match to occur.
|
// query string for a match to occur.
|
||||||
|
//
|
||||||
|
// .. note::
|
||||||
|
//
|
||||||
|
// If query parameters are used to pass request message fields when
|
||||||
|
// `grpc_json_transcoder <https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter>`_
|
||||||
|
// is used, the transcoded message fields maybe different. The query parameters are
|
||||||
|
// url encoded, but the message fields are not. For example, if a query
|
||||||
|
// parameter is "foo%20bar", the message field will be "foo bar".
|
||||||
repeated QueryParameterMatcher query_parameters = 7;
|
repeated QueryParameterMatcher query_parameters = 7;
|
||||||
|
|
||||||
// If specified, only gRPC requests will be matched. The router will check
|
// If specified, only gRPC requests will be matched. The router will check
|
||||||
|
|
@ -518,6 +585,12 @@ message RouteMatch {
|
||||||
//
|
//
|
||||||
// [#next-major-version: unify with RBAC]
|
// [#next-major-version: unify with RBAC]
|
||||||
TlsContextMatchOptions tls_context = 11;
|
TlsContextMatchOptions tls_context = 11;
|
||||||
|
|
||||||
|
// Specifies a set of dynamic metadata matchers on which the route should match.
|
||||||
|
// The router will check the dynamic metadata against all the specified dynamic metadata matchers.
|
||||||
|
// If the number of specified dynamic metadata matchers is nonzero, they all must match the
|
||||||
|
// dynamic metadata for a match to occur.
|
||||||
|
repeated type.matcher.v3.MetadataMatcher dynamic_metadata = 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
// [#next-free-field: 12]
|
// [#next-free-field: 12]
|
||||||
|
|
@ -570,7 +643,7 @@ message CorsPolicy {
|
||||||
core.v3.RuntimeFractionalPercent shadow_enabled = 10;
|
core.v3.RuntimeFractionalPercent shadow_enabled = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
// [#next-free-field: 38]
|
// [#next-free-field: 39]
|
||||||
message RouteAction {
|
message RouteAction {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RouteAction";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RouteAction";
|
||||||
|
|
||||||
|
|
@ -705,8 +778,8 @@ message RouteAction {
|
||||||
"envoy.api.v2.route.RouteAction.HashPolicy.FilterState";
|
"envoy.api.v2.route.RouteAction.HashPolicy.FilterState";
|
||||||
|
|
||||||
// The name of the Object in the per-request filterState, which is an
|
// 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,
|
// Envoy::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.
|
// or the stored object is not Envoy::Hashable, no hash will be produced.
|
||||||
string key = 1 [(validate.rules).string = {min_len: 1}];
|
string key = 1 [(validate.rules).string = {min_len: 1}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -934,20 +1007,29 @@ message RouteAction {
|
||||||
|
|
||||||
oneof host_rewrite_specifier {
|
oneof host_rewrite_specifier {
|
||||||
// Indicates that during forwarding, the host header will be swapped with
|
// Indicates that during forwarding, the host header will be swapped with
|
||||||
// this value.
|
// this value. Using this option will append the
|
||||||
|
// :ref:`config_http_conn_man_headers_x-forwarded-host` header if
|
||||||
|
// :ref:`append_x_forwarded_host <envoy_v3_api_field_config.route.v3.RouteAction.append_x_forwarded_host>`
|
||||||
|
// is set.
|
||||||
string host_rewrite_literal = 6
|
string host_rewrite_literal = 6
|
||||||
[(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
|
[(validate.rules).string = {well_known_regex: HTTP_HEADER_VALUE strict: false}];
|
||||||
|
|
||||||
// Indicates that during forwarding, the host header will be swapped with
|
// Indicates that during forwarding, the host header will be swapped with
|
||||||
// the hostname of the upstream host chosen by the cluster manager. This
|
// the hostname of the upstream host chosen by the cluster manager. This
|
||||||
// option is applicable only when the destination cluster for a route is of
|
// option is applicable only when the destination cluster for a route is of
|
||||||
// type *strict_dns* or *logical_dns*. Setting this to true with other cluster
|
// type *strict_dns* or *logical_dns*. Setting this to true with other cluster types
|
||||||
// types has no effect.
|
// has no effect. Using this option will append the
|
||||||
|
// :ref:`config_http_conn_man_headers_x-forwarded-host` header if
|
||||||
|
// :ref:`append_x_forwarded_host <envoy_v3_api_field_config.route.v3.RouteAction.append_x_forwarded_host>`
|
||||||
|
// is set.
|
||||||
google.protobuf.BoolValue auto_host_rewrite = 7;
|
google.protobuf.BoolValue auto_host_rewrite = 7;
|
||||||
|
|
||||||
// Indicates that during forwarding, the host header will be swapped with the content of given
|
// Indicates that during forwarding, the host header will be swapped with the content of given
|
||||||
// downstream or :ref:`custom <config_http_conn_man_headers_custom_request_headers>` header.
|
// downstream or :ref:`custom <config_http_conn_man_headers_custom_request_headers>` header.
|
||||||
// If header value is empty, host header is left intact.
|
// If header value is empty, host header is left intact. Using this option will append the
|
||||||
|
// :ref:`config_http_conn_man_headers_x-forwarded-host` header if
|
||||||
|
// :ref:`append_x_forwarded_host <envoy_v3_api_field_config.route.v3.RouteAction.append_x_forwarded_host>`
|
||||||
|
// is set.
|
||||||
//
|
//
|
||||||
// .. attention::
|
// .. attention::
|
||||||
//
|
//
|
||||||
|
|
@ -963,6 +1045,10 @@ message RouteAction {
|
||||||
// Indicates that during forwarding, the host header will be swapped with
|
// Indicates that during forwarding, the host header will be swapped with
|
||||||
// the result of the regex substitution executed on path value with query and fragment removed.
|
// the result of the regex substitution executed on path value with query and fragment removed.
|
||||||
// This is useful for transitioning variable content between path segment and subdomain.
|
// This is useful for transitioning variable content between path segment and subdomain.
|
||||||
|
// Using this option will append the
|
||||||
|
// :ref:`config_http_conn_man_headers_x-forwarded-host` header if
|
||||||
|
// :ref:`append_x_forwarded_host <envoy_v3_api_field_config.route.v3.RouteAction.append_x_forwarded_host>`
|
||||||
|
// is set.
|
||||||
//
|
//
|
||||||
// For example with the following config:
|
// For example with the following config:
|
||||||
//
|
//
|
||||||
|
|
@ -978,6 +1064,15 @@ message RouteAction {
|
||||||
type.matcher.v3.RegexMatchAndSubstitute host_rewrite_path_regex = 35;
|
type.matcher.v3.RegexMatchAndSubstitute host_rewrite_path_regex = 35;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If set, then a host rewrite action (one of
|
||||||
|
// :ref:`host_rewrite_literal <envoy_v3_api_field_config.route.v3.RouteAction.host_rewrite_literal>`,
|
||||||
|
// :ref:`auto_host_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.auto_host_rewrite>`,
|
||||||
|
// :ref:`host_rewrite_header <envoy_v3_api_field_config.route.v3.RouteAction.host_rewrite_header>`, or
|
||||||
|
// :ref:`host_rewrite_path_regex <envoy_v3_api_field_config.route.v3.RouteAction.host_rewrite_path_regex>`)
|
||||||
|
// causes the original value of the host header, if any, to be appended to the
|
||||||
|
// :ref:`config_http_conn_man_headers_x-forwarded-host` HTTP header.
|
||||||
|
bool append_x_forwarded_host = 38;
|
||||||
|
|
||||||
// Specifies the upstream timeout for the route. If not specified, the default is 15s. This
|
// Specifies the upstream timeout for the route. If not specified, the default is 15s. This
|
||||||
// spans between the point at which the entire downstream request (i.e. end-of-stream) has been
|
// spans between the point at which the entire downstream request (i.e. end-of-stream) has been
|
||||||
// processed and when the upstream response has been completely processed. A value of 0 will
|
// processed and when the upstream response has been completely processed. A value of 0 will
|
||||||
|
|
@ -1027,7 +1122,9 @@ message RouteAction {
|
||||||
// should not be set if this field is used.
|
// should not be set if this field is used.
|
||||||
google.protobuf.Any retry_policy_typed_config = 33;
|
google.protobuf.Any retry_policy_typed_config = 33;
|
||||||
|
|
||||||
// Indicates that the route has request mirroring policies.
|
// Specify a set of route request mirroring policies.
|
||||||
|
// It takes precedence over the virtual host and route config mirror policy entirely.
|
||||||
|
// That is, policies are not merged, the most specific non-empty one becomes the mirror policies.
|
||||||
repeated RequestMirrorPolicy request_mirror_policies = 30;
|
repeated RequestMirrorPolicy request_mirror_policies = 30;
|
||||||
|
|
||||||
// Optionally specifies the :ref:`routing priority <arch_overview_http_routing_priority>`.
|
// Optionally specifies the :ref:`routing priority <arch_overview_http_routing_priority>`.
|
||||||
|
|
@ -1135,7 +1232,7 @@ message RouteAction {
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTP retry :ref:`architecture overview <arch_overview_http_routing_retry>`.
|
// HTTP retry :ref:`architecture overview <arch_overview_http_routing_retry>`.
|
||||||
// [#next-free-field: 12]
|
// [#next-free-field: 14]
|
||||||
message RetryPolicy {
|
message RetryPolicy {
|
||||||
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RetryPolicy";
|
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.RetryPolicy";
|
||||||
|
|
||||||
|
|
@ -1276,8 +1373,8 @@ message RetryPolicy {
|
||||||
google.protobuf.UInt32Value num_retries = 2
|
google.protobuf.UInt32Value num_retries = 2
|
||||||
[(udpa.annotations.field_migrate).rename = "max_retries"];
|
[(udpa.annotations.field_migrate).rename = "max_retries"];
|
||||||
|
|
||||||
// Specifies a non-zero upstream timeout per retry attempt. This parameter is optional. The
|
// Specifies a non-zero upstream timeout per retry attempt (including the initial attempt). This
|
||||||
// same conditions documented for
|
// parameter is optional. The same conditions documented for
|
||||||
// :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply.
|
// :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply.
|
||||||
//
|
//
|
||||||
// .. note::
|
// .. note::
|
||||||
|
|
@ -1289,6 +1386,27 @@ message RetryPolicy {
|
||||||
// would have been exhausted.
|
// would have been exhausted.
|
||||||
google.protobuf.Duration per_try_timeout = 3;
|
google.protobuf.Duration per_try_timeout = 3;
|
||||||
|
|
||||||
|
// Specifies an upstream idle timeout per retry attempt (including the initial attempt). This
|
||||||
|
// parameter is optional and if absent there is no per try idle timeout. The semantics of the per
|
||||||
|
// try idle timeout are similar to the
|
||||||
|
// :ref:`route idle timeout <envoy_v3_api_field_config.route.v3.RouteAction.timeout>` and
|
||||||
|
// :ref:`stream idle timeout
|
||||||
|
// <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_idle_timeout>`
|
||||||
|
// both enforced by the HTTP connection manager. The difference is that this idle timeout
|
||||||
|
// is enforced by the router for each individual attempt and thus after all previous filters have
|
||||||
|
// run, as opposed to *before* all previous filters run for the other idle timeouts. This timeout
|
||||||
|
// is useful in cases in which total request timeout is bounded by a number of retries and a
|
||||||
|
// :ref:`per_try_timeout <envoy_v3_api_field_config.route.v3.RetryPolicy.per_try_timeout>`, but
|
||||||
|
// there is a desire to ensure each try is making incremental progress. Note also that similar
|
||||||
|
// to :ref:`per_try_timeout <envoy_v3_api_field_config.route.v3.RetryPolicy.per_try_timeout>`,
|
||||||
|
// this idle timeout does not start until after both the entire request has been received by the
|
||||||
|
// router *and* a connection pool connection has been obtained. Unlike
|
||||||
|
// :ref:`per_try_timeout <envoy_v3_api_field_config.route.v3.RetryPolicy.per_try_timeout>`,
|
||||||
|
// the idle timer continues once the response starts streaming back to the downstream client.
|
||||||
|
// This ensures that response data continues to make progress without using one of the HTTP
|
||||||
|
// connection manager idle timeouts.
|
||||||
|
google.protobuf.Duration per_try_idle_timeout = 13;
|
||||||
|
|
||||||
// Specifies an implementation of a RetryPriority which is used to determine the
|
// Specifies an implementation of a RetryPriority which is used to determine the
|
||||||
// distribution of load across priorities used for retries. Refer to
|
// distribution of load across priorities used for retries. Refer to
|
||||||
// :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more details.
|
// :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more details.
|
||||||
|
|
@ -1300,6 +1418,11 @@ message RetryPolicy {
|
||||||
// details.
|
// details.
|
||||||
repeated RetryHostPredicate retry_host_predicate = 5;
|
repeated RetryHostPredicate retry_host_predicate = 5;
|
||||||
|
|
||||||
|
// Retry options predicates that will be applied prior to retrying a request. These predicates
|
||||||
|
// allow customizing request behavior between retries.
|
||||||
|
// [#comment: add [#extension-category: envoy.retry_options_predicates] when there are built-in extensions]
|
||||||
|
repeated core.v3.TypedExtensionConfig retry_options_predicates = 12;
|
||||||
|
|
||||||
// The maximum number of times host selection will be reattempted before giving up, at which
|
// The maximum number of times host selection will be reattempted before giving up, at which
|
||||||
// point the host that was last selected will be routed to. If unspecified, this will default to
|
// point the host that was last selected will be routed to. If unspecified, this will default to
|
||||||
// retrying once.
|
// retrying once.
|
||||||
|
|
@ -1477,7 +1600,7 @@ message DirectResponseAction {
|
||||||
"envoy.api.v2.route.DirectResponseAction";
|
"envoy.api.v2.route.DirectResponseAction";
|
||||||
|
|
||||||
// Specifies the HTTP response status to be returned.
|
// Specifies the HTTP response status to be returned.
|
||||||
uint32 status = 1 [(validate.rules).uint32 = {lt: 600 gte: 100}];
|
uint32 status = 1 [(validate.rules).uint32 = {lt: 600 gte: 200}];
|
||||||
|
|
||||||
// Specifies the content of the response body. If this setting is omitted,
|
// Specifies the content of the response body. If this setting is omitted,
|
||||||
// no body is included in the generated response.
|
// no body is included in the generated response.
|
||||||
|
|
@ -1688,6 +1811,9 @@ message RateLimit {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.api.v2.route.RateLimit.Action.HeaderValueMatch";
|
"envoy.api.v2.route.RateLimit.Action.HeaderValueMatch";
|
||||||
|
|
||||||
|
// The key to use in the descriptor entry. Defaults to `header_match`.
|
||||||
|
string descriptor_key = 4;
|
||||||
|
|
||||||
// The value to use in the descriptor entry.
|
// The value to use in the descriptor entry.
|
||||||
string descriptor_value = 1 [(validate.rules).string = {min_len: 1}];
|
string descriptor_value = 1 [(validate.rules).string = {min_len: 1}];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@ syntax = "proto3";
|
||||||
|
|
||||||
package envoy.config.route.v3;
|
package envoy.config.route.v3;
|
||||||
|
|
||||||
|
import "envoy/config/route/v3/route.proto";
|
||||||
|
|
||||||
|
import "udpa/annotations/migrate.proto";
|
||||||
import "udpa/annotations/status.proto";
|
import "udpa/annotations/status.proto";
|
||||||
import "udpa/annotations/versioning.proto";
|
import "udpa/annotations/versioning.proto";
|
||||||
import "validate/validate.proto";
|
import "validate/validate.proto";
|
||||||
|
|
@ -9,6 +12,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.route.v3";
|
option java_package = "io.envoyproxy.envoy.config.route.v3";
|
||||||
option java_outer_classname = "ScopedRouteProto";
|
option java_outer_classname = "ScopedRouteProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/route/v3;routev3";
|
||||||
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// [#protodoc-title: HTTP scoped routing configuration]
|
// [#protodoc-title: HTTP scoped routing configuration]
|
||||||
|
|
@ -16,7 +20,10 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
|
|
||||||
// Specifies a routing scope, which associates a
|
// Specifies a routing scope, which associates a
|
||||||
// :ref:`Key<envoy_v3_api_msg_config.route.v3.ScopedRouteConfiguration.Key>` to a
|
// :ref:`Key<envoy_v3_api_msg_config.route.v3.ScopedRouteConfiguration.Key>` to a
|
||||||
// :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` (identified by its resource name).
|
// :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`.
|
||||||
|
// The :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` can be obtained dynamically
|
||||||
|
// via RDS (:ref:`route_configuration_name<envoy_v3_api_field_config.route.v3.ScopedRouteConfiguration.route_configuration_name>`)
|
||||||
|
// or specified inline (:ref:`route_configuration<envoy_v3_api_field_config.route.v3.ScopedRouteConfiguration.route_configuration>`).
|
||||||
//
|
//
|
||||||
// The HTTP connection manager builds up a table consisting of these Key to
|
// The HTTP connection manager builds up a table consisting of these Key to
|
||||||
// RouteConfiguration mappings, and looks up the RouteConfiguration to use per
|
// RouteConfiguration mappings, and looks up the RouteConfiguration to use per
|
||||||
|
|
@ -73,6 +80,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
|
||||||
// would result in the routing table defined by the `route-config1`
|
// would result in the routing table defined by the `route-config1`
|
||||||
// RouteConfiguration being assigned to the HTTP request/stream.
|
// RouteConfiguration being assigned to the HTTP request/stream.
|
||||||
//
|
//
|
||||||
|
// [#next-free-field: 6]
|
||||||
message ScopedRouteConfiguration {
|
message ScopedRouteConfiguration {
|
||||||
option (udpa.annotations.versioning).previous_message_type =
|
option (udpa.annotations.versioning).previous_message_type =
|
||||||
"envoy.api.v2.ScopedRouteConfiguration";
|
"envoy.api.v2.ScopedRouteConfiguration";
|
||||||
|
|
@ -113,7 +121,12 @@ message ScopedRouteConfiguration {
|
||||||
// The resource name to use for a :ref:`envoy_v3_api_msg_service.discovery.v3.DiscoveryRequest` to an
|
// The resource name to use for a :ref:`envoy_v3_api_msg_service.discovery.v3.DiscoveryRequest` to an
|
||||||
// RDS server to fetch the :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` associated
|
// RDS server to fetch the :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` associated
|
||||||
// with this scope.
|
// with this scope.
|
||||||
string route_configuration_name = 2 [(validate.rules).string = {min_len: 1}];
|
string route_configuration_name = 2
|
||||||
|
[(udpa.annotations.field_migrate).oneof_promotion = "route_config"];
|
||||||
|
|
||||||
|
// The :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` associated with the scope.
|
||||||
|
RouteConfiguration route_configuration = 5
|
||||||
|
[(udpa.annotations.field_migrate).oneof_promotion = "route_config"];
|
||||||
|
|
||||||
// The key to match against.
|
// The key to match against.
|
||||||
Key key = 3 [(validate.rules).message = {required: true}];
|
Key key = 3 [(validate.rules).message = {required: true}];
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
||||||
option java_outer_classname = "DatadogProto";
|
option java_outer_classname = "DatadogProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
// [#protodoc-title: Datadog tracer]
|
// [#protodoc-title: Datadog tracer]
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
||||||
option java_outer_classname = "DynamicOtProto";
|
option java_outer_classname = "DynamicOtProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
// [#protodoc-title: Dynamically loadable OpenTracing tracer]
|
// [#protodoc-title: Dynamically loadable OpenTracing tracer]
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
||||||
option java_outer_classname = "HttpTracerProto";
|
option java_outer_classname = "HttpTracerProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
// [#protodoc-title: Tracing]
|
// [#protodoc-title: Tracing]
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
||||||
option java_outer_classname = "LightstepProto";
|
option java_outer_classname = "LightstepProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
// [#protodoc-title: LightStep tracer]
|
// [#protodoc-title: LightStep tracer]
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "udpa/annotations/status.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
||||||
option java_outer_classname = "OpencensusProto";
|
option java_outer_classname = "OpencensusProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
// [#protodoc-title: OpenCensus tracer]
|
// [#protodoc-title: OpenCensus tracer]
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
||||||
option java_outer_classname = "ServiceProto";
|
option java_outer_classname = "ServiceProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
// [#protodoc-title: Trace Service]
|
// [#protodoc-title: Trace Service]
|
||||||
|
|
|
||||||
|
|
@ -13,3 +13,4 @@ import public "envoy/config/trace/v2/zipkin.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
||||||
option java_outer_classname = "TraceProto";
|
option java_outer_classname = "TraceProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2";
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import "validate/validate.proto";
|
||||||
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
option java_package = "io.envoyproxy.envoy.config.trace.v2";
|
||||||
option java_outer_classname = "ZipkinProto";
|
option java_outer_classname = "ZipkinProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
|
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/trace/v2;tracev2";
|
||||||
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
option (udpa.annotations.file_status).package_version_status = FROZEN;
|
||||||
|
|
||||||
// [#protodoc-title: Zipkin tracer]
|
// [#protodoc-title: Zipkin tracer]
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue