Merge pull request #1489 from murgatroid99/grpc-js_xds_client

grpc-js: Add XdsClient class
This commit is contained in:
Michael Lumish 2020-07-22 16:31:35 -07:00 committed by GitHub
commit 8d759b30ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
214 changed files with 19828 additions and 4 deletions

12
.gitmodules vendored
View File

@ -1,3 +1,15 @@
[submodule "packages/grpc-tools/deps/protobuf"]
path = packages/grpc-tools/deps/protobuf
url = https://github.com/protocolbuffers/protobuf
[submodule "packages/grpc-js/deps/envoy-api"]
path = packages/grpc-js/deps/envoy-api
url = https://github.com/envoyproxy/data-plane-api.git
[submodule "packages/grpc-js/deps/udpa"]
path = packages/grpc-js/deps/udpa
url = https://github.com/cncf/udpa.git
[submodule "packages/grpc-js/deps/googleapis"]
path = packages/grpc-js/deps/googleapis
url = https://github.com/googleapis/googleapis.git
[submodule "packages/grpc-js/deps/protoc-gen-validate"]
path = packages/grpc-js/deps/protoc-gen-validate
url = https://github.com/envoyproxy/protoc-gen-validate.git

@ -0,0 +1 @@
Subproject commit 50cef8fcab37ba59a61068934d08a3f4c28a681f

@ -0,0 +1 @@
Subproject commit 8c53b2cb792234354c13336ac7daee61333deade

@ -0,0 +1 @@
Subproject commit 0af61d9dc28712dc0e6f8e1a940855a2ee0cb9ed

@ -0,0 +1 @@
Subproject commit 3b31d022a144b334eb2224838e4d6952ab5253aa

View File

@ -15,7 +15,7 @@
"types": "build/src/index.d.ts",
"license": "Apache-2.0",
"devDependencies": {
"@grpc/proto-loader": "^0.5.0",
"@grpc/proto-loader": "^0.6.0-pre6",
"@types/gulp": "^4.0.6",
"@types/gulp-mocha": "0.0.32",
"@types/lodash": "^4.14.108",
@ -48,11 +48,12 @@
"clean": "node -e 'require(\"rimraf\")(\"./build\", () => {})'",
"compile": "tsc -p .",
"format": "clang-format -i -style=\"{Language: JavaScript, BasedOnStyle: Google, ColumnLimit: 80}\" src/*.ts test/*.ts",
"generate-types": "proto-loader-gen-types --keepCase --longs String --enums String --defaults --oneofs --json --includeComments --includeDirs deps/envoy-api/ deps/udpa/ deps/googleapis/ deps/protoc-gen-validate/ -O src/generated/ --grpcLib ../index envoy/service/discovery/v2/ads.proto envoy/api/v2/listener.proto envoy/api/v2/route.proto envoy/api/v2/cluster.proto envoy/api/v2/endpoint.proto",
"lint": "npm run check",
"prepare": "npm run compile",
"test": "gulp test",
"check": "gts check src/**/*.ts",
"fix": "gts fix src/**/*.ts",
"fix": "gts fix src/*.ts",
"pretest": "npm run compile",
"posttest": "npm run check"
},
@ -60,8 +61,16 @@
"semver": "^6.2.0"
},
"files": [
"src/*.ts",
"src/**/*.ts",
"build/src/*.{js,d.ts,js.map}",
"LICENSE"
"LICENSE",
"deps/envoy-api/envoy/api/v2/**/*.proto",
"deps/envoy-api/envoy/config/**/*.proto",
"deps/envoy-api/envoy/service/**/*.proto",
"deps/envoy-api/envoy/type/**/*.proto",
"deps/udpa/udpa/**/*.proto",
"deps/googleapis/google/api/*.proto",
"deps/googleapis/google/rpc/*.proto",
"deps/protoc-gen-validate/validate/**/*.proto"
]
}

View File

@ -0,0 +1,155 @@
import * as grpc from '../index';
import { ServiceDefinition, EnumTypeDefinition, MessageTypeDefinition } from '@grpc/proto-loader';
import { AggregatedDiscoveryServiceClient as _envoy_service_discovery_v2_AggregatedDiscoveryServiceClient } from './envoy/service/discovery/v2/AggregatedDiscoveryService';
type ConstructorArguments<Constructor> = Constructor extends new (...args: infer Args) => any ? Args: never;
type SubtypeConstructor<Constructor, Subtype> = {
new(...args: ConstructorArguments<Constructor>): Subtype;
}
export interface ProtoGrpcType {
envoy: {
api: {
v2: {
DeltaDiscoveryRequest: MessageTypeDefinition
DeltaDiscoveryResponse: MessageTypeDefinition
DiscoveryRequest: MessageTypeDefinition
DiscoveryResponse: MessageTypeDefinition
Resource: MessageTypeDefinition
core: {
Address: MessageTypeDefinition
AsyncDataSource: MessageTypeDefinition
BackoffStrategy: MessageTypeDefinition
BindConfig: MessageTypeDefinition
BuildVersion: MessageTypeDefinition
CidrRange: MessageTypeDefinition
ControlPlane: MessageTypeDefinition
DataSource: MessageTypeDefinition
Extension: MessageTypeDefinition
HeaderMap: MessageTypeDefinition
HeaderValue: MessageTypeDefinition
HeaderValueOption: MessageTypeDefinition
HttpUri: MessageTypeDefinition
Locality: MessageTypeDefinition
Metadata: MessageTypeDefinition
Node: MessageTypeDefinition
Pipe: MessageTypeDefinition
RemoteDataSource: MessageTypeDefinition
RequestMethod: EnumTypeDefinition
RetryPolicy: MessageTypeDefinition
RoutingPriority: EnumTypeDefinition
RuntimeDouble: MessageTypeDefinition
RuntimeFeatureFlag: MessageTypeDefinition
RuntimeFractionalPercent: MessageTypeDefinition
RuntimeUInt32: MessageTypeDefinition
SocketAddress: MessageTypeDefinition
SocketOption: MessageTypeDefinition
TcpKeepalive: MessageTypeDefinition
TrafficDirection: EnumTypeDefinition
TransportSocket: MessageTypeDefinition
}
}
}
service: {
discovery: {
v2: {
AdsDummy: MessageTypeDefinition
/**
* See https://github.com/lyft/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
* have the same structure as their singleton xDS counterparts, but can
* multiplex many resource types on a single stream. The type_url in the
* DiscoveryRequest/DiscoveryResponse provides sufficient information to recover
* the multiplexed singleton APIs at the Envoy instance and management server.
*/
AggregatedDiscoveryService: SubtypeConstructor<typeof grpc.Client, _envoy_service_discovery_v2_AggregatedDiscoveryServiceClient> & { service: ServiceDefinition }
}
}
}
type: {
FractionalPercent: MessageTypeDefinition
Percent: MessageTypeDefinition
SemanticVersion: MessageTypeDefinition
}
}
google: {
protobuf: {
Any: MessageTypeDefinition
BoolValue: MessageTypeDefinition
BytesValue: MessageTypeDefinition
DescriptorProto: MessageTypeDefinition
DoubleValue: MessageTypeDefinition
Duration: MessageTypeDefinition
EnumDescriptorProto: MessageTypeDefinition
EnumOptions: MessageTypeDefinition
EnumValueDescriptorProto: MessageTypeDefinition
EnumValueOptions: MessageTypeDefinition
FieldDescriptorProto: MessageTypeDefinition
FieldOptions: MessageTypeDefinition
FileDescriptorProto: MessageTypeDefinition
FileDescriptorSet: MessageTypeDefinition
FileOptions: MessageTypeDefinition
FloatValue: MessageTypeDefinition
GeneratedCodeInfo: MessageTypeDefinition
Int32Value: MessageTypeDefinition
Int64Value: MessageTypeDefinition
ListValue: MessageTypeDefinition
MessageOptions: MessageTypeDefinition
MethodDescriptorProto: MessageTypeDefinition
MethodOptions: MessageTypeDefinition
NullValue: EnumTypeDefinition
OneofDescriptorProto: MessageTypeDefinition
OneofOptions: MessageTypeDefinition
ServiceDescriptorProto: MessageTypeDefinition
ServiceOptions: MessageTypeDefinition
SourceCodeInfo: MessageTypeDefinition
StringValue: MessageTypeDefinition
Struct: MessageTypeDefinition
Timestamp: MessageTypeDefinition
UInt32Value: MessageTypeDefinition
UInt64Value: MessageTypeDefinition
UninterpretedOption: MessageTypeDefinition
Value: MessageTypeDefinition
}
rpc: {
Status: MessageTypeDefinition
}
}
udpa: {
annotations: {
FieldMigrateAnnotation: MessageTypeDefinition
FileMigrateAnnotation: MessageTypeDefinition
MigrateAnnotation: MessageTypeDefinition
PackageVersionStatus: EnumTypeDefinition
StatusAnnotation: MessageTypeDefinition
}
}
validate: {
AnyRules: MessageTypeDefinition
BoolRules: MessageTypeDefinition
BytesRules: MessageTypeDefinition
DoubleRules: MessageTypeDefinition
DurationRules: MessageTypeDefinition
EnumRules: MessageTypeDefinition
FieldRules: MessageTypeDefinition
Fixed32Rules: MessageTypeDefinition
Fixed64Rules: MessageTypeDefinition
FloatRules: MessageTypeDefinition
Int32Rules: MessageTypeDefinition
Int64Rules: MessageTypeDefinition
KnownRegex: EnumTypeDefinition
MapRules: MessageTypeDefinition
MessageRules: MessageTypeDefinition
RepeatedRules: MessageTypeDefinition
SFixed32Rules: MessageTypeDefinition
SFixed64Rules: MessageTypeDefinition
SInt32Rules: MessageTypeDefinition
SInt64Rules: MessageTypeDefinition
StringRules: MessageTypeDefinition
TimestampRules: MessageTypeDefinition
UInt32Rules: MessageTypeDefinition
UInt64Rules: MessageTypeDefinition
}
}

View File

@ -0,0 +1,192 @@
import * as grpc from '../index';
import { ServiceDefinition, EnumTypeDefinition, MessageTypeDefinition } from '@grpc/proto-loader';
type ConstructorArguments<Constructor> = Constructor extends new (...args: infer Args) => any ? Args: never;
type SubtypeConstructor<Constructor, Subtype> = {
new(...args: ConstructorArguments<Constructor>): Subtype;
}
export interface ProtoGrpcType {
envoy: {
annotations: {
}
api: {
v2: {
Cluster: MessageTypeDefinition
ClusterLoadAssignment: MessageTypeDefinition
LoadBalancingPolicy: MessageTypeDefinition
UpstreamBindConfig: MessageTypeDefinition
UpstreamConnectionOptions: MessageTypeDefinition
auth: {
CertificateValidationContext: MessageTypeDefinition
CommonTlsContext: MessageTypeDefinition
DownstreamTlsContext: MessageTypeDefinition
GenericSecret: MessageTypeDefinition
PrivateKeyProvider: MessageTypeDefinition
SdsSecretConfig: MessageTypeDefinition
Secret: MessageTypeDefinition
TlsCertificate: MessageTypeDefinition
TlsParameters: MessageTypeDefinition
TlsSessionTicketKeys: MessageTypeDefinition
UpstreamTlsContext: MessageTypeDefinition
}
cluster: {
CircuitBreakers: MessageTypeDefinition
Filter: MessageTypeDefinition
OutlierDetection: MessageTypeDefinition
}
core: {
Address: MessageTypeDefinition
AggregatedConfigSource: MessageTypeDefinition
ApiConfigSource: MessageTypeDefinition
ApiVersion: EnumTypeDefinition
AsyncDataSource: MessageTypeDefinition
BackoffStrategy: MessageTypeDefinition
BindConfig: MessageTypeDefinition
BuildVersion: MessageTypeDefinition
CidrRange: MessageTypeDefinition
ConfigSource: MessageTypeDefinition
ControlPlane: MessageTypeDefinition
DataSource: MessageTypeDefinition
EventServiceConfig: MessageTypeDefinition
Extension: MessageTypeDefinition
GrpcProtocolOptions: MessageTypeDefinition
GrpcService: MessageTypeDefinition
HeaderMap: MessageTypeDefinition
HeaderValue: MessageTypeDefinition
HeaderValueOption: MessageTypeDefinition
HealthCheck: MessageTypeDefinition
HealthStatus: EnumTypeDefinition
Http1ProtocolOptions: MessageTypeDefinition
Http2ProtocolOptions: MessageTypeDefinition
HttpProtocolOptions: MessageTypeDefinition
HttpUri: MessageTypeDefinition
Locality: MessageTypeDefinition
Metadata: MessageTypeDefinition
Node: MessageTypeDefinition
Pipe: MessageTypeDefinition
RateLimitSettings: MessageTypeDefinition
RemoteDataSource: MessageTypeDefinition
RequestMethod: EnumTypeDefinition
RetryPolicy: MessageTypeDefinition
RoutingPriority: EnumTypeDefinition
RuntimeDouble: MessageTypeDefinition
RuntimeFeatureFlag: MessageTypeDefinition
RuntimeFractionalPercent: MessageTypeDefinition
RuntimeUInt32: MessageTypeDefinition
SelfConfigSource: MessageTypeDefinition
SocketAddress: MessageTypeDefinition
SocketOption: MessageTypeDefinition
TcpKeepalive: MessageTypeDefinition
TcpProtocolOptions: MessageTypeDefinition
TrafficDirection: EnumTypeDefinition
TransportSocket: MessageTypeDefinition
UpstreamHttpProtocolOptions: MessageTypeDefinition
}
endpoint: {
Endpoint: MessageTypeDefinition
LbEndpoint: MessageTypeDefinition
LocalityLbEndpoints: MessageTypeDefinition
}
}
}
type: {
CodecClientType: EnumTypeDefinition
DoubleRange: MessageTypeDefinition
FractionalPercent: MessageTypeDefinition
Int32Range: MessageTypeDefinition
Int64Range: MessageTypeDefinition
Percent: MessageTypeDefinition
SemanticVersion: MessageTypeDefinition
matcher: {
ListStringMatcher: MessageTypeDefinition
RegexMatchAndSubstitute: MessageTypeDefinition
RegexMatcher: MessageTypeDefinition
StringMatcher: MessageTypeDefinition
}
}
}
google: {
api: {
CustomHttpPattern: MessageTypeDefinition
Http: MessageTypeDefinition
HttpRule: MessageTypeDefinition
}
protobuf: {
Any: MessageTypeDefinition
BoolValue: MessageTypeDefinition
BytesValue: MessageTypeDefinition
DescriptorProto: MessageTypeDefinition
DoubleValue: MessageTypeDefinition
Duration: MessageTypeDefinition
Empty: MessageTypeDefinition
EnumDescriptorProto: MessageTypeDefinition
EnumOptions: MessageTypeDefinition
EnumValueDescriptorProto: MessageTypeDefinition
EnumValueOptions: MessageTypeDefinition
FieldDescriptorProto: MessageTypeDefinition
FieldOptions: MessageTypeDefinition
FileDescriptorProto: MessageTypeDefinition
FileDescriptorSet: MessageTypeDefinition
FileOptions: MessageTypeDefinition
FloatValue: MessageTypeDefinition
GeneratedCodeInfo: MessageTypeDefinition
Int32Value: MessageTypeDefinition
Int64Value: MessageTypeDefinition
ListValue: MessageTypeDefinition
MessageOptions: MessageTypeDefinition
MethodDescriptorProto: MessageTypeDefinition
MethodOptions: MessageTypeDefinition
NullValue: EnumTypeDefinition
OneofDescriptorProto: MessageTypeDefinition
OneofOptions: MessageTypeDefinition
ServiceDescriptorProto: MessageTypeDefinition
ServiceOptions: MessageTypeDefinition
SourceCodeInfo: MessageTypeDefinition
StringValue: MessageTypeDefinition
Struct: MessageTypeDefinition
Timestamp: MessageTypeDefinition
UInt32Value: MessageTypeDefinition
UInt64Value: MessageTypeDefinition
UninterpretedOption: MessageTypeDefinition
Value: MessageTypeDefinition
}
}
udpa: {
annotations: {
FieldMigrateAnnotation: MessageTypeDefinition
FileMigrateAnnotation: MessageTypeDefinition
MigrateAnnotation: MessageTypeDefinition
PackageVersionStatus: EnumTypeDefinition
StatusAnnotation: MessageTypeDefinition
}
}
validate: {
AnyRules: MessageTypeDefinition
BoolRules: MessageTypeDefinition
BytesRules: MessageTypeDefinition
DoubleRules: MessageTypeDefinition
DurationRules: MessageTypeDefinition
EnumRules: MessageTypeDefinition
FieldRules: MessageTypeDefinition
Fixed32Rules: MessageTypeDefinition
Fixed64Rules: MessageTypeDefinition
FloatRules: MessageTypeDefinition
Int32Rules: MessageTypeDefinition
Int64Rules: MessageTypeDefinition
KnownRegex: EnumTypeDefinition
MapRules: MessageTypeDefinition
MessageRules: MessageTypeDefinition
RepeatedRules: MessageTypeDefinition
SFixed32Rules: MessageTypeDefinition
SFixed64Rules: MessageTypeDefinition
SInt32Rules: MessageTypeDefinition
SInt64Rules: MessageTypeDefinition
StringRules: MessageTypeDefinition
TimestampRules: MessageTypeDefinition
UInt32Rules: MessageTypeDefinition
UInt64Rules: MessageTypeDefinition
}
}

View File

@ -0,0 +1,158 @@
import * as grpc from '../index';
import { ServiceDefinition, EnumTypeDefinition, MessageTypeDefinition } from '@grpc/proto-loader';
type ConstructorArguments<Constructor> = Constructor extends new (...args: infer Args) => any ? Args: never;
type SubtypeConstructor<Constructor, Subtype> = {
new(...args: ConstructorArguments<Constructor>): Subtype;
}
export interface ProtoGrpcType {
envoy: {
annotations: {
}
api: {
v2: {
ClusterLoadAssignment: MessageTypeDefinition
core: {
Address: MessageTypeDefinition
AsyncDataSource: MessageTypeDefinition
BackoffStrategy: MessageTypeDefinition
BindConfig: MessageTypeDefinition
BuildVersion: MessageTypeDefinition
CidrRange: MessageTypeDefinition
ControlPlane: MessageTypeDefinition
DataSource: MessageTypeDefinition
EventServiceConfig: MessageTypeDefinition
Extension: MessageTypeDefinition
GrpcService: MessageTypeDefinition
HeaderMap: MessageTypeDefinition
HeaderValue: MessageTypeDefinition
HeaderValueOption: MessageTypeDefinition
HealthCheck: MessageTypeDefinition
HealthStatus: EnumTypeDefinition
HttpUri: MessageTypeDefinition
Locality: MessageTypeDefinition
Metadata: MessageTypeDefinition
Node: MessageTypeDefinition
Pipe: MessageTypeDefinition
RemoteDataSource: MessageTypeDefinition
RequestMethod: EnumTypeDefinition
RetryPolicy: MessageTypeDefinition
RoutingPriority: EnumTypeDefinition
RuntimeDouble: MessageTypeDefinition
RuntimeFeatureFlag: MessageTypeDefinition
RuntimeFractionalPercent: MessageTypeDefinition
RuntimeUInt32: MessageTypeDefinition
SocketAddress: MessageTypeDefinition
SocketOption: MessageTypeDefinition
TcpKeepalive: MessageTypeDefinition
TrafficDirection: EnumTypeDefinition
TransportSocket: MessageTypeDefinition
}
endpoint: {
Endpoint: MessageTypeDefinition
LbEndpoint: MessageTypeDefinition
LocalityLbEndpoints: MessageTypeDefinition
}
}
}
type: {
CodecClientType: EnumTypeDefinition
DoubleRange: MessageTypeDefinition
FractionalPercent: MessageTypeDefinition
Int32Range: MessageTypeDefinition
Int64Range: MessageTypeDefinition
Percent: MessageTypeDefinition
SemanticVersion: MessageTypeDefinition
matcher: {
ListStringMatcher: MessageTypeDefinition
RegexMatchAndSubstitute: MessageTypeDefinition
RegexMatcher: MessageTypeDefinition
StringMatcher: MessageTypeDefinition
}
}
}
google: {
api: {
CustomHttpPattern: MessageTypeDefinition
Http: MessageTypeDefinition
HttpRule: MessageTypeDefinition
}
protobuf: {
Any: MessageTypeDefinition
BoolValue: MessageTypeDefinition
BytesValue: MessageTypeDefinition
DescriptorProto: MessageTypeDefinition
DoubleValue: MessageTypeDefinition
Duration: MessageTypeDefinition
Empty: MessageTypeDefinition
EnumDescriptorProto: MessageTypeDefinition
EnumOptions: MessageTypeDefinition
EnumValueDescriptorProto: MessageTypeDefinition
EnumValueOptions: MessageTypeDefinition
FieldDescriptorProto: MessageTypeDefinition
FieldOptions: MessageTypeDefinition
FileDescriptorProto: MessageTypeDefinition
FileDescriptorSet: MessageTypeDefinition
FileOptions: MessageTypeDefinition
FloatValue: MessageTypeDefinition
GeneratedCodeInfo: MessageTypeDefinition
Int32Value: MessageTypeDefinition
Int64Value: MessageTypeDefinition
ListValue: MessageTypeDefinition
MessageOptions: MessageTypeDefinition
MethodDescriptorProto: MessageTypeDefinition
MethodOptions: MessageTypeDefinition
NullValue: EnumTypeDefinition
OneofDescriptorProto: MessageTypeDefinition
OneofOptions: MessageTypeDefinition
ServiceDescriptorProto: MessageTypeDefinition
ServiceOptions: MessageTypeDefinition
SourceCodeInfo: MessageTypeDefinition
StringValue: MessageTypeDefinition
Struct: MessageTypeDefinition
Timestamp: MessageTypeDefinition
UInt32Value: MessageTypeDefinition
UInt64Value: MessageTypeDefinition
UninterpretedOption: MessageTypeDefinition
Value: MessageTypeDefinition
}
}
udpa: {
annotations: {
FieldMigrateAnnotation: MessageTypeDefinition
FileMigrateAnnotation: MessageTypeDefinition
MigrateAnnotation: MessageTypeDefinition
PackageVersionStatus: EnumTypeDefinition
StatusAnnotation: MessageTypeDefinition
}
}
validate: {
AnyRules: MessageTypeDefinition
BoolRules: MessageTypeDefinition
BytesRules: MessageTypeDefinition
DoubleRules: MessageTypeDefinition
DurationRules: MessageTypeDefinition
EnumRules: MessageTypeDefinition
FieldRules: MessageTypeDefinition
Fixed32Rules: MessageTypeDefinition
Fixed64Rules: MessageTypeDefinition
FloatRules: MessageTypeDefinition
Int32Rules: MessageTypeDefinition
Int64Rules: MessageTypeDefinition
KnownRegex: EnumTypeDefinition
MapRules: MessageTypeDefinition
MessageRules: MessageTypeDefinition
RepeatedRules: MessageTypeDefinition
SFixed32Rules: MessageTypeDefinition
SFixed64Rules: MessageTypeDefinition
SInt32Rules: MessageTypeDefinition
SInt64Rules: MessageTypeDefinition
StringRules: MessageTypeDefinition
TimestampRules: MessageTypeDefinition
UInt32Rules: MessageTypeDefinition
UInt64Rules: MessageTypeDefinition
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,235 @@
// Original file: deps/envoy-api/envoy/api/v2/endpoint.proto
import { LocalityLbEndpoints as _envoy_api_v2_endpoint_LocalityLbEndpoints, LocalityLbEndpoints__Output as _envoy_api_v2_endpoint_LocalityLbEndpoints__Output } from '../../../envoy/api/v2/endpoint/LocalityLbEndpoints';
import { Endpoint as _envoy_api_v2_endpoint_Endpoint, Endpoint__Output as _envoy_api_v2_endpoint_Endpoint__Output } from '../../../envoy/api/v2/endpoint/Endpoint';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../google/protobuf/UInt32Value';
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../google/protobuf/Duration';
import { FractionalPercent as _envoy_type_FractionalPercent, FractionalPercent__Output as _envoy_type_FractionalPercent__Output } from '../../../envoy/type/FractionalPercent';
/**
* [#not-implemented-hide:]
*/
export interface _envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload {
/**
* Identifier for the policy specifying the drop.
*/
'category'?: (string);
/**
* Percentage of traffic that should be dropped for the category.
*/
'drop_percentage'?: (_envoy_type_FractionalPercent);
}
/**
* [#not-implemented-hide:]
*/
export interface _envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload__Output {
/**
* Identifier for the policy specifying the drop.
*/
'category': (string);
/**
* Percentage of traffic that should be dropped for the category.
*/
'drop_percentage'?: (_envoy_type_FractionalPercent__Output);
}
/**
* Load balancing policy settings.
* [#next-free-field: 6]
*/
export interface _envoy_api_v2_ClusterLoadAssignment_Policy {
/**
* Action to trim the overall incoming traffic to protect the upstream
* hosts. This action allows protection in case the hosts are unable to
* recover from an outage, or unable to autoscale or unable to handle
* incoming traffic volume for any reason.
*
* At the client each category is applied one after the other to generate
* the 'actual' drop percentage on all outgoing traffic. For example:
*
* .. code-block:: json
*
* { "drop_overloads": [
* { "category": "throttle", "drop_percentage": 60 }
* { "category": "lb", "drop_percentage": 50 }
* ]}
*
* The actual drop percentages applied to the traffic at the clients will be
* "throttle"_drop = 60%
* "lb"_drop = 20% // 50% of the remaining 'actual' load, which is 40%.
* actual_outgoing_load = 20% // remaining after applying all categories.
* [#not-implemented-hide:]
*/
'drop_overloads'?: (_envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload)[];
/**
* Priority levels and localities are considered overprovisioned with this
* factor (in percentage). This means that we don't consider a priority
* level or locality unhealthy until the percentage of healthy hosts
* multiplied by the overprovisioning factor drops below 100.
* With the default value 140(1.4), Envoy doesn't consider a priority level
* or a locality unhealthy until their percentage of healthy hosts drops
* below 72%. For example:
*
* .. code-block:: json
*
* { "overprovisioning_factor": 100 }
*
* Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>` and
* :ref:`localities <arch_overview_load_balancing_locality_weighted_lb>`.
*/
'overprovisioning_factor'?: (_google_protobuf_UInt32Value);
/**
* The max time until which the endpoints from this assignment can be used.
* If no new assignments are received before this time expires the endpoints
* are considered stale and should be marked unhealthy.
* Defaults to 0 which means endpoints never go stale.
*/
'endpoint_stale_after'?: (_google_protobuf_Duration);
/**
* The flag to disable overprovisioning. If it is set to true,
* :ref:`overprovisioning factor
* <arch_overview_load_balancing_overprovisioning_factor>` will be ignored
* and Envoy will not perform graceful failover between priority levels or
* localities as endpoints become unhealthy. Otherwise Envoy will perform
* graceful failover as :ref:`overprovisioning factor
* <arch_overview_load_balancing_overprovisioning_factor>` suggests.
* [#not-implemented-hide:]
*/
'disable_overprovisioning'?: (boolean);
}
/**
* Load balancing policy settings.
* [#next-free-field: 6]
*/
export interface _envoy_api_v2_ClusterLoadAssignment_Policy__Output {
/**
* Action to trim the overall incoming traffic to protect the upstream
* hosts. This action allows protection in case the hosts are unable to
* recover from an outage, or unable to autoscale or unable to handle
* incoming traffic volume for any reason.
*
* At the client each category is applied one after the other to generate
* the 'actual' drop percentage on all outgoing traffic. For example:
*
* .. code-block:: json
*
* { "drop_overloads": [
* { "category": "throttle", "drop_percentage": 60 }
* { "category": "lb", "drop_percentage": 50 }
* ]}
*
* The actual drop percentages applied to the traffic at the clients will be
* "throttle"_drop = 60%
* "lb"_drop = 20% // 50% of the remaining 'actual' load, which is 40%.
* actual_outgoing_load = 20% // remaining after applying all categories.
* [#not-implemented-hide:]
*/
'drop_overloads': (_envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload__Output)[];
/**
* Priority levels and localities are considered overprovisioned with this
* factor (in percentage). This means that we don't consider a priority
* level or locality unhealthy until the percentage of healthy hosts
* multiplied by the overprovisioning factor drops below 100.
* With the default value 140(1.4), Envoy doesn't consider a priority level
* or a locality unhealthy until their percentage of healthy hosts drops
* below 72%. For example:
*
* .. code-block:: json
*
* { "overprovisioning_factor": 100 }
*
* Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>` and
* :ref:`localities <arch_overview_load_balancing_locality_weighted_lb>`.
*/
'overprovisioning_factor'?: (_google_protobuf_UInt32Value__Output);
/**
* The max time until which the endpoints from this assignment can be used.
* If no new assignments are received before this time expires the endpoints
* are considered stale and should be marked unhealthy.
* Defaults to 0 which means endpoints never go stale.
*/
'endpoint_stale_after'?: (_google_protobuf_Duration__Output);
/**
* The flag to disable overprovisioning. If it is set to true,
* :ref:`overprovisioning factor
* <arch_overview_load_balancing_overprovisioning_factor>` will be ignored
* and Envoy will not perform graceful failover between priority levels or
* localities as endpoints become unhealthy. Otherwise Envoy will perform
* graceful failover as :ref:`overprovisioning factor
* <arch_overview_load_balancing_overprovisioning_factor>` suggests.
* [#not-implemented-hide:]
*/
'disable_overprovisioning': (boolean);
}
/**
* Each route from RDS will map to a single cluster or traffic split across
* clusters using weights expressed in the RDS WeightedCluster.
*
* With EDS, each cluster is treated independently from a LB perspective, with
* LB taking place between the Localities within a cluster and at a finer
* granularity between the hosts within a locality. The percentage of traffic
* for each endpoint is determined by both its load_balancing_weight, and the
* load_balancing_weight of its locality. First, a locality will be selected,
* then an endpoint within that locality will be chose based on its weight.
* [#next-free-field: 6]
*/
export interface ClusterLoadAssignment {
/**
* Name of the cluster. This will be the :ref:`service_name
* <envoy_api_field_Cluster.EdsClusterConfig.service_name>` value if specified
* in the cluster :ref:`EdsClusterConfig
* <envoy_api_msg_Cluster.EdsClusterConfig>`.
*/
'cluster_name'?: (string);
/**
* List of endpoints to load balance to.
*/
'endpoints'?: (_envoy_api_v2_endpoint_LocalityLbEndpoints)[];
/**
* Load balancing policy settings.
*/
'policy'?: (_envoy_api_v2_ClusterLoadAssignment_Policy);
/**
* Map of named endpoints that can be referenced in LocalityLbEndpoints.
* [#not-implemented-hide:]
*/
'named_endpoints'?: ({[key: string]: _envoy_api_v2_endpoint_Endpoint});
}
/**
* Each route from RDS will map to a single cluster or traffic split across
* clusters using weights expressed in the RDS WeightedCluster.
*
* With EDS, each cluster is treated independently from a LB perspective, with
* LB taking place between the Localities within a cluster and at a finer
* granularity between the hosts within a locality. The percentage of traffic
* for each endpoint is determined by both its load_balancing_weight, and the
* load_balancing_weight of its locality. First, a locality will be selected,
* then an endpoint within that locality will be chose based on its weight.
* [#next-free-field: 6]
*/
export interface ClusterLoadAssignment__Output {
/**
* Name of the cluster. This will be the :ref:`service_name
* <envoy_api_field_Cluster.EdsClusterConfig.service_name>` value if specified
* in the cluster :ref:`EdsClusterConfig
* <envoy_api_msg_Cluster.EdsClusterConfig>`.
*/
'cluster_name': (string);
/**
* List of endpoints to load balance to.
*/
'endpoints': (_envoy_api_v2_endpoint_LocalityLbEndpoints__Output)[];
/**
* Load balancing policy settings.
*/
'policy'?: (_envoy_api_v2_ClusterLoadAssignment_Policy__Output);
/**
* Map of named endpoints that can be referenced in LocalityLbEndpoints.
* [#not-implemented-hide:]
*/
'named_endpoints'?: ({[key: string]: _envoy_api_v2_endpoint_Endpoint__Output});
}

View File

@ -0,0 +1,202 @@
// Original file: deps/envoy-api/envoy/api/v2/discovery.proto
import { Node as _envoy_api_v2_core_Node, Node__Output as _envoy_api_v2_core_Node__Output } from '../../../envoy/api/v2/core/Node';
import { Status as _google_rpc_Status, Status__Output as _google_rpc_Status__Output } from '../../../google/rpc/Status';
/**
* DeltaDiscoveryRequest and DeltaDiscoveryResponse are used in a new gRPC
* endpoint for Delta xDS.
*
* With Delta xDS, the DeltaDiscoveryResponses do not need to include a full
* snapshot of the tracked resources. Instead, DeltaDiscoveryResponses are a
* diff to the state of a xDS client.
* In Delta XDS there are per-resource versions, which allow tracking state at
* the resource granularity.
* An xDS Delta session is always in the context of a gRPC bidirectional
* stream. This allows the xDS server to keep track of the state of xDS clients
* connected to it.
*
* In Delta xDS the nonce field is required and used to pair
* DeltaDiscoveryResponse to a DeltaDiscoveryRequest ACK or NACK.
* Optionally, a response message level system_version_info is present for
* debugging purposes only.
*
* DeltaDiscoveryRequest plays two independent roles. Any DeltaDiscoveryRequest
* can be either or both of: [1] informing the server of what resources the
* client has gained/lost interest in (using resource_names_subscribe and
* resource_names_unsubscribe), or [2] (N)ACKing an earlier resource update from
* the server (using response_nonce, with presence of error_detail making it a NACK).
* Additionally, the first message (for a given type_url) of a reconnected gRPC stream
* has a third role: informing the server of the resources (and their versions)
* that the client already possesses, using the initial_resource_versions field.
*
* As with state-of-the-world, when multiple resource types are multiplexed (ADS),
* all requests/acknowledgments/updates are logically walled off by type_url:
* a Cluster ACK exists in a completely separate world from a prior Route NACK.
* In particular, initial_resource_versions being sent at the "start" of every
* gRPC stream actually entails a message for each type_url, each with its own
* initial_resource_versions.
* [#next-free-field: 8]
*/
export interface DeltaDiscoveryRequest {
/**
* The node making the request.
*/
'node'?: (_envoy_api_v2_core_Node);
/**
* Type of the resource that is being requested, e.g.
* "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment".
*/
'type_url'?: (string);
/**
* DeltaDiscoveryRequests allow the client to add or remove individual
* resources to the set of tracked resources in the context of a stream.
* All resource names in the resource_names_subscribe list are added to the
* set of tracked resources and all resource names in the resource_names_unsubscribe
* list are removed from the set of tracked resources.
*
* *Unlike* state-of-the-world xDS, an empty resource_names_subscribe or
* resource_names_unsubscribe list simply means that no resources are to be
* added or removed to the resource list.
* *Like* state-of-the-world xDS, the server must send updates for all tracked
* resources, but can also send updates for resources the client has not subscribed to.
*
* NOTE: the server must respond with all resources listed in resource_names_subscribe,
* even if it believes the client has the most recent version of them. The reason:
* the client may have dropped them, but then regained interest before it had a chance
* to send the unsubscribe message. See DeltaSubscriptionStateTest.RemoveThenAdd.
*
* These two fields can be set in any DeltaDiscoveryRequest, including ACKs
* and initial_resource_versions.
*
* A list of Resource names to add to the list of tracked resources.
*/
'resource_names_subscribe'?: (string)[];
/**
* A list of Resource names to remove from the list of tracked resources.
*/
'resource_names_unsubscribe'?: (string)[];
/**
* Informs the server of the versions of the resources the xDS client knows of, to enable the
* client to continue the same logical xDS session even in the face of gRPC stream reconnection.
* It will not be populated: [1] in the very first stream of a session, since the client will
* not yet have any resources, [2] in any message after the first in a stream (for a given
* type_url), since the server will already be correctly tracking the client's state.
* (In ADS, the first message *of each type_url* of a reconnected stream populates this map.)
* The map's keys are names of xDS resources known to the xDS client.
* The map's values are opaque resource versions.
*/
'initial_resource_versions'?: ({[key: string]: string});
/**
* When the DeltaDiscoveryRequest is a ACK or NACK message in response
* to a previous DeltaDiscoveryResponse, the response_nonce must be the
* nonce in the DeltaDiscoveryResponse.
* Otherwise (unlike in DiscoveryRequest) response_nonce must be omitted.
*/
'response_nonce'?: (string);
/**
* This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_DiscoveryResponse>`
* failed to update configuration. The *message* field in *error_details*
* provides the Envoy internal exception related to the failure.
*/
'error_detail'?: (_google_rpc_Status);
}
/**
* DeltaDiscoveryRequest and DeltaDiscoveryResponse are used in a new gRPC
* endpoint for Delta xDS.
*
* With Delta xDS, the DeltaDiscoveryResponses do not need to include a full
* snapshot of the tracked resources. Instead, DeltaDiscoveryResponses are a
* diff to the state of a xDS client.
* In Delta XDS there are per-resource versions, which allow tracking state at
* the resource granularity.
* An xDS Delta session is always in the context of a gRPC bidirectional
* stream. This allows the xDS server to keep track of the state of xDS clients
* connected to it.
*
* In Delta xDS the nonce field is required and used to pair
* DeltaDiscoveryResponse to a DeltaDiscoveryRequest ACK or NACK.
* Optionally, a response message level system_version_info is present for
* debugging purposes only.
*
* DeltaDiscoveryRequest plays two independent roles. Any DeltaDiscoveryRequest
* can be either or both of: [1] informing the server of what resources the
* client has gained/lost interest in (using resource_names_subscribe and
* resource_names_unsubscribe), or [2] (N)ACKing an earlier resource update from
* the server (using response_nonce, with presence of error_detail making it a NACK).
* Additionally, the first message (for a given type_url) of a reconnected gRPC stream
* has a third role: informing the server of the resources (and their versions)
* that the client already possesses, using the initial_resource_versions field.
*
* As with state-of-the-world, when multiple resource types are multiplexed (ADS),
* all requests/acknowledgments/updates are logically walled off by type_url:
* a Cluster ACK exists in a completely separate world from a prior Route NACK.
* In particular, initial_resource_versions being sent at the "start" of every
* gRPC stream actually entails a message for each type_url, each with its own
* initial_resource_versions.
* [#next-free-field: 8]
*/
export interface DeltaDiscoveryRequest__Output {
/**
* The node making the request.
*/
'node'?: (_envoy_api_v2_core_Node__Output);
/**
* Type of the resource that is being requested, e.g.
* "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment".
*/
'type_url': (string);
/**
* DeltaDiscoveryRequests allow the client to add or remove individual
* resources to the set of tracked resources in the context of a stream.
* All resource names in the resource_names_subscribe list are added to the
* set of tracked resources and all resource names in the resource_names_unsubscribe
* list are removed from the set of tracked resources.
*
* *Unlike* state-of-the-world xDS, an empty resource_names_subscribe or
* resource_names_unsubscribe list simply means that no resources are to be
* added or removed to the resource list.
* *Like* state-of-the-world xDS, the server must send updates for all tracked
* resources, but can also send updates for resources the client has not subscribed to.
*
* NOTE: the server must respond with all resources listed in resource_names_subscribe,
* even if it believes the client has the most recent version of them. The reason:
* the client may have dropped them, but then regained interest before it had a chance
* to send the unsubscribe message. See DeltaSubscriptionStateTest.RemoveThenAdd.
*
* These two fields can be set in any DeltaDiscoveryRequest, including ACKs
* and initial_resource_versions.
*
* A list of Resource names to add to the list of tracked resources.
*/
'resource_names_subscribe': (string)[];
/**
* A list of Resource names to remove from the list of tracked resources.
*/
'resource_names_unsubscribe': (string)[];
/**
* Informs the server of the versions of the resources the xDS client knows of, to enable the
* client to continue the same logical xDS session even in the face of gRPC stream reconnection.
* It will not be populated: [1] in the very first stream of a session, since the client will
* not yet have any resources, [2] in any message after the first in a stream (for a given
* type_url), since the server will already be correctly tracking the client's state.
* (In ADS, the first message *of each type_url* of a reconnected stream populates this map.)
* The map's keys are names of xDS resources known to the xDS client.
* The map's values are opaque resource versions.
*/
'initial_resource_versions': ({[key: string]: string});
/**
* When the DeltaDiscoveryRequest is a ACK or NACK message in response
* to a previous DeltaDiscoveryResponse, the response_nonce must be the
* nonce in the DeltaDiscoveryResponse.
* Otherwise (unlike in DiscoveryRequest) response_nonce must be omitted.
*/
'response_nonce': (string);
/**
* This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_DiscoveryResponse>`
* failed to update configuration. The *message* field in *error_details*
* provides the Envoy internal exception related to the failure.
*/
'error_detail'?: (_google_rpc_Status__Output);
}

View File

@ -0,0 +1,63 @@
// Original file: deps/envoy-api/envoy/api/v2/discovery.proto
import { Resource as _envoy_api_v2_Resource, Resource__Output as _envoy_api_v2_Resource__Output } from '../../../envoy/api/v2/Resource';
/**
* [#next-free-field: 7]
*/
export interface DeltaDiscoveryResponse {
/**
* The version of the response data (used for debugging).
*/
'system_version_info'?: (string);
/**
* The response resources. These are typed resources, whose types must match
* the type_url field.
*/
'resources'?: (_envoy_api_v2_Resource)[];
/**
* Type URL for resources. Identifies the xDS API when muxing over ADS.
* Must be consistent with the type_url in the Any within 'resources' if 'resources' is non-empty.
*/
'type_url'?: (string);
/**
* The nonce provides a way for DeltaDiscoveryRequests to uniquely
* reference a DeltaDiscoveryResponse when (N)ACKing. The nonce is required.
*/
'nonce'?: (string);
/**
* Resources names of resources that have be deleted and to be removed from the xDS Client.
* Removed resources for missing resources can be ignored.
*/
'removed_resources'?: (string)[];
}
/**
* [#next-free-field: 7]
*/
export interface DeltaDiscoveryResponse__Output {
/**
* The version of the response data (used for debugging).
*/
'system_version_info': (string);
/**
* The response resources. These are typed resources, whose types must match
* the type_url field.
*/
'resources': (_envoy_api_v2_Resource__Output)[];
/**
* Type URL for resources. Identifies the xDS API when muxing over ADS.
* Must be consistent with the type_url in the Any within 'resources' if 'resources' is non-empty.
*/
'type_url': (string);
/**
* The nonce provides a way for DeltaDiscoveryRequests to uniquely
* reference a DeltaDiscoveryResponse when (N)ACKing. The nonce is required.
*/
'nonce': (string);
/**
* Resources names of resources that have be deleted and to be removed from the xDS Client.
* Removed resources for missing resources can be ignored.
*/
'removed_resources': (string)[];
}

View File

@ -0,0 +1,110 @@
// Original file: deps/envoy-api/envoy/api/v2/discovery.proto
import { Node as _envoy_api_v2_core_Node, Node__Output as _envoy_api_v2_core_Node__Output } from '../../../envoy/api/v2/core/Node';
import { Status as _google_rpc_Status, Status__Output as _google_rpc_Status__Output } from '../../../google/rpc/Status';
/**
* A DiscoveryRequest requests a set of versioned resources of the same type for
* a given Envoy node on some API.
* [#next-free-field: 7]
*/
export interface DiscoveryRequest {
/**
* The version_info provided in the request messages will be the version_info
* received with the most recent successfully processed response or empty on
* the first request. It is expected that no new request is sent after a
* response is received until the Envoy instance is ready to ACK/NACK the new
* configuration. ACK/NACK takes place by returning the new API config version
* as applied or the previous API config version respectively. Each type_url
* (see below) has an independent version associated with it.
*/
'version_info'?: (string);
/**
* The node making the request.
*/
'node'?: (_envoy_api_v2_core_Node);
/**
* List of resources to subscribe to, e.g. list of cluster names or a route
* configuration name. If this is empty, all resources for the API are
* returned. LDS/CDS may have empty resource_names, which will cause all
* resources for the Envoy instance to be returned. The LDS and CDS responses
* will then imply a number of resources that need to be fetched via EDS/RDS,
* which will be explicitly enumerated in resource_names.
*/
'resource_names'?: (string)[];
/**
* Type of the resource that is being requested, e.g.
* "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment". This is implicit
* in requests made via singleton xDS APIs such as CDS, LDS, etc. but is
* required for ADS.
*/
'type_url'?: (string);
/**
* nonce corresponding to DiscoveryResponse being ACK/NACKed. See above
* discussion on version_info and the DiscoveryResponse nonce comment. This
* may be empty only if 1) this is a non-persistent-stream xDS such as HTTP,
* or 2) the client has not yet accepted an update in this xDS stream (unlike
* delta, where it is populated only for new explicit ACKs).
*/
'response_nonce'?: (string);
/**
* This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_DiscoveryResponse>`
* failed to update configuration. The *message* field in *error_details* provides the Envoy
* internal exception related to the failure. It is only intended for consumption during manual
* debugging, the string provided is not guaranteed to be stable across Envoy versions.
*/
'error_detail'?: (_google_rpc_Status);
}
/**
* A DiscoveryRequest requests a set of versioned resources of the same type for
* a given Envoy node on some API.
* [#next-free-field: 7]
*/
export interface DiscoveryRequest__Output {
/**
* The version_info provided in the request messages will be the version_info
* received with the most recent successfully processed response or empty on
* the first request. It is expected that no new request is sent after a
* response is received until the Envoy instance is ready to ACK/NACK the new
* configuration. ACK/NACK takes place by returning the new API config version
* as applied or the previous API config version respectively. Each type_url
* (see below) has an independent version associated with it.
*/
'version_info': (string);
/**
* The node making the request.
*/
'node'?: (_envoy_api_v2_core_Node__Output);
/**
* List of resources to subscribe to, e.g. list of cluster names or a route
* configuration name. If this is empty, all resources for the API are
* returned. LDS/CDS may have empty resource_names, which will cause all
* resources for the Envoy instance to be returned. The LDS and CDS responses
* will then imply a number of resources that need to be fetched via EDS/RDS,
* which will be explicitly enumerated in resource_names.
*/
'resource_names': (string)[];
/**
* Type of the resource that is being requested, e.g.
* "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment". This is implicit
* in requests made via singleton xDS APIs such as CDS, LDS, etc. but is
* required for ADS.
*/
'type_url': (string);
/**
* nonce corresponding to DiscoveryResponse being ACK/NACKed. See above
* discussion on version_info and the DiscoveryResponse nonce comment. This
* may be empty only if 1) this is a non-persistent-stream xDS such as HTTP,
* or 2) the client has not yet accepted an update in this xDS stream (unlike
* delta, where it is populated only for new explicit ACKs).
*/
'response_nonce': (string);
/**
* This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_DiscoveryResponse>`
* failed to update configuration. The *message* field in *error_details* provides the Envoy
* internal exception related to the failure. It is only intended for consumption during manual
* debugging, the string provided is not guaranteed to be stable across Envoy versions.
*/
'error_detail'?: (_google_rpc_Status__Output);
}

View File

@ -0,0 +1,108 @@
// Original file: deps/envoy-api/envoy/api/v2/discovery.proto
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../google/protobuf/Any';
import { ControlPlane as _envoy_api_v2_core_ControlPlane, ControlPlane__Output as _envoy_api_v2_core_ControlPlane__Output } from '../../../envoy/api/v2/core/ControlPlane';
/**
* [#next-free-field: 7]
*/
export interface DiscoveryResponse {
/**
* The version of the response data.
*/
'version_info'?: (string);
/**
* The response resources. These resources are typed and depend on the API being called.
*/
'resources'?: (_google_protobuf_Any)[];
/**
* [#not-implemented-hide:]
* Canary is used to support two Envoy command line flags:
*
* * --terminate-on-canary-transition-failure. When set, Envoy is able to
* terminate if it detects that configuration is stuck at canary. Consider
* this example sequence of updates:
* - Management server applies a canary config successfully.
* - Management server rolls back to a production config.
* - Envoy rejects the new production config.
* Since there is no sensible way to continue receiving configuration
* updates, Envoy will then terminate and apply production config from a
* clean slate.
* * --dry-run-canary. When set, a canary response will never be applied, only
* validated via a dry run.
*/
'canary'?: (boolean);
/**
* Type URL for resources. Identifies the xDS API when muxing over ADS.
* Must be consistent with the type_url in the 'resources' repeated Any (if non-empty).
*/
'type_url'?: (string);
/**
* For gRPC based subscriptions, the nonce provides a way to explicitly ack a
* specific DiscoveryResponse in a following DiscoveryRequest. Additional
* messages may have been sent by Envoy to the management server for the
* previous version on the stream prior to this DiscoveryResponse, that were
* unprocessed at response send time. The nonce allows the management server
* to ignore any further DiscoveryRequests for the previous version until a
* DiscoveryRequest bearing the nonce. The nonce is optional and is not
* required for non-stream based xDS implementations.
*/
'nonce'?: (string);
/**
* [#not-implemented-hide:]
* The control plane instance that sent the response.
*/
'control_plane'?: (_envoy_api_v2_core_ControlPlane);
}
/**
* [#next-free-field: 7]
*/
export interface DiscoveryResponse__Output {
/**
* The version of the response data.
*/
'version_info': (string);
/**
* The response resources. These resources are typed and depend on the API being called.
*/
'resources': (_google_protobuf_Any__Output)[];
/**
* [#not-implemented-hide:]
* Canary is used to support two Envoy command line flags:
*
* * --terminate-on-canary-transition-failure. When set, Envoy is able to
* terminate if it detects that configuration is stuck at canary. Consider
* this example sequence of updates:
* - Management server applies a canary config successfully.
* - Management server rolls back to a production config.
* - Envoy rejects the new production config.
* Since there is no sensible way to continue receiving configuration
* updates, Envoy will then terminate and apply production config from a
* clean slate.
* * --dry-run-canary. When set, a canary response will never be applied, only
* validated via a dry run.
*/
'canary': (boolean);
/**
* Type URL for resources. Identifies the xDS API when muxing over ADS.
* Must be consistent with the type_url in the 'resources' repeated Any (if non-empty).
*/
'type_url': (string);
/**
* For gRPC based subscriptions, the nonce provides a way to explicitly ack a
* specific DiscoveryResponse in a following DiscoveryRequest. Additional
* messages may have been sent by Envoy to the management server for the
* previous version on the stream prior to this DiscoveryResponse, that were
* unprocessed at response send time. The nonce allows the management server
* to ignore any further DiscoveryRequests for the previous version until a
* DiscoveryRequest bearing the nonce. The nonce is optional and is not
* required for non-stream based xDS implementations.
*/
'nonce': (string);
/**
* [#not-implemented-hide:]
* The control plane instance that sent the response.
*/
'control_plane'?: (_envoy_api_v2_core_ControlPlane__Output);
}

View File

@ -0,0 +1,504 @@
// Original file: deps/envoy-api/envoy/api/v2/listener.proto
import { Address as _envoy_api_v2_core_Address, Address__Output as _envoy_api_v2_core_Address__Output } from '../../../envoy/api/v2/core/Address';
import { FilterChain as _envoy_api_v2_listener_FilterChain, FilterChain__Output as _envoy_api_v2_listener_FilterChain__Output } from '../../../envoy/api/v2/listener/FilterChain';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../google/protobuf/BoolValue';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../google/protobuf/UInt32Value';
import { Metadata as _envoy_api_v2_core_Metadata, Metadata__Output as _envoy_api_v2_core_Metadata__Output } from '../../../envoy/api/v2/core/Metadata';
import { ListenerFilter as _envoy_api_v2_listener_ListenerFilter, ListenerFilter__Output as _envoy_api_v2_listener_ListenerFilter__Output } from '../../../envoy/api/v2/listener/ListenerFilter';
import { SocketOption as _envoy_api_v2_core_SocketOption, SocketOption__Output as _envoy_api_v2_core_SocketOption__Output } from '../../../envoy/api/v2/core/SocketOption';
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../google/protobuf/Duration';
import { TrafficDirection as _envoy_api_v2_core_TrafficDirection } from '../../../envoy/api/v2/core/TrafficDirection';
import { UdpListenerConfig as _envoy_api_v2_listener_UdpListenerConfig, UdpListenerConfig__Output as _envoy_api_v2_listener_UdpListenerConfig__Output } from '../../../envoy/api/v2/listener/UdpListenerConfig';
import { ApiListener as _envoy_config_listener_v2_ApiListener, ApiListener__Output as _envoy_config_listener_v2_ApiListener__Output } from '../../../envoy/config/listener/v2/ApiListener';
import { AccessLog as _envoy_config_filter_accesslog_v2_AccessLog, AccessLog__Output as _envoy_config_filter_accesslog_v2_AccessLog__Output } from '../../../envoy/config/filter/accesslog/v2/AccessLog';
/**
* Configuration for listener connection balancing.
*/
export interface _envoy_api_v2_Listener_ConnectionBalanceConfig {
/**
* If specified, the listener will use the exact connection balancer.
*/
'exact_balance'?: (_envoy_api_v2_Listener_ConnectionBalanceConfig_ExactBalance);
'balance_type'?: "exact_balance";
}
/**
* Configuration for listener connection balancing.
*/
export interface _envoy_api_v2_Listener_ConnectionBalanceConfig__Output {
/**
* If specified, the listener will use the exact connection balancer.
*/
'exact_balance'?: (_envoy_api_v2_Listener_ConnectionBalanceConfig_ExactBalance__Output);
'balance_type': "exact_balance";
}
/**
* [#not-implemented-hide:]
*/
export interface _envoy_api_v2_Listener_DeprecatedV1 {
/**
* Whether the listener should bind to the port. A listener that doesn't
* bind can only receive connections redirected from other listeners that
* set use_original_dst parameter to true. Default is true.
*
* This is deprecated in v2, all Listeners will bind to their port. An
* additional filter chain must be created for every original destination
* port this listener may redirect to in v2, with the original port
* specified in the FilterChainMatch destination_port field.
*
* [#comment:TODO(PiotrSikora): Remove this once verified that we no longer need it.]
*/
'bind_to_port'?: (_google_protobuf_BoolValue);
}
/**
* [#not-implemented-hide:]
*/
export interface _envoy_api_v2_Listener_DeprecatedV1__Output {
/**
* Whether the listener should bind to the port. A listener that doesn't
* bind can only receive connections redirected from other listeners that
* set use_original_dst parameter to true. Default is true.
*
* This is deprecated in v2, all Listeners will bind to their port. An
* additional filter chain must be created for every original destination
* port this listener may redirect to in v2, with the original port
* specified in the FilterChainMatch destination_port field.
*
* [#comment:TODO(PiotrSikora): Remove this once verified that we no longer need it.]
*/
'bind_to_port'?: (_google_protobuf_BoolValue__Output);
}
// Original file: deps/envoy-api/envoy/api/v2/listener.proto
export enum _envoy_api_v2_Listener_DrainType {
/**
* Drain in response to calling /healthcheck/fail admin endpoint (along with the health check
* filter), listener removal/modification, and hot restart.
*/
DEFAULT = 0,
/**
* Drain in response to listener removal/modification and hot restart. This setting does not
* include /healthcheck/fail. This setting may be desirable if Envoy is hosting both ingress
* and egress listeners.
*/
MODIFY_ONLY = 1,
}
/**
* A connection balancer implementation that does exact balancing. This means that a lock is
* held during balancing so that connection counts are nearly exactly balanced between worker
* threads. This is "nearly" exact in the sense that a connection might close in parallel thus
* making the counts incorrect, but this should be rectified on the next accept. This balancer
* sacrifices accept throughput for accuracy and should be used when there are a small number of
* connections that rarely cycle (e.g., service mesh gRPC egress).
*/
export interface _envoy_api_v2_Listener_ConnectionBalanceConfig_ExactBalance {
}
/**
* A connection balancer implementation that does exact balancing. This means that a lock is
* held during balancing so that connection counts are nearly exactly balanced between worker
* threads. This is "nearly" exact in the sense that a connection might close in parallel thus
* making the counts incorrect, but this should be rectified on the next accept. This balancer
* sacrifices accept throughput for accuracy and should be used when there are a small number of
* connections that rarely cycle (e.g., service mesh gRPC egress).
*/
export interface _envoy_api_v2_Listener_ConnectionBalanceConfig_ExactBalance__Output {
}
/**
* [#next-free-field: 23]
*/
export interface Listener {
/**
* The unique name by which this listener is known. If no name is provided,
* Envoy will allocate an internal UUID for the listener. If the listener is to be dynamically
* updated or removed via :ref:`LDS <config_listeners_lds>` a unique name must be provided.
*/
'name'?: (string);
/**
* The address that the listener should listen on. In general, the address must be unique, though
* that is governed by the bind rules of the OS. E.g., multiple listeners can listen on port 0 on
* Linux as the actual port will be allocated by the OS.
*/
'address'?: (_envoy_api_v2_core_Address);
/**
* A list of filter chains to consider for this listener. The
* :ref:`FilterChain <envoy_api_msg_listener.FilterChain>` with the most specific
* :ref:`FilterChainMatch <envoy_api_msg_listener.FilterChainMatch>` criteria is used on a
* connection.
*
* Example using SNI for filter chain selection can be found in the
* :ref:`FAQ entry <faq_how_to_setup_sni>`.
*/
'filter_chains'?: (_envoy_api_v2_listener_FilterChain)[];
/**
* If a connection is redirected using *iptables*, the port on which the proxy
* receives it might be different from the original destination address. When this flag is set to
* true, the listener hands off redirected connections to the listener associated with the
* original destination address. If there is no listener associated with the original destination
* address, the connection is handled by the listener that receives it. Defaults to false.
*
* .. attention::
*
* This field is deprecated. Use :ref:`an original_dst <config_listener_filters_original_dst>`
* :ref:`listener filter <envoy_api_field_Listener.listener_filters>` instead.
*
* Note that hand off to another listener is *NOT* performed without this flag. Once
* :ref:`FilterChainMatch <envoy_api_msg_listener.FilterChainMatch>` is implemented this flag
* will be removed, as filter chain matching can be used to select a filter chain based on the
* restored destination address.
*/
'use_original_dst'?: (_google_protobuf_BoolValue);
/**
* Soft limit on size of the listeners new connection read and write buffers.
* If unspecified, an implementation defined default is applied (1MiB).
*/
'per_connection_buffer_limit_bytes'?: (_google_protobuf_UInt32Value);
/**
* Listener metadata.
*/
'metadata'?: (_envoy_api_v2_core_Metadata);
/**
* [#not-implemented-hide:]
*/
'deprecated_v1'?: (_envoy_api_v2_Listener_DeprecatedV1);
/**
* The type of draining to perform at a listener-wide level.
*/
'drain_type'?: (_envoy_api_v2_Listener_DrainType | keyof typeof _envoy_api_v2_Listener_DrainType);
/**
* Listener filters have the opportunity to manipulate and augment the connection metadata that
* is used in connection filter chain matching, for example. These filters are run before any in
* :ref:`filter_chains <envoy_api_field_Listener.filter_chains>`. Order matters as the
* filters are processed sequentially right after a socket has been accepted by the listener, and
* before a connection is created.
* UDP Listener filters can be specified when the protocol in the listener socket address in
* :ref:`protocol <envoy_api_field_core.SocketAddress.protocol>` is :ref:`UDP
* <envoy_api_enum_value_core.SocketAddress.Protocol.UDP>`.
* UDP listeners currently support a single filter.
*/
'listener_filters'?: (_envoy_api_v2_listener_ListenerFilter)[];
/**
* Whether the listener should be set as a transparent socket.
* When this flag is set to true, connections can be redirected to the listener using an
* *iptables* *TPROXY* target, in which case the original source and destination addresses and
* ports are preserved on accepted connections. This flag should be used in combination with
* :ref:`an original_dst <config_listener_filters_original_dst>` :ref:`listener filter
* <envoy_api_field_Listener.listener_filters>` to mark the connections' local addresses as
* "restored." This can be used to hand off each redirected connection to another listener
* associated with the connection's destination address. Direct connections to the socket without
* using *TPROXY* cannot be distinguished from connections redirected using *TPROXY* and are
* therefore treated as if they were redirected.
* When this flag is set to false, the listener's socket is explicitly reset as non-transparent.
* Setting this flag requires Envoy to run with the *CAP_NET_ADMIN* capability.
* When this flag is not set (default), the socket is not modified, i.e. the transparent option
* is neither set nor reset.
*/
'transparent'?: (_google_protobuf_BoolValue);
/**
* Whether the listener should set the *IP_FREEBIND* socket option. When this
* flag is set to true, listeners can be bound to an IP address that is not
* configured on the system running Envoy. When this flag is set to false, the
* option *IP_FREEBIND* is disabled on the socket. When this flag is not set
* (default), the socket is not modified, i.e. the option is neither enabled
* nor disabled.
*/
'freebind'?: (_google_protobuf_BoolValue);
/**
* Whether the listener should accept TCP Fast Open (TFO) connections.
* When this flag is set to a value greater than 0, the option TCP_FASTOPEN is enabled on
* the socket, with a queue length of the specified size
* (see `details in RFC7413 <https://tools.ietf.org/html/rfc7413#section-5.1>`_).
* When this flag is set to 0, the option TCP_FASTOPEN is disabled on the socket.
* When this flag is not set (default), the socket is not modified,
* i.e. the option is neither enabled nor disabled.
*
* On Linux, the net.ipv4.tcp_fastopen kernel parameter must include flag 0x2 to enable
* TCP_FASTOPEN.
* See `ip-sysctl.txt <https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt>`_.
*
* On macOS, only values of 0, 1, and unset are valid; other values may result in an error.
* To set the queue length on macOS, set the net.inet.tcp.fastopen_backlog kernel parameter.
*/
'tcp_fast_open_queue_length'?: (_google_protobuf_UInt32Value);
/**
* Additional socket options that may not be present in Envoy source code or
* precompiled binaries.
*/
'socket_options'?: (_envoy_api_v2_core_SocketOption)[];
/**
* The timeout to wait for all listener filters to complete operation. If the timeout is reached,
* the accepted socket is closed without a connection being created unless
* `continue_on_listener_filters_timeout` is set to true. Specify 0 to disable the
* timeout. If not specified, a default timeout of 15s is used.
*/
'listener_filters_timeout'?: (_google_protobuf_Duration);
/**
* Specifies the intended direction of the traffic relative to the local Envoy.
*/
'traffic_direction'?: (_envoy_api_v2_core_TrafficDirection | keyof typeof _envoy_api_v2_core_TrafficDirection);
/**
* Whether a connection should be created when listener filters timeout. Default is false.
*
* .. attention::
*
* Some listener filters, such as :ref:`Proxy Protocol filter
* <config_listener_filters_proxy_protocol>`, should not be used with this option. It will cause
* unexpected behavior when a connection is created.
*/
'continue_on_listener_filters_timeout'?: (boolean);
/**
* If the protocol in the listener socket address in :ref:`protocol
* <envoy_api_field_core.SocketAddress.protocol>` is :ref:`UDP
* <envoy_api_enum_value_core.SocketAddress.Protocol.UDP>`, this field specifies the actual udp
* listener to create, i.e. :ref:`udp_listener_name
* <envoy_api_field_listener.UdpListenerConfig.udp_listener_name>` = "raw_udp_listener" for
* creating a packet-oriented UDP listener. If not present, treat it as "raw_udp_listener".
*/
'udp_listener_config'?: (_envoy_api_v2_listener_UdpListenerConfig);
/**
* Used to represent an API listener, which is used in non-proxy clients. The type of API
* exposed to the non-proxy application depends on the type of API listener.
* When this field is set, no other field except for :ref:`name<envoy_api_field_Listener.name>`
* should be set.
*
* .. note::
*
* Currently only one ApiListener can be installed; and it can only be done via bootstrap config,
* not LDS.
*
* [#next-major-version: In the v3 API, instead of this messy approach where the socket
* listener fields are directly in the top-level Listener message and the API listener types
* are in the ApiListener message, the socket listener messages should be in their own message,
* and the top-level Listener should essentially be a oneof that selects between the
* socket listener and the various types of API listener. That way, a given Listener message
* can structurally only contain the fields of the relevant type.]
*/
'api_listener'?: (_envoy_config_listener_v2_ApiListener);
/**
* The listener's connection balancer configuration, currently only applicable to TCP listeners.
* If no configuration is specified, Envoy will not attempt to balance active connections between
* worker threads.
*/
'connection_balance_config'?: (_envoy_api_v2_Listener_ConnectionBalanceConfig);
/**
* When this flag is set to true, listeners set the *SO_REUSEPORT* socket option and
* create one socket for each worker thread. This makes inbound connections
* distribute among worker threads roughly evenly in cases where there are a high number
* of connections. When this flag is set to false, all worker threads share one socket.
*
* Before Linux v4.19-rc1, new TCP connections may be rejected during hot restart
* (see `3rd paragraph in 'soreuseport' commit message
* <https://github.com/torvalds/linux/commit/c617f398edd4db2b8567a28e89>`_).
* This issue was fixed by `tcp: Avoid TCP syncookie rejected by SO_REUSEPORT socket
* <https://github.com/torvalds/linux/commit/40a1227ea845a37ab197dd1caffb60b047fa36b1>`_.
*/
'reuse_port'?: (boolean);
/**
* Configuration for :ref:`access logs <arch_overview_access_logs>`
* emitted by this listener.
*/
'access_log'?: (_envoy_config_filter_accesslog_v2_AccessLog)[];
}
/**
* [#next-free-field: 23]
*/
export interface Listener__Output {
/**
* The unique name by which this listener is known. If no name is provided,
* Envoy will allocate an internal UUID for the listener. If the listener is to be dynamically
* updated or removed via :ref:`LDS <config_listeners_lds>` a unique name must be provided.
*/
'name': (string);
/**
* The address that the listener should listen on. In general, the address must be unique, though
* that is governed by the bind rules of the OS. E.g., multiple listeners can listen on port 0 on
* Linux as the actual port will be allocated by the OS.
*/
'address'?: (_envoy_api_v2_core_Address__Output);
/**
* A list of filter chains to consider for this listener. The
* :ref:`FilterChain <envoy_api_msg_listener.FilterChain>` with the most specific
* :ref:`FilterChainMatch <envoy_api_msg_listener.FilterChainMatch>` criteria is used on a
* connection.
*
* Example using SNI for filter chain selection can be found in the
* :ref:`FAQ entry <faq_how_to_setup_sni>`.
*/
'filter_chains': (_envoy_api_v2_listener_FilterChain__Output)[];
/**
* If a connection is redirected using *iptables*, the port on which the proxy
* receives it might be different from the original destination address. When this flag is set to
* true, the listener hands off redirected connections to the listener associated with the
* original destination address. If there is no listener associated with the original destination
* address, the connection is handled by the listener that receives it. Defaults to false.
*
* .. attention::
*
* This field is deprecated. Use :ref:`an original_dst <config_listener_filters_original_dst>`
* :ref:`listener filter <envoy_api_field_Listener.listener_filters>` instead.
*
* Note that hand off to another listener is *NOT* performed without this flag. Once
* :ref:`FilterChainMatch <envoy_api_msg_listener.FilterChainMatch>` is implemented this flag
* will be removed, as filter chain matching can be used to select a filter chain based on the
* restored destination address.
*/
'use_original_dst'?: (_google_protobuf_BoolValue__Output);
/**
* Soft limit on size of the listeners new connection read and write buffers.
* If unspecified, an implementation defined default is applied (1MiB).
*/
'per_connection_buffer_limit_bytes'?: (_google_protobuf_UInt32Value__Output);
/**
* Listener metadata.
*/
'metadata'?: (_envoy_api_v2_core_Metadata__Output);
/**
* [#not-implemented-hide:]
*/
'deprecated_v1'?: (_envoy_api_v2_Listener_DeprecatedV1__Output);
/**
* The type of draining to perform at a listener-wide level.
*/
'drain_type': (keyof typeof _envoy_api_v2_Listener_DrainType);
/**
* Listener filters have the opportunity to manipulate and augment the connection metadata that
* is used in connection filter chain matching, for example. These filters are run before any in
* :ref:`filter_chains <envoy_api_field_Listener.filter_chains>`. Order matters as the
* filters are processed sequentially right after a socket has been accepted by the listener, and
* before a connection is created.
* UDP Listener filters can be specified when the protocol in the listener socket address in
* :ref:`protocol <envoy_api_field_core.SocketAddress.protocol>` is :ref:`UDP
* <envoy_api_enum_value_core.SocketAddress.Protocol.UDP>`.
* UDP listeners currently support a single filter.
*/
'listener_filters': (_envoy_api_v2_listener_ListenerFilter__Output)[];
/**
* Whether the listener should be set as a transparent socket.
* When this flag is set to true, connections can be redirected to the listener using an
* *iptables* *TPROXY* target, in which case the original source and destination addresses and
* ports are preserved on accepted connections. This flag should be used in combination with
* :ref:`an original_dst <config_listener_filters_original_dst>` :ref:`listener filter
* <envoy_api_field_Listener.listener_filters>` to mark the connections' local addresses as
* "restored." This can be used to hand off each redirected connection to another listener
* associated with the connection's destination address. Direct connections to the socket without
* using *TPROXY* cannot be distinguished from connections redirected using *TPROXY* and are
* therefore treated as if they were redirected.
* When this flag is set to false, the listener's socket is explicitly reset as non-transparent.
* Setting this flag requires Envoy to run with the *CAP_NET_ADMIN* capability.
* When this flag is not set (default), the socket is not modified, i.e. the transparent option
* is neither set nor reset.
*/
'transparent'?: (_google_protobuf_BoolValue__Output);
/**
* Whether the listener should set the *IP_FREEBIND* socket option. When this
* flag is set to true, listeners can be bound to an IP address that is not
* configured on the system running Envoy. When this flag is set to false, the
* option *IP_FREEBIND* is disabled on the socket. When this flag is not set
* (default), the socket is not modified, i.e. the option is neither enabled
* nor disabled.
*/
'freebind'?: (_google_protobuf_BoolValue__Output);
/**
* Whether the listener should accept TCP Fast Open (TFO) connections.
* When this flag is set to a value greater than 0, the option TCP_FASTOPEN is enabled on
* the socket, with a queue length of the specified size
* (see `details in RFC7413 <https://tools.ietf.org/html/rfc7413#section-5.1>`_).
* When this flag is set to 0, the option TCP_FASTOPEN is disabled on the socket.
* When this flag is not set (default), the socket is not modified,
* i.e. the option is neither enabled nor disabled.
*
* On Linux, the net.ipv4.tcp_fastopen kernel parameter must include flag 0x2 to enable
* TCP_FASTOPEN.
* See `ip-sysctl.txt <https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt>`_.
*
* On macOS, only values of 0, 1, and unset are valid; other values may result in an error.
* To set the queue length on macOS, set the net.inet.tcp.fastopen_backlog kernel parameter.
*/
'tcp_fast_open_queue_length'?: (_google_protobuf_UInt32Value__Output);
/**
* Additional socket options that may not be present in Envoy source code or
* precompiled binaries.
*/
'socket_options': (_envoy_api_v2_core_SocketOption__Output)[];
/**
* The timeout to wait for all listener filters to complete operation. If the timeout is reached,
* the accepted socket is closed without a connection being created unless
* `continue_on_listener_filters_timeout` is set to true. Specify 0 to disable the
* timeout. If not specified, a default timeout of 15s is used.
*/
'listener_filters_timeout'?: (_google_protobuf_Duration__Output);
/**
* Specifies the intended direction of the traffic relative to the local Envoy.
*/
'traffic_direction': (keyof typeof _envoy_api_v2_core_TrafficDirection);
/**
* Whether a connection should be created when listener filters timeout. Default is false.
*
* .. attention::
*
* Some listener filters, such as :ref:`Proxy Protocol filter
* <config_listener_filters_proxy_protocol>`, should not be used with this option. It will cause
* unexpected behavior when a connection is created.
*/
'continue_on_listener_filters_timeout': (boolean);
/**
* If the protocol in the listener socket address in :ref:`protocol
* <envoy_api_field_core.SocketAddress.protocol>` is :ref:`UDP
* <envoy_api_enum_value_core.SocketAddress.Protocol.UDP>`, this field specifies the actual udp
* listener to create, i.e. :ref:`udp_listener_name
* <envoy_api_field_listener.UdpListenerConfig.udp_listener_name>` = "raw_udp_listener" for
* creating a packet-oriented UDP listener. If not present, treat it as "raw_udp_listener".
*/
'udp_listener_config'?: (_envoy_api_v2_listener_UdpListenerConfig__Output);
/**
* Used to represent an API listener, which is used in non-proxy clients. The type of API
* exposed to the non-proxy application depends on the type of API listener.
* When this field is set, no other field except for :ref:`name<envoy_api_field_Listener.name>`
* should be set.
*
* .. note::
*
* Currently only one ApiListener can be installed; and it can only be done via bootstrap config,
* not LDS.
*
* [#next-major-version: In the v3 API, instead of this messy approach where the socket
* listener fields are directly in the top-level Listener message and the API listener types
* are in the ApiListener message, the socket listener messages should be in their own message,
* and the top-level Listener should essentially be a oneof that selects between the
* socket listener and the various types of API listener. That way, a given Listener message
* can structurally only contain the fields of the relevant type.]
*/
'api_listener'?: (_envoy_config_listener_v2_ApiListener__Output);
/**
* The listener's connection balancer configuration, currently only applicable to TCP listeners.
* If no configuration is specified, Envoy will not attempt to balance active connections between
* worker threads.
*/
'connection_balance_config'?: (_envoy_api_v2_Listener_ConnectionBalanceConfig__Output);
/**
* When this flag is set to true, listeners set the *SO_REUSEPORT* socket option and
* create one socket for each worker thread. This makes inbound connections
* distribute among worker threads roughly evenly in cases where there are a high number
* of connections. When this flag is set to false, all worker threads share one socket.
*
* Before Linux v4.19-rc1, new TCP connections may be rejected during hot restart
* (see `3rd paragraph in 'soreuseport' commit message
* <https://github.com/torvalds/linux/commit/c617f398edd4db2b8567a28e89>`_).
* This issue was fixed by `tcp: Avoid TCP syncookie rejected by SO_REUSEPORT socket
* <https://github.com/torvalds/linux/commit/40a1227ea845a37ab197dd1caffb60b047fa36b1>`_.
*/
'reuse_port': (boolean);
/**
* Configuration for :ref:`access logs <arch_overview_access_logs>`
* emitted by this listener.
*/
'access_log': (_envoy_config_filter_accesslog_v2_AccessLog__Output)[];
}

View File

@ -0,0 +1,90 @@
// Original file: deps/envoy-api/envoy/api/v2/cluster.proto
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../google/protobuf/Struct';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../google/protobuf/Any';
export interface _envoy_api_v2_LoadBalancingPolicy_Policy {
/**
* Required. The name of the LB policy.
*/
'name'?: (string);
/**
* Optional config for the LB policy.
* No more than one of these two fields may be populated.
*/
'config'?: (_google_protobuf_Struct);
'typed_config'?: (_google_protobuf_Any);
}
export interface _envoy_api_v2_LoadBalancingPolicy_Policy__Output {
/**
* Required. The name of the LB policy.
*/
'name': (string);
/**
* Optional config for the LB policy.
* No more than one of these two fields may be populated.
*/
'config'?: (_google_protobuf_Struct__Output);
'typed_config'?: (_google_protobuf_Any__Output);
}
/**
* [#not-implemented-hide:] Extensible load balancing policy configuration.
*
* Every LB policy defined via this mechanism will be identified via a unique name using reverse
* DNS notation. If the policy needs configuration parameters, it must define a message for its
* own configuration, which will be stored in the config field. The name of the policy will tell
* clients which type of message they should expect to see in the config field.
*
* Note that there are cases where it is useful to be able to independently select LB policies
* for choosing a locality and for choosing an endpoint within that locality. For example, a
* given deployment may always use the same policy to choose the locality, but for choosing the
* endpoint within the locality, some clusters may use weighted-round-robin, while others may
* use some sort of session-based balancing.
*
* This can be accomplished via hierarchical LB policies, where the parent LB policy creates a
* child LB policy for each locality. For each request, the parent chooses the locality and then
* delegates to the child policy for that locality to choose the endpoint within the locality.
*
* To facilitate this, the config message for the top-level LB policy may include a field of
* type LoadBalancingPolicy that specifies the child policy.
*/
export interface LoadBalancingPolicy {
/**
* Each client will iterate over the list in order and stop at the first policy that it
* supports. This provides a mechanism for starting to use new LB policies that are not yet
* supported by all clients.
*/
'policies'?: (_envoy_api_v2_LoadBalancingPolicy_Policy)[];
}
/**
* [#not-implemented-hide:] Extensible load balancing policy configuration.
*
* Every LB policy defined via this mechanism will be identified via a unique name using reverse
* DNS notation. If the policy needs configuration parameters, it must define a message for its
* own configuration, which will be stored in the config field. The name of the policy will tell
* clients which type of message they should expect to see in the config field.
*
* Note that there are cases where it is useful to be able to independently select LB policies
* for choosing a locality and for choosing an endpoint within that locality. For example, a
* given deployment may always use the same policy to choose the locality, but for choosing the
* endpoint within the locality, some clusters may use weighted-round-robin, while others may
* use some sort of session-based balancing.
*
* This can be accomplished via hierarchical LB policies, where the parent LB policy creates a
* child LB policy for each locality. For each request, the parent chooses the locality and then
* delegates to the child policy for that locality to choose the endpoint within the locality.
*
* To facilitate this, the config message for the top-level LB policy may include a field of
* type LoadBalancingPolicy that specifies the child policy.
*/
export interface LoadBalancingPolicy__Output {
/**
* Each client will iterate over the list in order and stop at the first policy that it
* supports. This provides a mechanism for starting to use new LB policies that are not yet
* supported by all clients.
*/
'policies': (_envoy_api_v2_LoadBalancingPolicy_Policy__Output)[];
}

View File

@ -0,0 +1,43 @@
// Original file: deps/envoy-api/envoy/api/v2/discovery.proto
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../google/protobuf/Any';
export interface Resource {
/**
* The resource level version. It allows xDS to track the state of individual
* resources.
*/
'version'?: (string);
/**
* The resource being tracked.
*/
'resource'?: (_google_protobuf_Any);
/**
* The resource's name, to distinguish it from others of the same type of resource.
*/
'name'?: (string);
/**
* The aliases are a list of other names that this resource can go by.
*/
'aliases'?: (string)[];
}
export interface Resource__Output {
/**
* The resource level version. It allows xDS to track the state of individual
* resources.
*/
'version': (string);
/**
* The resource being tracked.
*/
'resource'?: (_google_protobuf_Any__Output);
/**
* The resource's name, to distinguish it from others of the same type of resource.
*/
'name': (string);
/**
* The aliases are a list of other names that this resource can go by.
*/
'aliases': (string)[];
}

View File

@ -0,0 +1,186 @@
// Original file: deps/envoy-api/envoy/api/v2/route.proto
import { VirtualHost as _envoy_api_v2_route_VirtualHost, VirtualHost__Output as _envoy_api_v2_route_VirtualHost__Output } from '../../../envoy/api/v2/route/VirtualHost';
import { HeaderValueOption as _envoy_api_v2_core_HeaderValueOption, HeaderValueOption__Output as _envoy_api_v2_core_HeaderValueOption__Output } from '../../../envoy/api/v2/core/HeaderValueOption';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../google/protobuf/BoolValue';
import { Vhds as _envoy_api_v2_Vhds, Vhds__Output as _envoy_api_v2_Vhds__Output } from '../../../envoy/api/v2/Vhds';
/**
* [#next-free-field: 11]
*/
export interface RouteConfiguration {
/**
* The name of the route configuration. For example, it might match
* :ref:`route_config_name
* <envoy_api_field_config.filter.network.http_connection_manager.v2.Rds.route_config_name>` in
* :ref:`envoy_api_msg_config.filter.network.http_connection_manager.v2.Rds`.
*/
'name'?: (string);
/**
* An array of virtual hosts that make up the route table.
*/
'virtual_hosts'?: (_envoy_api_v2_route_VirtualHost)[];
/**
* Optionally specifies a list of HTTP headers that the connection manager
* will consider to be internal only. If they are found on external requests they will be cleaned
* prior to filter invocation. See :ref:`config_http_conn_man_headers_x-envoy-internal` for more
* information.
*/
'internal_only_headers'?: (string)[];
/**
* Specifies a list of HTTP headers that should be added to each response that
* the connection manager encodes. Headers specified at this level are applied
* after headers from any enclosed :ref:`envoy_api_msg_route.VirtualHost` or
* :ref:`envoy_api_msg_route.RouteAction`. 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>`.
*/
'response_headers_to_add'?: (_envoy_api_v2_core_HeaderValueOption)[];
/**
* Specifies a list of HTTP headers that should be removed from each response
* that the connection manager encodes.
*/
'response_headers_to_remove'?: (string)[];
/**
* Specifies a list of HTTP headers that should be added to each request
* routed by the HTTP connection manager. Headers specified at this level are
* applied after headers from any enclosed :ref:`envoy_api_msg_route.VirtualHost` or
* :ref:`envoy_api_msg_route.RouteAction`. 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>`.
*/
'request_headers_to_add'?: (_envoy_api_v2_core_HeaderValueOption)[];
/**
* An optional boolean that specifies whether the clusters that the route
* table refers to will be validated by the cluster manager. If set to true
* and a route refers to a non-existent cluster, the route table will not
* load. If set to false and a route refers to a non-existent cluster, the
* route table will load and the router filter will return a 404 if the route
* is selected at runtime. This setting defaults to true if the route table
* is statically defined via the :ref:`route_config
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.route_config>`
* option. This setting default to false if the route table is loaded dynamically via the
* :ref:`rds
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.rds>`
* option. Users may wish to override the default behavior in certain cases (for example when
* using CDS with a static route table).
*/
'validate_clusters'?: (_google_protobuf_BoolValue);
/**
* Specifies a list of HTTP headers that should be removed from each request
* routed by the HTTP connection manager.
*/
'request_headers_to_remove'?: (string)[];
/**
* An array of virtual hosts will be dynamically loaded via the VHDS API.
* Both *virtual_hosts* and *vhds* fields will be used when present. *virtual_hosts* can be used
* for a base routing table or for infrequently changing virtual hosts. *vhds* is used for
* on-demand discovery of virtual hosts. The contents of these two fields will be merged to
* generate a routing table for a given RouteConfiguration, with *vhds* derived configuration
* taking precedence.
*/
'vhds'?: (_envoy_api_v2_Vhds);
/**
* By default, headers that should be added/removed are evaluated from most to least specific:
*
* * route level
* * virtual host level
* * connection manager level
*
* To allow setting overrides at the route or virtual host level, this order can be reversed
* by setting this option to true. Defaults to false.
*
* [#next-major-version: In the v3 API, this will default to true.]
*/
'most_specific_header_mutations_wins'?: (boolean);
}
/**
* [#next-free-field: 11]
*/
export interface RouteConfiguration__Output {
/**
* The name of the route configuration. For example, it might match
* :ref:`route_config_name
* <envoy_api_field_config.filter.network.http_connection_manager.v2.Rds.route_config_name>` in
* :ref:`envoy_api_msg_config.filter.network.http_connection_manager.v2.Rds`.
*/
'name': (string);
/**
* An array of virtual hosts that make up the route table.
*/
'virtual_hosts': (_envoy_api_v2_route_VirtualHost__Output)[];
/**
* Optionally specifies a list of HTTP headers that the connection manager
* will consider to be internal only. If they are found on external requests they will be cleaned
* prior to filter invocation. See :ref:`config_http_conn_man_headers_x-envoy-internal` for more
* information.
*/
'internal_only_headers': (string)[];
/**
* Specifies a list of HTTP headers that should be added to each response that
* the connection manager encodes. Headers specified at this level are applied
* after headers from any enclosed :ref:`envoy_api_msg_route.VirtualHost` or
* :ref:`envoy_api_msg_route.RouteAction`. 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>`.
*/
'response_headers_to_add': (_envoy_api_v2_core_HeaderValueOption__Output)[];
/**
* Specifies a list of HTTP headers that should be removed from each response
* that the connection manager encodes.
*/
'response_headers_to_remove': (string)[];
/**
* Specifies a list of HTTP headers that should be added to each request
* routed by the HTTP connection manager. Headers specified at this level are
* applied after headers from any enclosed :ref:`envoy_api_msg_route.VirtualHost` or
* :ref:`envoy_api_msg_route.RouteAction`. 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>`.
*/
'request_headers_to_add': (_envoy_api_v2_core_HeaderValueOption__Output)[];
/**
* An optional boolean that specifies whether the clusters that the route
* table refers to will be validated by the cluster manager. If set to true
* and a route refers to a non-existent cluster, the route table will not
* load. If set to false and a route refers to a non-existent cluster, the
* route table will load and the router filter will return a 404 if the route
* is selected at runtime. This setting defaults to true if the route table
* is statically defined via the :ref:`route_config
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.route_config>`
* option. This setting default to false if the route table is loaded dynamically via the
* :ref:`rds
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.rds>`
* option. Users may wish to override the default behavior in certain cases (for example when
* using CDS with a static route table).
*/
'validate_clusters'?: (_google_protobuf_BoolValue__Output);
/**
* Specifies a list of HTTP headers that should be removed from each request
* routed by the HTTP connection manager.
*/
'request_headers_to_remove': (string)[];
/**
* An array of virtual hosts will be dynamically loaded via the VHDS API.
* Both *virtual_hosts* and *vhds* fields will be used when present. *virtual_hosts* can be used
* for a base routing table or for infrequently changing virtual hosts. *vhds* is used for
* on-demand discovery of virtual hosts. The contents of these two fields will be merged to
* generate a routing table for a given RouteConfiguration, with *vhds* derived configuration
* taking precedence.
*/
'vhds'?: (_envoy_api_v2_Vhds__Output);
/**
* By default, headers that should be added/removed are evaluated from most to least specific:
*
* * route level
* * virtual host level
* * connection manager level
*
* To allow setting overrides at the route or virtual host level, this order can be reversed
* by setting this option to true. Defaults to false.
*
* [#next-major-version: In the v3 API, this will default to true.]
*/
'most_specific_header_mutations_wins': (boolean);
}

View File

@ -0,0 +1,25 @@
// Original file: deps/envoy-api/envoy/api/v2/cluster.proto
import { Address as _envoy_api_v2_core_Address, Address__Output as _envoy_api_v2_core_Address__Output } from '../../../envoy/api/v2/core/Address';
/**
* An extensible structure containing the address Envoy should bind to when
* establishing upstream connections.
*/
export interface UpstreamBindConfig {
/**
* The address Envoy should bind to when establishing upstream connections.
*/
'source_address'?: (_envoy_api_v2_core_Address);
}
/**
* An extensible structure containing the address Envoy should bind to when
* establishing upstream connections.
*/
export interface UpstreamBindConfig__Output {
/**
* The address Envoy should bind to when establishing upstream connections.
*/
'source_address'?: (_envoy_api_v2_core_Address__Output);
}

View File

@ -0,0 +1,17 @@
// Original file: deps/envoy-api/envoy/api/v2/cluster.proto
import { TcpKeepalive as _envoy_api_v2_core_TcpKeepalive, TcpKeepalive__Output as _envoy_api_v2_core_TcpKeepalive__Output } from '../../../envoy/api/v2/core/TcpKeepalive';
export interface UpstreamConnectionOptions {
/**
* If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.
*/
'tcp_keepalive'?: (_envoy_api_v2_core_TcpKeepalive);
}
export interface UpstreamConnectionOptions__Output {
/**
* If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.
*/
'tcp_keepalive'?: (_envoy_api_v2_core_TcpKeepalive__Output);
}

View File

@ -0,0 +1,17 @@
// Original file: deps/envoy-api/envoy/api/v2/route.proto
import { ConfigSource as _envoy_api_v2_core_ConfigSource, ConfigSource__Output as _envoy_api_v2_core_ConfigSource__Output } from '../../../envoy/api/v2/core/ConfigSource';
export interface Vhds {
/**
* Configuration source specifier for VHDS.
*/
'config_source'?: (_envoy_api_v2_core_ConfigSource);
}
export interface Vhds__Output {
/**
* Configuration source specifier for VHDS.
*/
'config_source'?: (_envoy_api_v2_core_ConfigSource__Output);
}

View File

@ -0,0 +1,315 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/common.proto
import { DataSource as _envoy_api_v2_core_DataSource, DataSource__Output as _envoy_api_v2_core_DataSource__Output } from '../../../../envoy/api/v2/core/DataSource';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
import { StringMatcher as _envoy_type_matcher_StringMatcher, StringMatcher__Output as _envoy_type_matcher_StringMatcher__Output } from '../../../../envoy/type/matcher/StringMatcher';
// Original file: deps/envoy-api/envoy/api/v2/auth/common.proto
/**
* Peer certificate verification mode.
*/
export enum _envoy_api_v2_auth_CertificateValidationContext_TrustChainVerification {
/**
* Perform default certificate verification (e.g., against CA / verification lists)
*/
VERIFY_TRUST_CHAIN = 0,
/**
* Connections where the certificate fails verification will be permitted.
* For HTTP connections, the result of certificate verification can be used in route matching. (
* see :ref:`validated <envoy_api_field_route.RouteMatch.TlsContextMatchOptions.validated>` ).
*/
ACCEPT_UNTRUSTED = 1,
}
/**
* [#next-free-field: 11]
*/
export interface CertificateValidationContext {
/**
* TLS certificate data containing certificate authority certificates to use in verifying
* a presented peer certificate (e.g. server certificate for clusters or client certificate
* for listeners). If not specified and a peer certificate is presented it will not be
* verified. By default, a client certificate is optional, unless one of the additional
* options (:ref:`require_client_certificate
* <envoy_api_field_auth.DownstreamTlsContext.require_client_certificate>`,
* :ref:`verify_certificate_spki
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_spki>`,
* :ref:`verify_certificate_hash
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>`, or
* :ref:`match_subject_alt_names
* <envoy_api_field_auth.CertificateValidationContext.match_subject_alt_names>`) is also
* specified.
*
* It can optionally contain certificate revocation lists, in which case Envoy will verify
* that the presented peer certificate has not been revoked by one of the included CRLs.
*
* See :ref:`the TLS overview <arch_overview_ssl_enabling_verification>` for a list of common
* system CA locations.
*/
'trusted_ca'?: (_envoy_api_v2_core_DataSource);
/**
* An optional list of hex-encoded SHA-256 hashes. If specified, Envoy will verify that
* the SHA-256 of the DER-encoded presented certificate matches one of the specified values.
*
* A hex-encoded SHA-256 of the certificate can be generated with the following command:
*
* .. code-block:: bash
*
* $ openssl x509 -in path/to/client.crt -outform DER | openssl dgst -sha256 | cut -d" " -f2
* df6ff72fe9116521268f6f2dd4966f51df479883fe7037b39f75916ac3049d1a
*
* A long hex-encoded and colon-separated SHA-256 (a.k.a. "fingerprint") of the certificate
* can be generated with the following command:
*
* .. code-block:: bash
*
* $ openssl x509 -in path/to/client.crt -noout -fingerprint -sha256 | cut -d"=" -f2
* DF:6F:F7:2F:E9:11:65:21:26:8F:6F:2D:D4:96:6F:51:DF:47:98:83:FE:70:37:B3:9F:75:91:6A:C3:04:9D:1A
*
* Both of those formats are acceptable.
*
* When both:
* :ref:`verify_certificate_hash
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>` and
* :ref:`verify_certificate_spki
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_spki>` are specified,
* a hash matching value from either of the lists will result in the certificate being accepted.
*/
'verify_certificate_hash'?: (string)[];
/**
* An optional list of base64-encoded SHA-256 hashes. If specified, Envoy will verify that the
* SHA-256 of the DER-encoded Subject Public Key Information (SPKI) of the presented certificate
* matches one of the specified values.
*
* A base64-encoded SHA-256 of the Subject Public Key Information (SPKI) of the certificate
* can be generated with the following command:
*
* .. code-block:: bash
*
* $ openssl x509 -in path/to/client.crt -noout -pubkey
* | openssl pkey -pubin -outform DER
* | openssl dgst -sha256 -binary
* | openssl enc -base64
* NvqYIYSbgK2vCJpQhObf77vv+bQWtc5ek5RIOwPiC9A=
*
* This is the format used in HTTP Public Key Pinning.
*
* When both:
* :ref:`verify_certificate_hash
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>` and
* :ref:`verify_certificate_spki
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_spki>` are specified,
* a hash matching value from either of the lists will result in the certificate being accepted.
*
* .. attention::
*
* This option is preferred over :ref:`verify_certificate_hash
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>`,
* because SPKI is tied to a private key, so it doesn't change when the certificate
* is renewed using the same private key.
*/
'verify_certificate_spki'?: (string)[];
/**
* An optional list of Subject Alternative Names. If specified, Envoy will verify that the
* Subject Alternative Name of the presented certificate matches one of the specified values.
*
* .. attention::
*
* Subject Alternative Names are easily spoofable and verifying only them is insecure,
* therefore this option must be used together with :ref:`trusted_ca
* <envoy_api_field_auth.CertificateValidationContext.trusted_ca>`.
*/
'verify_subject_alt_name'?: (string)[];
/**
* [#not-implemented-hide:] Must present a signed time-stamped OCSP response.
*/
'require_ocsp_staple'?: (_google_protobuf_BoolValue);
/**
* [#not-implemented-hide:] Must present signed certificate time-stamp.
*/
'require_signed_certificate_timestamp'?: (_google_protobuf_BoolValue);
/**
* An optional `certificate revocation list
* <https://en.wikipedia.org/wiki/Certificate_revocation_list>`_
* (in PEM format). If specified, Envoy will verify that the presented peer
* certificate has not been revoked by this CRL. If this DataSource contains
* multiple CRLs, all of them will be used.
*/
'crl'?: (_envoy_api_v2_core_DataSource);
/**
* If specified, Envoy will not reject expired certificates.
*/
'allow_expired_certificate'?: (boolean);
/**
* An optional list of Subject Alternative name matchers. Envoy will verify that the
* Subject Alternative Name of the presented certificate matches one of the specified matches.
*
* When a certificate has wildcard DNS SAN entries, to match a specific client, it should be
* configured with exact match type in the :ref:`string matcher <envoy_api_msg_type.matcher.StringMatcher>`.
* For example if the certificate has "\*.example.com" as DNS SAN entry, to allow only "api.example.com",
* it should be configured as shown below.
*
* .. code-block:: yaml
*
* match_subject_alt_names:
* exact: "api.example.com"
*
* .. attention::
*
* Subject Alternative Names are easily spoofable and verifying only them is insecure,
* therefore this option must be used together with :ref:`trusted_ca
* <envoy_api_field_auth.CertificateValidationContext.trusted_ca>`.
*/
'match_subject_alt_names'?: (_envoy_type_matcher_StringMatcher)[];
/**
* Certificate trust chain verification mode.
*/
'trust_chain_verification'?: (_envoy_api_v2_auth_CertificateValidationContext_TrustChainVerification | keyof typeof _envoy_api_v2_auth_CertificateValidationContext_TrustChainVerification);
}
/**
* [#next-free-field: 11]
*/
export interface CertificateValidationContext__Output {
/**
* TLS certificate data containing certificate authority certificates to use in verifying
* a presented peer certificate (e.g. server certificate for clusters or client certificate
* for listeners). If not specified and a peer certificate is presented it will not be
* verified. By default, a client certificate is optional, unless one of the additional
* options (:ref:`require_client_certificate
* <envoy_api_field_auth.DownstreamTlsContext.require_client_certificate>`,
* :ref:`verify_certificate_spki
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_spki>`,
* :ref:`verify_certificate_hash
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>`, or
* :ref:`match_subject_alt_names
* <envoy_api_field_auth.CertificateValidationContext.match_subject_alt_names>`) is also
* specified.
*
* It can optionally contain certificate revocation lists, in which case Envoy will verify
* that the presented peer certificate has not been revoked by one of the included CRLs.
*
* See :ref:`the TLS overview <arch_overview_ssl_enabling_verification>` for a list of common
* system CA locations.
*/
'trusted_ca'?: (_envoy_api_v2_core_DataSource__Output);
/**
* An optional list of hex-encoded SHA-256 hashes. If specified, Envoy will verify that
* the SHA-256 of the DER-encoded presented certificate matches one of the specified values.
*
* A hex-encoded SHA-256 of the certificate can be generated with the following command:
*
* .. code-block:: bash
*
* $ openssl x509 -in path/to/client.crt -outform DER | openssl dgst -sha256 | cut -d" " -f2
* df6ff72fe9116521268f6f2dd4966f51df479883fe7037b39f75916ac3049d1a
*
* A long hex-encoded and colon-separated SHA-256 (a.k.a. "fingerprint") of the certificate
* can be generated with the following command:
*
* .. code-block:: bash
*
* $ openssl x509 -in path/to/client.crt -noout -fingerprint -sha256 | cut -d"=" -f2
* DF:6F:F7:2F:E9:11:65:21:26:8F:6F:2D:D4:96:6F:51:DF:47:98:83:FE:70:37:B3:9F:75:91:6A:C3:04:9D:1A
*
* Both of those formats are acceptable.
*
* When both:
* :ref:`verify_certificate_hash
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>` and
* :ref:`verify_certificate_spki
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_spki>` are specified,
* a hash matching value from either of the lists will result in the certificate being accepted.
*/
'verify_certificate_hash': (string)[];
/**
* An optional list of base64-encoded SHA-256 hashes. If specified, Envoy will verify that the
* SHA-256 of the DER-encoded Subject Public Key Information (SPKI) of the presented certificate
* matches one of the specified values.
*
* A base64-encoded SHA-256 of the Subject Public Key Information (SPKI) of the certificate
* can be generated with the following command:
*
* .. code-block:: bash
*
* $ openssl x509 -in path/to/client.crt -noout -pubkey
* | openssl pkey -pubin -outform DER
* | openssl dgst -sha256 -binary
* | openssl enc -base64
* NvqYIYSbgK2vCJpQhObf77vv+bQWtc5ek5RIOwPiC9A=
*
* This is the format used in HTTP Public Key Pinning.
*
* When both:
* :ref:`verify_certificate_hash
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>` and
* :ref:`verify_certificate_spki
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_spki>` are specified,
* a hash matching value from either of the lists will result in the certificate being accepted.
*
* .. attention::
*
* This option is preferred over :ref:`verify_certificate_hash
* <envoy_api_field_auth.CertificateValidationContext.verify_certificate_hash>`,
* because SPKI is tied to a private key, so it doesn't change when the certificate
* is renewed using the same private key.
*/
'verify_certificate_spki': (string)[];
/**
* An optional list of Subject Alternative Names. If specified, Envoy will verify that the
* Subject Alternative Name of the presented certificate matches one of the specified values.
*
* .. attention::
*
* Subject Alternative Names are easily spoofable and verifying only them is insecure,
* therefore this option must be used together with :ref:`trusted_ca
* <envoy_api_field_auth.CertificateValidationContext.trusted_ca>`.
*/
'verify_subject_alt_name': (string)[];
/**
* [#not-implemented-hide:] Must present a signed time-stamped OCSP response.
*/
'require_ocsp_staple'?: (_google_protobuf_BoolValue__Output);
/**
* [#not-implemented-hide:] Must present signed certificate time-stamp.
*/
'require_signed_certificate_timestamp'?: (_google_protobuf_BoolValue__Output);
/**
* An optional `certificate revocation list
* <https://en.wikipedia.org/wiki/Certificate_revocation_list>`_
* (in PEM format). If specified, Envoy will verify that the presented peer
* certificate has not been revoked by this CRL. If this DataSource contains
* multiple CRLs, all of them will be used.
*/
'crl'?: (_envoy_api_v2_core_DataSource__Output);
/**
* If specified, Envoy will not reject expired certificates.
*/
'allow_expired_certificate': (boolean);
/**
* An optional list of Subject Alternative name matchers. Envoy will verify that the
* Subject Alternative Name of the presented certificate matches one of the specified matches.
*
* When a certificate has wildcard DNS SAN entries, to match a specific client, it should be
* configured with exact match type in the :ref:`string matcher <envoy_api_msg_type.matcher.StringMatcher>`.
* For example if the certificate has "\*.example.com" as DNS SAN entry, to allow only "api.example.com",
* it should be configured as shown below.
*
* .. code-block:: yaml
*
* match_subject_alt_names:
* exact: "api.example.com"
*
* .. attention::
*
* Subject Alternative Names are easily spoofable and verifying only them is insecure,
* therefore this option must be used together with :ref:`trusted_ca
* <envoy_api_field_auth.CertificateValidationContext.trusted_ca>`.
*/
'match_subject_alt_names': (_envoy_type_matcher_StringMatcher__Output)[];
/**
* Certificate trust chain verification mode.
*/
'trust_chain_verification': (keyof typeof _envoy_api_v2_auth_CertificateValidationContext_TrustChainVerification);
}

View File

@ -0,0 +1,140 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/tls.proto
import { TlsParameters as _envoy_api_v2_auth_TlsParameters, TlsParameters__Output as _envoy_api_v2_auth_TlsParameters__Output } from '../../../../envoy/api/v2/auth/TlsParameters';
import { TlsCertificate as _envoy_api_v2_auth_TlsCertificate, TlsCertificate__Output as _envoy_api_v2_auth_TlsCertificate__Output } from '../../../../envoy/api/v2/auth/TlsCertificate';
import { CertificateValidationContext as _envoy_api_v2_auth_CertificateValidationContext, CertificateValidationContext__Output as _envoy_api_v2_auth_CertificateValidationContext__Output } from '../../../../envoy/api/v2/auth/CertificateValidationContext';
import { SdsSecretConfig as _envoy_api_v2_auth_SdsSecretConfig, SdsSecretConfig__Output as _envoy_api_v2_auth_SdsSecretConfig__Output } from '../../../../envoy/api/v2/auth/SdsSecretConfig';
export interface _envoy_api_v2_auth_CommonTlsContext_CombinedCertificateValidationContext {
/**
* How to validate peer certificates.
*/
'default_validation_context'?: (_envoy_api_v2_auth_CertificateValidationContext);
/**
* Config for fetching validation context via SDS API.
*/
'validation_context_sds_secret_config'?: (_envoy_api_v2_auth_SdsSecretConfig);
}
export interface _envoy_api_v2_auth_CommonTlsContext_CombinedCertificateValidationContext__Output {
/**
* How to validate peer certificates.
*/
'default_validation_context'?: (_envoy_api_v2_auth_CertificateValidationContext__Output);
/**
* Config for fetching validation context via SDS API.
*/
'validation_context_sds_secret_config'?: (_envoy_api_v2_auth_SdsSecretConfig__Output);
}
/**
* TLS context shared by both client and server TLS contexts.
* [#next-free-field: 9]
*/
export interface CommonTlsContext {
/**
* TLS protocol versions, cipher suites etc.
*/
'tls_params'?: (_envoy_api_v2_auth_TlsParameters);
/**
* :ref:`Multiple TLS certificates <arch_overview_ssl_cert_select>` can be associated with the
* same context to allow both RSA and ECDSA certificates.
*
* Only a single TLS certificate is supported in client contexts. In server contexts, the first
* RSA certificate is used for clients that only support RSA and the first ECDSA certificate is
* used for clients that support ECDSA.
*/
'tls_certificates'?: (_envoy_api_v2_auth_TlsCertificate)[];
/**
* How to validate peer certificates.
*/
'validation_context'?: (_envoy_api_v2_auth_CertificateValidationContext);
/**
* Supplies the list of ALPN protocols that the listener should expose. In
* practice this is likely to be set to one of two values (see the
* :ref:`codec_type
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.codec_type>`
* parameter in the HTTP connection manager for more information):
*
* * "h2,http/1.1" If the listener is going to support both HTTP/2 and HTTP/1.1.
* * "http/1.1" If the listener is only going to support HTTP/1.1.
*
* There is no default for this parameter. If empty, Envoy will not expose ALPN.
*/
'alpn_protocols'?: (string)[];
/**
* Configs for fetching TLS certificates via SDS API.
*/
'tls_certificate_sds_secret_configs'?: (_envoy_api_v2_auth_SdsSecretConfig)[];
/**
* Config for fetching validation context via SDS API.
*/
'validation_context_sds_secret_config'?: (_envoy_api_v2_auth_SdsSecretConfig);
/**
* Combined certificate validation context holds a default CertificateValidationContext
* and SDS config. When SDS server returns dynamic CertificateValidationContext, both dynamic
* and default CertificateValidationContext are merged into a new CertificateValidationContext
* for validation. This merge is done by Message::MergeFrom(), so dynamic
* CertificateValidationContext overwrites singular fields in default
* CertificateValidationContext, and concatenates repeated fields to default
* CertificateValidationContext, and logical OR is applied to boolean fields.
*/
'combined_validation_context'?: (_envoy_api_v2_auth_CommonTlsContext_CombinedCertificateValidationContext);
'validation_context_type'?: "validation_context"|"validation_context_sds_secret_config"|"combined_validation_context";
}
/**
* TLS context shared by both client and server TLS contexts.
* [#next-free-field: 9]
*/
export interface CommonTlsContext__Output {
/**
* TLS protocol versions, cipher suites etc.
*/
'tls_params'?: (_envoy_api_v2_auth_TlsParameters__Output);
/**
* :ref:`Multiple TLS certificates <arch_overview_ssl_cert_select>` can be associated with the
* same context to allow both RSA and ECDSA certificates.
*
* Only a single TLS certificate is supported in client contexts. In server contexts, the first
* RSA certificate is used for clients that only support RSA and the first ECDSA certificate is
* used for clients that support ECDSA.
*/
'tls_certificates': (_envoy_api_v2_auth_TlsCertificate__Output)[];
/**
* How to validate peer certificates.
*/
'validation_context'?: (_envoy_api_v2_auth_CertificateValidationContext__Output);
/**
* Supplies the list of ALPN protocols that the listener should expose. In
* practice this is likely to be set to one of two values (see the
* :ref:`codec_type
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.codec_type>`
* parameter in the HTTP connection manager for more information):
*
* * "h2,http/1.1" If the listener is going to support both HTTP/2 and HTTP/1.1.
* * "http/1.1" If the listener is only going to support HTTP/1.1.
*
* There is no default for this parameter. If empty, Envoy will not expose ALPN.
*/
'alpn_protocols': (string)[];
/**
* Configs for fetching TLS certificates via SDS API.
*/
'tls_certificate_sds_secret_configs': (_envoy_api_v2_auth_SdsSecretConfig__Output)[];
/**
* Config for fetching validation context via SDS API.
*/
'validation_context_sds_secret_config'?: (_envoy_api_v2_auth_SdsSecretConfig__Output);
/**
* Combined certificate validation context holds a default CertificateValidationContext
* and SDS config. When SDS server returns dynamic CertificateValidationContext, both dynamic
* and default CertificateValidationContext are merged into a new CertificateValidationContext
* for validation. This merge is done by Message::MergeFrom(), so dynamic
* CertificateValidationContext overwrites singular fields in default
* CertificateValidationContext, and concatenates repeated fields to default
* CertificateValidationContext, and logical OR is applied to boolean fields.
*/
'combined_validation_context'?: (_envoy_api_v2_auth_CommonTlsContext_CombinedCertificateValidationContext__Output);
'validation_context_type': "validation_context"|"validation_context_sds_secret_config"|"combined_validation_context";
}

View File

@ -0,0 +1,101 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/tls.proto
import { CommonTlsContext as _envoy_api_v2_auth_CommonTlsContext, CommonTlsContext__Output as _envoy_api_v2_auth_CommonTlsContext__Output } from '../../../../envoy/api/v2/auth/CommonTlsContext';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
import { TlsSessionTicketKeys as _envoy_api_v2_auth_TlsSessionTicketKeys, TlsSessionTicketKeys__Output as _envoy_api_v2_auth_TlsSessionTicketKeys__Output } from '../../../../envoy/api/v2/auth/TlsSessionTicketKeys';
import { SdsSecretConfig as _envoy_api_v2_auth_SdsSecretConfig, SdsSecretConfig__Output as _envoy_api_v2_auth_SdsSecretConfig__Output } from '../../../../envoy/api/v2/auth/SdsSecretConfig';
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
/**
* [#next-free-field: 8]
*/
export interface DownstreamTlsContext {
/**
* Common TLS context settings.
*/
'common_tls_context'?: (_envoy_api_v2_auth_CommonTlsContext);
/**
* If specified, Envoy will reject connections without a valid client
* certificate.
*/
'require_client_certificate'?: (_google_protobuf_BoolValue);
/**
* If specified, Envoy will reject connections without a valid and matching SNI.
* [#not-implemented-hide:]
*/
'require_sni'?: (_google_protobuf_BoolValue);
/**
* TLS session ticket key settings.
*/
'session_ticket_keys'?: (_envoy_api_v2_auth_TlsSessionTicketKeys);
/**
* Config for fetching TLS session ticket keys via SDS API.
*/
'session_ticket_keys_sds_secret_config'?: (_envoy_api_v2_auth_SdsSecretConfig);
/**
* If specified, session_timeout will change maximum lifetime (in seconds) of TLS session
* Currently this value is used as a hint to `TLS session ticket lifetime (for TLSv1.2)
* <https://tools.ietf.org/html/rfc5077#section-5.6>`
* only seconds could be specified (fractional seconds are going to be ignored).
*/
'session_timeout'?: (_google_protobuf_Duration);
/**
* Config for controlling stateless TLS session resumption: setting this to true will cause the TLS
* server to not issue TLS session tickets for the purposes of stateless TLS session resumption.
* If set to false, the TLS server will issue TLS session tickets and encrypt/decrypt them using
* the keys specified through either :ref:`session_ticket_keys <envoy_api_field_auth.DownstreamTlsContext.session_ticket_keys>`
* or :ref:`session_ticket_keys_sds_secret_config <envoy_api_field_auth.DownstreamTlsContext.session_ticket_keys_sds_secret_config>`.
* If this config is set to false and no keys are explicitly configured, the TLS server will issue
* TLS session tickets and encrypt/decrypt them using an internally-generated and managed key, with the
* implication that sessions cannot be resumed across hot restarts or on different hosts.
*/
'disable_stateless_session_resumption'?: (boolean);
'session_ticket_keys_type'?: "session_ticket_keys"|"session_ticket_keys_sds_secret_config"|"disable_stateless_session_resumption";
}
/**
* [#next-free-field: 8]
*/
export interface DownstreamTlsContext__Output {
/**
* Common TLS context settings.
*/
'common_tls_context'?: (_envoy_api_v2_auth_CommonTlsContext__Output);
/**
* If specified, Envoy will reject connections without a valid client
* certificate.
*/
'require_client_certificate'?: (_google_protobuf_BoolValue__Output);
/**
* If specified, Envoy will reject connections without a valid and matching SNI.
* [#not-implemented-hide:]
*/
'require_sni'?: (_google_protobuf_BoolValue__Output);
/**
* TLS session ticket key settings.
*/
'session_ticket_keys'?: (_envoy_api_v2_auth_TlsSessionTicketKeys__Output);
/**
* Config for fetching TLS session ticket keys via SDS API.
*/
'session_ticket_keys_sds_secret_config'?: (_envoy_api_v2_auth_SdsSecretConfig__Output);
/**
* If specified, session_timeout will change maximum lifetime (in seconds) of TLS session
* Currently this value is used as a hint to `TLS session ticket lifetime (for TLSv1.2)
* <https://tools.ietf.org/html/rfc5077#section-5.6>`
* only seconds could be specified (fractional seconds are going to be ignored).
*/
'session_timeout'?: (_google_protobuf_Duration__Output);
/**
* Config for controlling stateless TLS session resumption: setting this to true will cause the TLS
* server to not issue TLS session tickets for the purposes of stateless TLS session resumption.
* If set to false, the TLS server will issue TLS session tickets and encrypt/decrypt them using
* the keys specified through either :ref:`session_ticket_keys <envoy_api_field_auth.DownstreamTlsContext.session_ticket_keys>`
* or :ref:`session_ticket_keys_sds_secret_config <envoy_api_field_auth.DownstreamTlsContext.session_ticket_keys_sds_secret_config>`.
* If this config is set to false and no keys are explicitly configured, the TLS server will issue
* TLS session tickets and encrypt/decrypt them using an internally-generated and managed key, with the
* implication that sessions cannot be resumed across hot restarts or on different hosts.
*/
'disable_stateless_session_resumption'?: (boolean);
'session_ticket_keys_type': "session_ticket_keys"|"session_ticket_keys_sds_secret_config"|"disable_stateless_session_resumption";
}

View File

@ -0,0 +1,17 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/secret.proto
import { DataSource as _envoy_api_v2_core_DataSource, DataSource__Output as _envoy_api_v2_core_DataSource__Output } from '../../../../envoy/api/v2/core/DataSource';
export interface GenericSecret {
/**
* Secret of generic type and is available to filters.
*/
'secret'?: (_envoy_api_v2_core_DataSource);
}
export interface GenericSecret__Output {
/**
* Secret of generic type and is available to filters.
*/
'secret'?: (_envoy_api_v2_core_DataSource__Output);
}

View File

@ -0,0 +1,42 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/common.proto
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
/**
* BoringSSL private key method configuration. The private key methods are used for external
* (potentially asynchronous) signing and decryption operations. Some use cases for private key
* methods would be TPM support and TLS acceleration.
*/
export interface PrivateKeyProvider {
/**
* Private key method provider name. The name must match a
* supported private key method provider type.
*/
'provider_name'?: (string);
'config'?: (_google_protobuf_Struct);
'typed_config'?: (_google_protobuf_Any);
/**
* Private key method provider specific configuration.
*/
'config_type'?: "config"|"typed_config";
}
/**
* BoringSSL private key method configuration. The private key methods are used for external
* (potentially asynchronous) signing and decryption operations. Some use cases for private key
* methods would be TPM support and TLS acceleration.
*/
export interface PrivateKeyProvider__Output {
/**
* Private key method provider name. The name must match a
* supported private key method provider type.
*/
'provider_name': (string);
'config'?: (_google_protobuf_Struct__Output);
'typed_config'?: (_google_protobuf_Any__Output);
/**
* Private key method provider specific configuration.
*/
'config_type': "config"|"typed_config";
}

View File

@ -0,0 +1,23 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/secret.proto
import { ConfigSource as _envoy_api_v2_core_ConfigSource, ConfigSource__Output as _envoy_api_v2_core_ConfigSource__Output } from '../../../../envoy/api/v2/core/ConfigSource';
export interface SdsSecretConfig {
/**
* Name (FQDN, UUID, SPKI, SHA256, etc.) by which the secret can be uniquely referred to.
* When both name and config are specified, then secret can be fetched and/or reloaded via
* SDS. When only name is specified, then secret will be loaded from static resources.
*/
'name'?: (string);
'sds_config'?: (_envoy_api_v2_core_ConfigSource);
}
export interface SdsSecretConfig__Output {
/**
* Name (FQDN, UUID, SPKI, SHA256, etc.) by which the secret can be uniquely referred to.
* When both name and config are specified, then secret can be fetched and/or reloaded via
* SDS. When only name is specified, then secret will be loaded from static resources.
*/
'name': (string);
'sds_config'?: (_envoy_api_v2_core_ConfigSource__Output);
}

View File

@ -0,0 +1,36 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/secret.proto
import { TlsCertificate as _envoy_api_v2_auth_TlsCertificate, TlsCertificate__Output as _envoy_api_v2_auth_TlsCertificate__Output } from '../../../../envoy/api/v2/auth/TlsCertificate';
import { TlsSessionTicketKeys as _envoy_api_v2_auth_TlsSessionTicketKeys, TlsSessionTicketKeys__Output as _envoy_api_v2_auth_TlsSessionTicketKeys__Output } from '../../../../envoy/api/v2/auth/TlsSessionTicketKeys';
import { CertificateValidationContext as _envoy_api_v2_auth_CertificateValidationContext, CertificateValidationContext__Output as _envoy_api_v2_auth_CertificateValidationContext__Output } from '../../../../envoy/api/v2/auth/CertificateValidationContext';
import { GenericSecret as _envoy_api_v2_auth_GenericSecret, GenericSecret__Output as _envoy_api_v2_auth_GenericSecret__Output } from '../../../../envoy/api/v2/auth/GenericSecret';
/**
* [#next-free-field: 6]
*/
export interface Secret {
/**
* Name (FQDN, UUID, SPKI, SHA256, etc.) by which the secret can be uniquely referred to.
*/
'name'?: (string);
'tls_certificate'?: (_envoy_api_v2_auth_TlsCertificate);
'session_ticket_keys'?: (_envoy_api_v2_auth_TlsSessionTicketKeys);
'validation_context'?: (_envoy_api_v2_auth_CertificateValidationContext);
'generic_secret'?: (_envoy_api_v2_auth_GenericSecret);
'type'?: "tls_certificate"|"session_ticket_keys"|"validation_context"|"generic_secret";
}
/**
* [#next-free-field: 6]
*/
export interface Secret__Output {
/**
* Name (FQDN, UUID, SPKI, SHA256, etc.) by which the secret can be uniquely referred to.
*/
'name': (string);
'tls_certificate'?: (_envoy_api_v2_auth_TlsCertificate__Output);
'session_ticket_keys'?: (_envoy_api_v2_auth_TlsSessionTicketKeys__Output);
'validation_context'?: (_envoy_api_v2_auth_CertificateValidationContext__Output);
'generic_secret'?: (_envoy_api_v2_auth_GenericSecret__Output);
'type': "tls_certificate"|"session_ticket_keys"|"validation_context"|"generic_secret";
}

View File

@ -0,0 +1,78 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/common.proto
import { DataSource as _envoy_api_v2_core_DataSource, DataSource__Output as _envoy_api_v2_core_DataSource__Output } from '../../../../envoy/api/v2/core/DataSource';
import { PrivateKeyProvider as _envoy_api_v2_auth_PrivateKeyProvider, PrivateKeyProvider__Output as _envoy_api_v2_auth_PrivateKeyProvider__Output } from '../../../../envoy/api/v2/auth/PrivateKeyProvider';
/**
* [#next-free-field: 7]
*/
export interface TlsCertificate {
/**
* The TLS certificate chain.
*/
'certificate_chain'?: (_envoy_api_v2_core_DataSource);
/**
* The TLS private key.
*/
'private_key'?: (_envoy_api_v2_core_DataSource);
/**
* The password to decrypt the TLS private key. If this field is not set, it is assumed that the
* TLS private key is not password encrypted.
*/
'password'?: (_envoy_api_v2_core_DataSource);
/**
* [#not-implemented-hide:]
*/
'ocsp_staple'?: (_envoy_api_v2_core_DataSource);
/**
* [#not-implemented-hide:]
*/
'signed_certificate_timestamp'?: (_envoy_api_v2_core_DataSource)[];
/**
* BoringSSL private key method provider. This is an alternative to :ref:`private_key
* <envoy_api_field_auth.TlsCertificate.private_key>` field. This can't be
* marked as ``oneof`` due to API compatibility reasons. Setting both :ref:`private_key
* <envoy_api_field_auth.TlsCertificate.private_key>` and
* :ref:`private_key_provider
* <envoy_api_field_auth.TlsCertificate.private_key_provider>` fields will result in an
* error.
*/
'private_key_provider'?: (_envoy_api_v2_auth_PrivateKeyProvider);
}
/**
* [#next-free-field: 7]
*/
export interface TlsCertificate__Output {
/**
* The TLS certificate chain.
*/
'certificate_chain'?: (_envoy_api_v2_core_DataSource__Output);
/**
* The TLS private key.
*/
'private_key'?: (_envoy_api_v2_core_DataSource__Output);
/**
* The password to decrypt the TLS private key. If this field is not set, it is assumed that the
* TLS private key is not password encrypted.
*/
'password'?: (_envoy_api_v2_core_DataSource__Output);
/**
* [#not-implemented-hide:]
*/
'ocsp_staple'?: (_envoy_api_v2_core_DataSource__Output);
/**
* [#not-implemented-hide:]
*/
'signed_certificate_timestamp': (_envoy_api_v2_core_DataSource__Output)[];
/**
* BoringSSL private key method provider. This is an alternative to :ref:`private_key
* <envoy_api_field_auth.TlsCertificate.private_key>` field. This can't be
* marked as ``oneof`` due to API compatibility reasons. Setting both :ref:`private_key
* <envoy_api_field_auth.TlsCertificate.private_key>` and
* :ref:`private_key_provider
* <envoy_api_field_auth.TlsCertificate.private_key_provider>` fields will result in an
* error.
*/
'private_key_provider'?: (_envoy_api_v2_auth_PrivateKeyProvider__Output);
}

View File

@ -0,0 +1,171 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/common.proto
// Original file: deps/envoy-api/envoy/api/v2/auth/common.proto
export enum _envoy_api_v2_auth_TlsParameters_TlsProtocol {
/**
* Envoy will choose the optimal TLS version.
*/
TLS_AUTO = 0,
/**
* TLS 1.0
*/
TLSv1_0 = 1,
/**
* TLS 1.1
*/
TLSv1_1 = 2,
/**
* TLS 1.2
*/
TLSv1_2 = 3,
/**
* TLS 1.3
*/
TLSv1_3 = 4,
}
export interface TlsParameters {
/**
* Minimum TLS protocol version. By default, it's ``TLSv1_2`` for clients and ``TLSv1_0`` for
* servers.
*/
'tls_minimum_protocol_version'?: (_envoy_api_v2_auth_TlsParameters_TlsProtocol | keyof typeof _envoy_api_v2_auth_TlsParameters_TlsProtocol);
/**
* Maximum TLS protocol version. By default, it's ``TLSv1_3`` for servers in non-FIPS builds, and
* ``TLSv1_2`` for clients and for servers using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`.
*/
'tls_maximum_protocol_version'?: (_envoy_api_v2_auth_TlsParameters_TlsProtocol | keyof typeof _envoy_api_v2_auth_TlsParameters_TlsProtocol);
/**
* If specified, the TLS listener will only support the specified `cipher list
* <https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#Cipher-suite-configuration>`_
* when negotiating TLS 1.0-1.2 (this setting has no effect when negotiating TLS 1.3). If not
* specified, the default list will be used.
*
* In non-FIPS builds, the default cipher list is:
*
* .. code-block:: none
*
* [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
* [ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]
* ECDHE-ECDSA-AES128-SHA
* ECDHE-RSA-AES128-SHA
* AES128-GCM-SHA256
* AES128-SHA
* ECDHE-ECDSA-AES256-GCM-SHA384
* ECDHE-RSA-AES256-GCM-SHA384
* ECDHE-ECDSA-AES256-SHA
* ECDHE-RSA-AES256-SHA
* AES256-GCM-SHA384
* AES256-SHA
*
* In builds using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`, the default cipher list is:
*
* .. code-block:: none
*
* ECDHE-ECDSA-AES128-GCM-SHA256
* ECDHE-RSA-AES128-GCM-SHA256
* ECDHE-ECDSA-AES128-SHA
* ECDHE-RSA-AES128-SHA
* AES128-GCM-SHA256
* AES128-SHA
* ECDHE-ECDSA-AES256-GCM-SHA384
* ECDHE-RSA-AES256-GCM-SHA384
* ECDHE-ECDSA-AES256-SHA
* ECDHE-RSA-AES256-SHA
* AES256-GCM-SHA384
* AES256-SHA
*/
'cipher_suites'?: (string)[];
/**
* If specified, the TLS connection will only support the specified ECDH
* curves. If not specified, the default curves will be used.
*
* In non-FIPS builds, the default curves are:
*
* .. code-block:: none
*
* X25519
* P-256
*
* In builds using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`, the default curve is:
*
* .. code-block:: none
*
* P-256
*/
'ecdh_curves'?: (string)[];
}
export interface TlsParameters__Output {
/**
* Minimum TLS protocol version. By default, it's ``TLSv1_2`` for clients and ``TLSv1_0`` for
* servers.
*/
'tls_minimum_protocol_version': (keyof typeof _envoy_api_v2_auth_TlsParameters_TlsProtocol);
/**
* Maximum TLS protocol version. By default, it's ``TLSv1_3`` for servers in non-FIPS builds, and
* ``TLSv1_2`` for clients and for servers using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`.
*/
'tls_maximum_protocol_version': (keyof typeof _envoy_api_v2_auth_TlsParameters_TlsProtocol);
/**
* If specified, the TLS listener will only support the specified `cipher list
* <https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#Cipher-suite-configuration>`_
* when negotiating TLS 1.0-1.2 (this setting has no effect when negotiating TLS 1.3). If not
* specified, the default list will be used.
*
* In non-FIPS builds, the default cipher list is:
*
* .. code-block:: none
*
* [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
* [ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]
* ECDHE-ECDSA-AES128-SHA
* ECDHE-RSA-AES128-SHA
* AES128-GCM-SHA256
* AES128-SHA
* ECDHE-ECDSA-AES256-GCM-SHA384
* ECDHE-RSA-AES256-GCM-SHA384
* ECDHE-ECDSA-AES256-SHA
* ECDHE-RSA-AES256-SHA
* AES256-GCM-SHA384
* AES256-SHA
*
* In builds using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`, the default cipher list is:
*
* .. code-block:: none
*
* ECDHE-ECDSA-AES128-GCM-SHA256
* ECDHE-RSA-AES128-GCM-SHA256
* ECDHE-ECDSA-AES128-SHA
* ECDHE-RSA-AES128-SHA
* AES128-GCM-SHA256
* AES128-SHA
* ECDHE-ECDSA-AES256-GCM-SHA384
* ECDHE-RSA-AES256-GCM-SHA384
* ECDHE-ECDSA-AES256-SHA
* ECDHE-RSA-AES256-SHA
* AES256-GCM-SHA384
* AES256-SHA
*/
'cipher_suites': (string)[];
/**
* If specified, the TLS connection will only support the specified ECDH
* curves. If not specified, the default curves will be used.
*
* In non-FIPS builds, the default curves are:
*
* .. code-block:: none
*
* X25519
* P-256
*
* In builds using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`, the default curve is:
*
* .. code-block:: none
*
* P-256
*/
'ecdh_curves': (string)[];
}

View File

@ -0,0 +1,61 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/common.proto
import { DataSource as _envoy_api_v2_core_DataSource, DataSource__Output as _envoy_api_v2_core_DataSource__Output } from '../../../../envoy/api/v2/core/DataSource';
export interface TlsSessionTicketKeys {
/**
* Keys for encrypting and decrypting TLS session tickets. The
* first key in the array contains the key to encrypt all new sessions created by this context.
* All keys are candidates for decrypting received tickets. This allows for easy rotation of keys
* by, for example, putting the new key first, and the previous key second.
*
* If :ref:`session_ticket_keys <envoy_api_field_auth.DownstreamTlsContext.session_ticket_keys>`
* is not specified, the TLS library will still support resuming sessions via tickets, but it will
* use an internally-generated and managed key, so sessions cannot be resumed across hot restarts
* or on different hosts.
*
* Each key must contain exactly 80 bytes of cryptographically-secure random data. For
* example, the output of ``openssl rand 80``.
*
* .. attention::
*
* Using this feature has serious security considerations and risks. Improper handling of keys
* may result in loss of secrecy in connections, even if ciphers supporting perfect forward
* secrecy are used. See https://www.imperialviolet.org/2013/06/27/botchingpfs.html for some
* discussion. To minimize the risk, you must:
*
* * Keep the session ticket keys at least as secure as your TLS certificate private keys
* * Rotate session ticket keys at least daily, and preferably hourly
* * Always generate keys using a cryptographically-secure random data source
*/
'keys'?: (_envoy_api_v2_core_DataSource)[];
}
export interface TlsSessionTicketKeys__Output {
/**
* Keys for encrypting and decrypting TLS session tickets. The
* first key in the array contains the key to encrypt all new sessions created by this context.
* All keys are candidates for decrypting received tickets. This allows for easy rotation of keys
* by, for example, putting the new key first, and the previous key second.
*
* If :ref:`session_ticket_keys <envoy_api_field_auth.DownstreamTlsContext.session_ticket_keys>`
* is not specified, the TLS library will still support resuming sessions via tickets, but it will
* use an internally-generated and managed key, so sessions cannot be resumed across hot restarts
* or on different hosts.
*
* Each key must contain exactly 80 bytes of cryptographically-secure random data. For
* example, the output of ``openssl rand 80``.
*
* .. attention::
*
* Using this feature has serious security considerations and risks. Improper handling of keys
* may result in loss of secrecy in connections, even if ciphers supporting perfect forward
* secrecy are used. See https://www.imperialviolet.org/2013/06/27/botchingpfs.html for some
* discussion. To minimize the risk, you must:
*
* * Keep the session ticket keys at least as secure as your TLS certificate private keys
* * Rotate session ticket keys at least daily, and preferably hourly
* * Always generate keys using a cryptographically-secure random data source
*/
'keys': (_envoy_api_v2_core_DataSource__Output)[];
}

View File

@ -0,0 +1,68 @@
// Original file: deps/envoy-api/envoy/api/v2/auth/tls.proto
import { CommonTlsContext as _envoy_api_v2_auth_CommonTlsContext, CommonTlsContext__Output as _envoy_api_v2_auth_CommonTlsContext__Output } from '../../../../envoy/api/v2/auth/CommonTlsContext';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
export interface UpstreamTlsContext {
/**
* Common TLS context settings.
*
* .. attention::
*
* Server certificate verification is not enabled by default. Configure
* :ref:`trusted_ca<envoy_api_field_auth.CertificateValidationContext.trusted_ca>` to enable
* verification.
*/
'common_tls_context'?: (_envoy_api_v2_auth_CommonTlsContext);
/**
* SNI string to use when creating TLS backend connections.
*/
'sni'?: (string);
/**
* If true, server-initiated TLS renegotiation will be allowed.
*
* .. attention::
*
* TLS renegotiation is considered insecure and shouldn't be used unless absolutely necessary.
*/
'allow_renegotiation'?: (boolean);
/**
* Maximum number of session keys (Pre-Shared Keys for TLSv1.3+, Session IDs and Session Tickets
* for TLSv1.2 and older) to store for the purpose of session resumption.
*
* Defaults to 1, setting this to 0 disables session resumption.
*/
'max_session_keys'?: (_google_protobuf_UInt32Value);
}
export interface UpstreamTlsContext__Output {
/**
* Common TLS context settings.
*
* .. attention::
*
* Server certificate verification is not enabled by default. Configure
* :ref:`trusted_ca<envoy_api_field_auth.CertificateValidationContext.trusted_ca>` to enable
* verification.
*/
'common_tls_context'?: (_envoy_api_v2_auth_CommonTlsContext__Output);
/**
* SNI string to use when creating TLS backend connections.
*/
'sni': (string);
/**
* If true, server-initiated TLS renegotiation will be allowed.
*
* .. attention::
*
* TLS renegotiation is considered insecure and shouldn't be used unless absolutely necessary.
*/
'allow_renegotiation': (boolean);
/**
* Maximum number of session keys (Pre-Shared Keys for TLSv1.3+, Session IDs and Session Tickets
* for TLSv1.2 and older) to store for the purpose of session resumption.
*
* Defaults to 1, setting this to 0 disables session resumption.
*/
'max_session_keys'?: (_google_protobuf_UInt32Value__Output);
}

View File

@ -0,0 +1,195 @@
// Original file: deps/envoy-api/envoy/api/v2/cluster/circuit_breaker.proto
import { RoutingPriority as _envoy_api_v2_core_RoutingPriority } from '../../../../envoy/api/v2/core/RoutingPriority';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
import { Percent as _envoy_type_Percent, Percent__Output as _envoy_type_Percent__Output } from '../../../../envoy/type/Percent';
export interface _envoy_api_v2_cluster_CircuitBreakers_Thresholds_RetryBudget {
/**
* Specifies the limit on concurrent retries as a percentage of the sum of active requests and
* active pending requests. For example, if there are 100 active requests and the
* budget_percent is set to 25, there may be 25 active retries.
*
* This parameter is optional. Defaults to 20%.
*/
'budget_percent'?: (_envoy_type_Percent);
/**
* Specifies the minimum retry concurrency allowed for the retry budget. The limit on the
* number of active retries may never go below this number.
*
* This parameter is optional. Defaults to 3.
*/
'min_retry_concurrency'?: (_google_protobuf_UInt32Value);
}
export interface _envoy_api_v2_cluster_CircuitBreakers_Thresholds_RetryBudget__Output {
/**
* Specifies the limit on concurrent retries as a percentage of the sum of active requests and
* active pending requests. For example, if there are 100 active requests and the
* budget_percent is set to 25, there may be 25 active retries.
*
* This parameter is optional. Defaults to 20%.
*/
'budget_percent'?: (_envoy_type_Percent__Output);
/**
* Specifies the minimum retry concurrency allowed for the retry budget. The limit on the
* number of active retries may never go below this number.
*
* This parameter is optional. Defaults to 3.
*/
'min_retry_concurrency'?: (_google_protobuf_UInt32Value__Output);
}
/**
* A Thresholds defines CircuitBreaker settings for a
* :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`.
* [#next-free-field: 9]
*/
export interface _envoy_api_v2_cluster_CircuitBreakers_Thresholds {
/**
* The :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`
* the specified CircuitBreaker settings apply to.
*/
'priority'?: (_envoy_api_v2_core_RoutingPriority | keyof typeof _envoy_api_v2_core_RoutingPriority);
/**
* The maximum number of connections that Envoy will make to the upstream
* cluster. If not specified, the default is 1024.
*/
'max_connections'?: (_google_protobuf_UInt32Value);
/**
* The maximum number of pending requests that Envoy will allow to the
* upstream cluster. If not specified, the default is 1024.
*/
'max_pending_requests'?: (_google_protobuf_UInt32Value);
/**
* The maximum number of parallel requests that Envoy will make to the
* upstream cluster. If not specified, the default is 1024.
*/
'max_requests'?: (_google_protobuf_UInt32Value);
/**
* The maximum number of parallel retries that Envoy will allow to the
* upstream cluster. If not specified, the default is 3.
*/
'max_retries'?: (_google_protobuf_UInt32Value);
/**
* Specifies a limit on concurrent retries in relation to the number of active requests. This
* parameter is optional.
*
* .. note::
*
* If this field is set, the retry budget will override any configured retry circuit
* breaker.
*/
'retry_budget'?: (_envoy_api_v2_cluster_CircuitBreakers_Thresholds_RetryBudget);
/**
* If track_remaining is true, then stats will be published that expose
* the number of resources remaining until the circuit breakers open. If
* not specified, the default is false.
*
* .. note::
*
* If a retry budget is used in lieu of the max_retries circuit breaker,
* the remaining retry resources remaining will not be tracked.
*/
'track_remaining'?: (boolean);
/**
* The maximum number of connection pools per cluster that Envoy will concurrently support at
* once. If not specified, the default is unlimited. Set this for clusters which create a
* large number of connection pools. See
* :ref:`Circuit Breaking <arch_overview_circuit_break_cluster_maximum_connection_pools>` for
* more details.
*/
'max_connection_pools'?: (_google_protobuf_UInt32Value);
}
/**
* A Thresholds defines CircuitBreaker settings for a
* :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`.
* [#next-free-field: 9]
*/
export interface _envoy_api_v2_cluster_CircuitBreakers_Thresholds__Output {
/**
* The :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`
* the specified CircuitBreaker settings apply to.
*/
'priority': (keyof typeof _envoy_api_v2_core_RoutingPriority);
/**
* The maximum number of connections that Envoy will make to the upstream
* cluster. If not specified, the default is 1024.
*/
'max_connections'?: (_google_protobuf_UInt32Value__Output);
/**
* The maximum number of pending requests that Envoy will allow to the
* upstream cluster. If not specified, the default is 1024.
*/
'max_pending_requests'?: (_google_protobuf_UInt32Value__Output);
/**
* The maximum number of parallel requests that Envoy will make to the
* upstream cluster. If not specified, the default is 1024.
*/
'max_requests'?: (_google_protobuf_UInt32Value__Output);
/**
* The maximum number of parallel retries that Envoy will allow to the
* upstream cluster. If not specified, the default is 3.
*/
'max_retries'?: (_google_protobuf_UInt32Value__Output);
/**
* Specifies a limit on concurrent retries in relation to the number of active requests. This
* parameter is optional.
*
* .. note::
*
* If this field is set, the retry budget will override any configured retry circuit
* breaker.
*/
'retry_budget'?: (_envoy_api_v2_cluster_CircuitBreakers_Thresholds_RetryBudget__Output);
/**
* If track_remaining is true, then stats will be published that expose
* the number of resources remaining until the circuit breakers open. If
* not specified, the default is false.
*
* .. note::
*
* If a retry budget is used in lieu of the max_retries circuit breaker,
* the remaining retry resources remaining will not be tracked.
*/
'track_remaining': (boolean);
/**
* The maximum number of connection pools per cluster that Envoy will concurrently support at
* once. If not specified, the default is unlimited. Set this for clusters which create a
* large number of connection pools. See
* :ref:`Circuit Breaking <arch_overview_circuit_break_cluster_maximum_connection_pools>` for
* more details.
*/
'max_connection_pools'?: (_google_protobuf_UInt32Value__Output);
}
/**
* :ref:`Circuit breaking<arch_overview_circuit_break>` settings can be
* specified individually for each defined priority.
*/
export interface CircuitBreakers {
/**
* If multiple :ref:`Thresholds<envoy_api_msg_cluster.CircuitBreakers.Thresholds>`
* are defined with the same :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`,
* the first one in the list is used. If no Thresholds is defined for a given
* :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`, the default values
* are used.
*/
'thresholds'?: (_envoy_api_v2_cluster_CircuitBreakers_Thresholds)[];
}
/**
* :ref:`Circuit breaking<arch_overview_circuit_break>` settings can be
* specified individually for each defined priority.
*/
export interface CircuitBreakers__Output {
/**
* If multiple :ref:`Thresholds<envoy_api_msg_cluster.CircuitBreakers.Thresholds>`
* are defined with the same :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`,
* the first one in the list is used. If no Thresholds is defined for a given
* :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`, the default values
* are used.
*/
'thresholds': (_envoy_api_v2_cluster_CircuitBreakers_Thresholds__Output)[];
}

View File

@ -0,0 +1,29 @@
// Original file: deps/envoy-api/envoy/api/v2/cluster/filter.proto
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
export interface Filter {
/**
* The name of the filter to instantiate. The name must match a
* :ref:`supported filter <config_network_filters>`.
*/
'name'?: (string);
/**
* Filter specific configuration which depends on the filter being
* instantiated. See the supported filters for further documentation.
*/
'typed_config'?: (_google_protobuf_Any);
}
export interface Filter__Output {
/**
* The name of the filter to instantiate. The name must match a
* :ref:`supported filter <config_network_filters>`.
*/
'name': (string);
/**
* Filter specific configuration which depends on the filter being
* instantiated. See the supported filters for further documentation.
*/
'typed_config'?: (_google_protobuf_Any__Output);
}

View File

@ -0,0 +1,300 @@
// Original file: deps/envoy-api/envoy/api/v2/cluster/outlier_detection.proto
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
/**
* See the :ref:`architecture overview <arch_overview_outlier_detection>` for
* more information on outlier detection.
* [#next-free-field: 21]
*/
export interface OutlierDetection {
/**
* The number of consecutive 5xx responses or local origin errors that are mapped
* to 5xx error codes before a consecutive 5xx ejection
* occurs. Defaults to 5.
*/
'consecutive_5xx'?: (_google_protobuf_UInt32Value);
/**
* The time interval between ejection analysis sweeps. This can result in
* both new ejections as well as hosts being returned to service. Defaults
* to 10000ms or 10s.
*/
'interval'?: (_google_protobuf_Duration);
/**
* The base time that a host is ejected for. The real time is equal to the
* base time multiplied by the number of times the host has been ejected.
* Defaults to 30000ms or 30s.
*/
'base_ejection_time'?: (_google_protobuf_Duration);
/**
* The maximum % of an upstream cluster that can be ejected due to outlier
* detection. Defaults to 10% but will eject at least one host regardless of the value.
*/
'max_ejection_percent'?: (_google_protobuf_UInt32Value);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through consecutive 5xx. This setting can be used to disable
* ejection or to ramp it up slowly. Defaults to 100.
*/
'enforcing_consecutive_5xx'?: (_google_protobuf_UInt32Value);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through success rate statistics. This setting can be used to
* disable ejection or to ramp it up slowly. Defaults to 100.
*/
'enforcing_success_rate'?: (_google_protobuf_UInt32Value);
/**
* The number of hosts in a cluster that must have enough request volume to
* detect success rate outliers. If the number of hosts is less than this
* setting, outlier detection via success rate statistics is not performed
* for any host in the cluster. Defaults to 5.
*/
'success_rate_minimum_hosts'?: (_google_protobuf_UInt32Value);
/**
* The minimum number of total requests that must be collected in one
* interval (as defined by the interval duration above) to include this host
* in success rate based outlier detection. If the volume is lower than this
* setting, outlier detection via success rate statistics is not performed
* for that host. Defaults to 100.
*/
'success_rate_request_volume'?: (_google_protobuf_UInt32Value);
/**
* This factor is used to determine the ejection threshold for success rate
* outlier ejection. The ejection threshold is the difference between the
* mean success rate, and the product of this factor and the standard
* deviation of the mean success rate: mean - (stdev *
* success_rate_stdev_factor). This factor is divided by a thousand to get a
* double. That is, if the desired factor is 1.9, the runtime value should
* be 1900. Defaults to 1900.
*/
'success_rate_stdev_factor'?: (_google_protobuf_UInt32Value);
/**
* The number of consecutive gateway failures (502, 503, 504 status codes)
* before a consecutive gateway failure ejection occurs. Defaults to 5.
*/
'consecutive_gateway_failure'?: (_google_protobuf_UInt32Value);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through consecutive gateway failures. This setting can be
* used to disable ejection or to ramp it up slowly. Defaults to 0.
*/
'enforcing_consecutive_gateway_failure'?: (_google_protobuf_UInt32Value);
/**
* Determines whether to distinguish local origin failures from external errors. If set to true
* the following configuration parameters are taken into account:
* :ref:`consecutive_local_origin_failure<envoy_api_field_cluster.OutlierDetection.consecutive_local_origin_failure>`,
* :ref:`enforcing_consecutive_local_origin_failure<envoy_api_field_cluster.OutlierDetection.enforcing_consecutive_local_origin_failure>`
* and
* :ref:`enforcing_local_origin_success_rate<envoy_api_field_cluster.OutlierDetection.enforcing_local_origin_success_rate>`.
* Defaults to false.
*/
'split_external_local_origin_errors'?: (boolean);
/**
* The number of consecutive locally originated failures before ejection
* occurs. Defaults to 5. Parameter takes effect only when
* :ref:`split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
* is set to true.
*/
'consecutive_local_origin_failure'?: (_google_protobuf_UInt32Value);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through consecutive locally originated failures. This setting can be
* used to disable ejection or to ramp it up slowly. Defaults to 100.
* Parameter takes effect only when
* :ref:`split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
* is set to true.
*/
'enforcing_consecutive_local_origin_failure'?: (_google_protobuf_UInt32Value);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through success rate statistics for locally originated errors.
* This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
* Parameter takes effect only when
* :ref:`split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
* is set to true.
*/
'enforcing_local_origin_success_rate'?: (_google_protobuf_UInt32Value);
/**
* The failure percentage to use when determining failure percentage-based outlier detection. If
* the failure percentage of a given host is greater than or equal to this value, it will be
* ejected. Defaults to 85.
*/
'failure_percentage_threshold'?: (_google_protobuf_UInt32Value);
/**
* The % chance that a host will be actually ejected when an outlier status is detected through
* failure percentage statistics. This setting can be used to disable ejection or to ramp it up
* slowly. Defaults to 0.
*
* [#next-major-version: setting this without setting failure_percentage_threshold should be
* invalid in v4.]
*/
'enforcing_failure_percentage'?: (_google_protobuf_UInt32Value);
/**
* The % chance that a host will be actually ejected when an outlier status is detected through
* local-origin failure percentage statistics. This setting can be used to disable ejection or to
* ramp it up slowly. Defaults to 0.
*/
'enforcing_failure_percentage_local_origin'?: (_google_protobuf_UInt32Value);
/**
* The minimum number of hosts in a cluster in order to perform failure percentage-based ejection.
* If the total number of hosts in the cluster is less than this value, failure percentage-based
* ejection will not be performed. Defaults to 5.
*/
'failure_percentage_minimum_hosts'?: (_google_protobuf_UInt32Value);
/**
* The minimum number of total requests that must be collected in one interval (as defined by the
* interval duration above) to perform failure percentage-based ejection for this host. If the
* volume is lower than this setting, failure percentage-based ejection will not be performed for
* this host. Defaults to 50.
*/
'failure_percentage_request_volume'?: (_google_protobuf_UInt32Value);
}
/**
* See the :ref:`architecture overview <arch_overview_outlier_detection>` for
* more information on outlier detection.
* [#next-free-field: 21]
*/
export interface OutlierDetection__Output {
/**
* The number of consecutive 5xx responses or local origin errors that are mapped
* to 5xx error codes before a consecutive 5xx ejection
* occurs. Defaults to 5.
*/
'consecutive_5xx'?: (_google_protobuf_UInt32Value__Output);
/**
* The time interval between ejection analysis sweeps. This can result in
* both new ejections as well as hosts being returned to service. Defaults
* to 10000ms or 10s.
*/
'interval'?: (_google_protobuf_Duration__Output);
/**
* The base time that a host is ejected for. The real time is equal to the
* base time multiplied by the number of times the host has been ejected.
* Defaults to 30000ms or 30s.
*/
'base_ejection_time'?: (_google_protobuf_Duration__Output);
/**
* The maximum % of an upstream cluster that can be ejected due to outlier
* detection. Defaults to 10% but will eject at least one host regardless of the value.
*/
'max_ejection_percent'?: (_google_protobuf_UInt32Value__Output);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through consecutive 5xx. This setting can be used to disable
* ejection or to ramp it up slowly. Defaults to 100.
*/
'enforcing_consecutive_5xx'?: (_google_protobuf_UInt32Value__Output);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through success rate statistics. This setting can be used to
* disable ejection or to ramp it up slowly. Defaults to 100.
*/
'enforcing_success_rate'?: (_google_protobuf_UInt32Value__Output);
/**
* The number of hosts in a cluster that must have enough request volume to
* detect success rate outliers. If the number of hosts is less than this
* setting, outlier detection via success rate statistics is not performed
* for any host in the cluster. Defaults to 5.
*/
'success_rate_minimum_hosts'?: (_google_protobuf_UInt32Value__Output);
/**
* The minimum number of total requests that must be collected in one
* interval (as defined by the interval duration above) to include this host
* in success rate based outlier detection. If the volume is lower than this
* setting, outlier detection via success rate statistics is not performed
* for that host. Defaults to 100.
*/
'success_rate_request_volume'?: (_google_protobuf_UInt32Value__Output);
/**
* This factor is used to determine the ejection threshold for success rate
* outlier ejection. The ejection threshold is the difference between the
* mean success rate, and the product of this factor and the standard
* deviation of the mean success rate: mean - (stdev *
* success_rate_stdev_factor). This factor is divided by a thousand to get a
* double. That is, if the desired factor is 1.9, the runtime value should
* be 1900. Defaults to 1900.
*/
'success_rate_stdev_factor'?: (_google_protobuf_UInt32Value__Output);
/**
* The number of consecutive gateway failures (502, 503, 504 status codes)
* before a consecutive gateway failure ejection occurs. Defaults to 5.
*/
'consecutive_gateway_failure'?: (_google_protobuf_UInt32Value__Output);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through consecutive gateway failures. This setting can be
* used to disable ejection or to ramp it up slowly. Defaults to 0.
*/
'enforcing_consecutive_gateway_failure'?: (_google_protobuf_UInt32Value__Output);
/**
* Determines whether to distinguish local origin failures from external errors. If set to true
* the following configuration parameters are taken into account:
* :ref:`consecutive_local_origin_failure<envoy_api_field_cluster.OutlierDetection.consecutive_local_origin_failure>`,
* :ref:`enforcing_consecutive_local_origin_failure<envoy_api_field_cluster.OutlierDetection.enforcing_consecutive_local_origin_failure>`
* and
* :ref:`enforcing_local_origin_success_rate<envoy_api_field_cluster.OutlierDetection.enforcing_local_origin_success_rate>`.
* Defaults to false.
*/
'split_external_local_origin_errors': (boolean);
/**
* The number of consecutive locally originated failures before ejection
* occurs. Defaults to 5. Parameter takes effect only when
* :ref:`split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
* is set to true.
*/
'consecutive_local_origin_failure'?: (_google_protobuf_UInt32Value__Output);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through consecutive locally originated failures. This setting can be
* used to disable ejection or to ramp it up slowly. Defaults to 100.
* Parameter takes effect only when
* :ref:`split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
* is set to true.
*/
'enforcing_consecutive_local_origin_failure'?: (_google_protobuf_UInt32Value__Output);
/**
* The % chance that a host will be actually ejected when an outlier status
* is detected through success rate statistics for locally originated errors.
* This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.
* Parameter takes effect only when
* :ref:`split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>`
* is set to true.
*/
'enforcing_local_origin_success_rate'?: (_google_protobuf_UInt32Value__Output);
/**
* The failure percentage to use when determining failure percentage-based outlier detection. If
* the failure percentage of a given host is greater than or equal to this value, it will be
* ejected. Defaults to 85.
*/
'failure_percentage_threshold'?: (_google_protobuf_UInt32Value__Output);
/**
* The % chance that a host will be actually ejected when an outlier status is detected through
* failure percentage statistics. This setting can be used to disable ejection or to ramp it up
* slowly. Defaults to 0.
*
* [#next-major-version: setting this without setting failure_percentage_threshold should be
* invalid in v4.]
*/
'enforcing_failure_percentage'?: (_google_protobuf_UInt32Value__Output);
/**
* The % chance that a host will be actually ejected when an outlier status is detected through
* local-origin failure percentage statistics. This setting can be used to disable ejection or to
* ramp it up slowly. Defaults to 0.
*/
'enforcing_failure_percentage_local_origin'?: (_google_protobuf_UInt32Value__Output);
/**
* The minimum number of hosts in a cluster in order to perform failure percentage-based ejection.
* If the total number of hosts in the cluster is less than this value, failure percentage-based
* ejection will not be performed. Defaults to 5.
*/
'failure_percentage_minimum_hosts'?: (_google_protobuf_UInt32Value__Output);
/**
* The minimum number of total requests that must be collected in one interval (as defined by the
* interval duration above) to perform failure percentage-based ejection for this host. If the
* volume is lower than this setting, failure percentage-based ejection will not be performed for
* this host. Defaults to 50.
*/
'failure_percentage_request_volume'?: (_google_protobuf_UInt32Value__Output);
}

View File

@ -0,0 +1,26 @@
// Original file: deps/envoy-api/envoy/api/v2/core/address.proto
import { SocketAddress as _envoy_api_v2_core_SocketAddress, SocketAddress__Output as _envoy_api_v2_core_SocketAddress__Output } from '../../../../envoy/api/v2/core/SocketAddress';
import { Pipe as _envoy_api_v2_core_Pipe, Pipe__Output as _envoy_api_v2_core_Pipe__Output } from '../../../../envoy/api/v2/core/Pipe';
/**
* Addresses specify either a logical or physical address and port, which are
* used to tell Envoy where to bind/listen, connect to upstream and find
* management servers.
*/
export interface Address {
'socket_address'?: (_envoy_api_v2_core_SocketAddress);
'pipe'?: (_envoy_api_v2_core_Pipe);
'address'?: "socket_address"|"pipe";
}
/**
* Addresses specify either a logical or physical address and port, which are
* used to tell Envoy where to bind/listen, connect to upstream and find
* management servers.
*/
export interface Address__Output {
'socket_address'?: (_envoy_api_v2_core_SocketAddress__Output);
'pipe'?: (_envoy_api_v2_core_Pipe__Output);
'address': "socket_address"|"pipe";
}

View File

@ -0,0 +1,18 @@
// Original file: deps/envoy-api/envoy/api/v2/core/config_source.proto
/**
* Aggregated Discovery Service (ADS) options. This is currently empty, but when
* set in :ref:`ConfigSource <envoy_api_msg_core.ConfigSource>` can be used to
* specify that ADS is to be used.
*/
export interface AggregatedConfigSource {
}
/**
* Aggregated Discovery Service (ADS) options. This is currently empty, but when
* set in :ref:`ConfigSource <envoy_api_msg_core.ConfigSource>` can be used to
* specify that ADS is to be used.
*/
export interface AggregatedConfigSource__Output {
}

View File

@ -0,0 +1,135 @@
// Original file: deps/envoy-api/envoy/api/v2/core/config_source.proto
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
import { GrpcService as _envoy_api_v2_core_GrpcService, GrpcService__Output as _envoy_api_v2_core_GrpcService__Output } from '../../../../envoy/api/v2/core/GrpcService';
import { RateLimitSettings as _envoy_api_v2_core_RateLimitSettings, RateLimitSettings__Output as _envoy_api_v2_core_RateLimitSettings__Output } from '../../../../envoy/api/v2/core/RateLimitSettings';
import { ApiVersion as _envoy_api_v2_core_ApiVersion } from '../../../../envoy/api/v2/core/ApiVersion';
// Original file: deps/envoy-api/envoy/api/v2/core/config_source.proto
/**
* APIs may be fetched via either REST or gRPC.
*/
export enum _envoy_api_v2_core_ApiConfigSource_ApiType {
/**
* Ideally this would be 'reserved 0' but one can't reserve the default
* value. Instead we throw an exception if this is ever used.
*/
UNSUPPORTED_REST_LEGACY = 0,
/**
* REST-JSON v2 API. The `canonical JSON encoding
* <https://developers.google.com/protocol-buffers/docs/proto3#json>`_ for
* the v2 protos is used.
*/
REST = 1,
/**
* gRPC v2 API.
*/
GRPC = 2,
/**
* Using the delta xDS gRPC service, i.e. DeltaDiscovery{Request,Response}
* rather than Discovery{Request,Response}. Rather than sending Envoy the entire state
* with every update, the xDS server only sends what has changed since the last update.
*/
DELTA_GRPC = 3,
}
/**
* API configuration source. This identifies the API type and cluster that Envoy
* will use to fetch an xDS API.
* [#next-free-field: 9]
*/
export interface ApiConfigSource {
/**
* API type (gRPC, REST, delta gRPC)
*/
'api_type'?: (_envoy_api_v2_core_ApiConfigSource_ApiType | keyof typeof _envoy_api_v2_core_ApiConfigSource_ApiType);
/**
* Cluster names should be used only with REST. If > 1
* cluster is defined, clusters will be cycled through if any kind of failure
* occurs.
*
* .. note::
*
* The cluster with name ``cluster_name`` must be statically defined and its
* type must not be ``EDS``.
*/
'cluster_names'?: (string)[];
/**
* For REST APIs, the delay between successive polls.
*/
'refresh_delay'?: (_google_protobuf_Duration);
/**
* Multiple gRPC services be provided for GRPC. If > 1 cluster is defined,
* services will be cycled through if any kind of failure occurs.
*/
'grpc_services'?: (_envoy_api_v2_core_GrpcService)[];
/**
* For REST APIs, the request timeout. If not set, a default value of 1s will be used.
*/
'request_timeout'?: (_google_protobuf_Duration);
/**
* For GRPC APIs, the rate limit settings. If present, discovery requests made by Envoy will be
* rate limited.
*/
'rate_limit_settings'?: (_envoy_api_v2_core_RateLimitSettings);
/**
* Skip the node identifier in subsequent discovery requests for streaming gRPC config types.
*/
'set_node_on_first_message_only'?: (boolean);
/**
* API version for xDS transport protocol. This describes the xDS gRPC/REST
* endpoint and version of [Delta]DiscoveryRequest/Response used on the wire.
*/
'transport_api_version'?: (_envoy_api_v2_core_ApiVersion | keyof typeof _envoy_api_v2_core_ApiVersion);
}
/**
* API configuration source. This identifies the API type and cluster that Envoy
* will use to fetch an xDS API.
* [#next-free-field: 9]
*/
export interface ApiConfigSource__Output {
/**
* API type (gRPC, REST, delta gRPC)
*/
'api_type': (keyof typeof _envoy_api_v2_core_ApiConfigSource_ApiType);
/**
* Cluster names should be used only with REST. If > 1
* cluster is defined, clusters will be cycled through if any kind of failure
* occurs.
*
* .. note::
*
* The cluster with name ``cluster_name`` must be statically defined and its
* type must not be ``EDS``.
*/
'cluster_names': (string)[];
/**
* For REST APIs, the delay between successive polls.
*/
'refresh_delay'?: (_google_protobuf_Duration__Output);
/**
* Multiple gRPC services be provided for GRPC. If > 1 cluster is defined,
* services will be cycled through if any kind of failure occurs.
*/
'grpc_services': (_envoy_api_v2_core_GrpcService__Output)[];
/**
* For REST APIs, the request timeout. If not set, a default value of 1s will be used.
*/
'request_timeout'?: (_google_protobuf_Duration__Output);
/**
* For GRPC APIs, the rate limit settings. If present, discovery requests made by Envoy will be
* rate limited.
*/
'rate_limit_settings'?: (_envoy_api_v2_core_RateLimitSettings__Output);
/**
* Skip the node identifier in subsequent discovery requests for streaming gRPC config types.
*/
'set_node_on_first_message_only': (boolean);
/**
* API version for xDS transport protocol. This describes the xDS gRPC/REST
* endpoint and version of [Delta]DiscoveryRequest/Response used on the wire.
*/
'transport_api_version': (keyof typeof _envoy_api_v2_core_ApiVersion);
}

View File

@ -0,0 +1,22 @@
// Original file: deps/envoy-api/envoy/api/v2/core/config_source.proto
/**
* xDS API version. This is used to describe both resource and transport
* protocol versions (in distinct configuration fields).
*/
export enum ApiVersion {
/**
* When not specified, we assume v2, to ease migration to Envoy's stable API
* versioning. If a client does not support v2 (e.g. due to deprecation), this
* is an invalid value.
*/
AUTO = 0,
/**
* Use xDS v2 API.
*/
V2 = 1,
/**
* Use xDS v3 API.
*/
V3 = 2,
}

View File

@ -0,0 +1,34 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { DataSource as _envoy_api_v2_core_DataSource, DataSource__Output as _envoy_api_v2_core_DataSource__Output } from '../../../../envoy/api/v2/core/DataSource';
import { RemoteDataSource as _envoy_api_v2_core_RemoteDataSource, RemoteDataSource__Output as _envoy_api_v2_core_RemoteDataSource__Output } from '../../../../envoy/api/v2/core/RemoteDataSource';
/**
* Async data source which support async data fetch.
*/
export interface AsyncDataSource {
/**
* Local async data source.
*/
'local'?: (_envoy_api_v2_core_DataSource);
/**
* Remote async data source.
*/
'remote'?: (_envoy_api_v2_core_RemoteDataSource);
'specifier'?: "local"|"remote";
}
/**
* Async data source which support async data fetch.
*/
export interface AsyncDataSource__Output {
/**
* Local async data source.
*/
'local'?: (_envoy_api_v2_core_DataSource__Output);
/**
* Remote async data source.
*/
'remote'?: (_envoy_api_v2_core_RemoteDataSource__Output);
'specifier': "local"|"remote";
}

View File

@ -0,0 +1,43 @@
// Original file: deps/envoy-api/envoy/api/v2/core/backoff.proto
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
/**
* Configuration defining a jittered exponential back off strategy.
*/
export interface BackoffStrategy {
/**
* The base interval to be used for the next back off computation. It should
* be greater than zero and less than or equal to :ref:`max_interval
* <envoy_api_field_core.BackoffStrategy.max_interval>`.
*/
'base_interval'?: (_google_protobuf_Duration);
/**
* Specifies the maximum interval between retries. This parameter is optional,
* but must be greater than or equal to the :ref:`base_interval
* <envoy_api_field_core.BackoffStrategy.base_interval>` if set. The default
* is 10 times the :ref:`base_interval
* <envoy_api_field_core.BackoffStrategy.base_interval>`.
*/
'max_interval'?: (_google_protobuf_Duration);
}
/**
* Configuration defining a jittered exponential back off strategy.
*/
export interface BackoffStrategy__Output {
/**
* The base interval to be used for the next back off computation. It should
* be greater than zero and less than or equal to :ref:`max_interval
* <envoy_api_field_core.BackoffStrategy.max_interval>`.
*/
'base_interval'?: (_google_protobuf_Duration__Output);
/**
* Specifies the maximum interval between retries. This parameter is optional,
* but must be greater than or equal to the :ref:`base_interval
* <envoy_api_field_core.BackoffStrategy.base_interval>` if set. The default
* is 10 times the :ref:`base_interval
* <envoy_api_field_core.BackoffStrategy.base_interval>`.
*/
'max_interval'?: (_google_protobuf_Duration__Output);
}

View File

@ -0,0 +1,49 @@
// Original file: deps/envoy-api/envoy/api/v2/core/address.proto
import { SocketAddress as _envoy_api_v2_core_SocketAddress, SocketAddress__Output as _envoy_api_v2_core_SocketAddress__Output } from '../../../../envoy/api/v2/core/SocketAddress';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
import { SocketOption as _envoy_api_v2_core_SocketOption, SocketOption__Output as _envoy_api_v2_core_SocketOption__Output } from '../../../../envoy/api/v2/core/SocketOption';
export interface BindConfig {
/**
* The address to bind to when creating a socket.
*/
'source_address'?: (_envoy_api_v2_core_SocketAddress);
/**
* Whether to set the *IP_FREEBIND* option when creating the socket. When this
* flag is set to true, allows the :ref:`source_address
* <envoy_api_field_UpstreamBindConfig.source_address>` to be an IP address
* that is not configured on the system running Envoy. When this flag is set
* to false, the option *IP_FREEBIND* is disabled on the socket. When this
* flag is not set (default), the socket is not modified, i.e. the option is
* neither enabled nor disabled.
*/
'freebind'?: (_google_protobuf_BoolValue);
/**
* Additional socket options that may not be present in Envoy source code or
* precompiled binaries.
*/
'socket_options'?: (_envoy_api_v2_core_SocketOption)[];
}
export interface BindConfig__Output {
/**
* The address to bind to when creating a socket.
*/
'source_address'?: (_envoy_api_v2_core_SocketAddress__Output);
/**
* Whether to set the *IP_FREEBIND* option when creating the socket. When this
* flag is set to true, allows the :ref:`source_address
* <envoy_api_field_UpstreamBindConfig.source_address>` to be an IP address
* that is not configured on the system running Envoy. When this flag is set
* to false, the option *IP_FREEBIND* is disabled on the socket. When this
* flag is not set (default), the socket is not modified, i.e. the option is
* neither enabled nor disabled.
*/
'freebind'?: (_google_protobuf_BoolValue__Output);
/**
* Additional socket options that may not be present in Envoy source code or
* precompiled binaries.
*/
'socket_options': (_envoy_api_v2_core_SocketOption__Output)[];
}

View File

@ -0,0 +1,36 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { SemanticVersion as _envoy_type_SemanticVersion, SemanticVersion__Output as _envoy_type_SemanticVersion__Output } from '../../../../envoy/type/SemanticVersion';
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
/**
* BuildVersion combines SemVer version of extension with free-form build information
* (i.e. 'alpha', 'private-build') as a set of strings.
*/
export interface BuildVersion {
/**
* SemVer version of extension.
*/
'version'?: (_envoy_type_SemanticVersion);
/**
* Free-form build information.
* Envoy defines several well known keys in the source/common/common/version.h file
*/
'metadata'?: (_google_protobuf_Struct);
}
/**
* BuildVersion combines SemVer version of extension with free-form build information
* (i.e. 'alpha', 'private-build') as a set of strings.
*/
export interface BuildVersion__Output {
/**
* SemVer version of extension.
*/
'version'?: (_envoy_type_SemanticVersion__Output);
/**
* Free-form build information.
* Envoy defines several well known keys in the source/common/common/version.h file
*/
'metadata'?: (_google_protobuf_Struct__Output);
}

View File

@ -0,0 +1,33 @@
// Original file: deps/envoy-api/envoy/api/v2/core/address.proto
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
/**
* CidrRange specifies an IP Address and a prefix length to construct
* the subnet mask for a `CIDR <https://tools.ietf.org/html/rfc4632>`_ range.
*/
export interface CidrRange {
/**
* IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``.
*/
'address_prefix'?: (string);
/**
* Length of prefix, e.g. 0, 32.
*/
'prefix_len'?: (_google_protobuf_UInt32Value);
}
/**
* CidrRange specifies an IP Address and a prefix length to construct
* the subnet mask for a `CIDR <https://tools.ietf.org/html/rfc4632>`_ range.
*/
export interface CidrRange__Output {
/**
* IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``.
*/
'address_prefix': (string);
/**
* Length of prefix, e.g. 0, 32.
*/
'prefix_len'?: (_google_protobuf_UInt32Value__Output);
}

View File

@ -0,0 +1,143 @@
// Original file: deps/envoy-api/envoy/api/v2/core/config_source.proto
import { ApiConfigSource as _envoy_api_v2_core_ApiConfigSource, ApiConfigSource__Output as _envoy_api_v2_core_ApiConfigSource__Output } from '../../../../envoy/api/v2/core/ApiConfigSource';
import { AggregatedConfigSource as _envoy_api_v2_core_AggregatedConfigSource, AggregatedConfigSource__Output as _envoy_api_v2_core_AggregatedConfigSource__Output } from '../../../../envoy/api/v2/core/AggregatedConfigSource';
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
import { SelfConfigSource as _envoy_api_v2_core_SelfConfigSource, SelfConfigSource__Output as _envoy_api_v2_core_SelfConfigSource__Output } from '../../../../envoy/api/v2/core/SelfConfigSource';
import { ApiVersion as _envoy_api_v2_core_ApiVersion } from '../../../../envoy/api/v2/core/ApiVersion';
/**
* Configuration for :ref:`listeners <config_listeners>`, :ref:`clusters
* <config_cluster_manager>`, :ref:`routes
* <envoy_api_msg_RouteConfiguration>`, :ref:`endpoints
* <arch_overview_service_discovery>` etc. may either be sourced from the
* filesystem or from an xDS API source. Filesystem configs are watched with
* inotify for updates.
* [#next-free-field: 7]
*/
export interface ConfigSource {
/**
* Path on the filesystem to source and watch for configuration updates.
* When sourcing configuration for :ref:`secret <envoy_api_msg_auth.Secret>`,
* the certificate and key files are also watched for updates.
*
* .. note::
*
* 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.
*/
'path'?: (string);
/**
* API configuration source.
*/
'api_config_source'?: (_envoy_api_v2_core_ApiConfigSource);
/**
* When set, ADS will be used to fetch resources. The ADS API configuration
* source in the bootstrap configuration is used.
*/
'ads'?: (_envoy_api_v2_core_AggregatedConfigSource);
/**
* When this timeout is specified, Envoy will wait no longer than the specified time for first
* config response on this xDS subscription during the :ref:`initialization process
* <arch_overview_initialization>`. After reaching the timeout, Envoy will move to the next
* initialization phase, even if the first config is not delivered yet. The timer is activated
* when the xDS API subscription starts, and is disarmed on first config update or on error. 0
* means no timeout - Envoy will wait indefinitely for the first xDS config (unless another
* timeout applies). The default is 15s.
*/
'initial_fetch_timeout'?: (_google_protobuf_Duration);
/**
* [#not-implemented-hide:]
* When set, the client will access the resources from the same server it got the
* ConfigSource from, although not necessarily from the same stream. This is similar to the
* :ref:`ads<envoy_api_field.ConfigSource.ads>` field, except that the client may use a
* different stream to the same server. As a result, this field can be used for things
* like LRS that cannot be sent on an ADS stream. It can also be used to link from (e.g.)
* LDS to RDS on the same server without requiring the management server to know its name
* or required credentials.
* [#next-major-version: In xDS v3, consider replacing the ads field with this one, since
* this field can implicitly mean to use the same stream in the case where the ConfigSource
* is provided via ADS and the specified data can also be obtained via ADS.]
*/
'self'?: (_envoy_api_v2_core_SelfConfigSource);
/**
* API version for xDS resources. This implies the type URLs that the client
* will request for resources and the resource type that the client will in
* turn expect to be delivered.
*/
'resource_api_version'?: (_envoy_api_v2_core_ApiVersion | keyof typeof _envoy_api_v2_core_ApiVersion);
'config_source_specifier'?: "path"|"api_config_source"|"ads"|"self";
}
/**
* Configuration for :ref:`listeners <config_listeners>`, :ref:`clusters
* <config_cluster_manager>`, :ref:`routes
* <envoy_api_msg_RouteConfiguration>`, :ref:`endpoints
* <arch_overview_service_discovery>` etc. may either be sourced from the
* filesystem or from an xDS API source. Filesystem configs are watched with
* inotify for updates.
* [#next-free-field: 7]
*/
export interface ConfigSource__Output {
/**
* Path on the filesystem to source and watch for configuration updates.
* When sourcing configuration for :ref:`secret <envoy_api_msg_auth.Secret>`,
* the certificate and key files are also watched for updates.
*
* .. note::
*
* 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.
*/
'path'?: (string);
/**
* API configuration source.
*/
'api_config_source'?: (_envoy_api_v2_core_ApiConfigSource__Output);
/**
* When set, ADS will be used to fetch resources. The ADS API configuration
* source in the bootstrap configuration is used.
*/
'ads'?: (_envoy_api_v2_core_AggregatedConfigSource__Output);
/**
* When this timeout is specified, Envoy will wait no longer than the specified time for first
* config response on this xDS subscription during the :ref:`initialization process
* <arch_overview_initialization>`. After reaching the timeout, Envoy will move to the next
* initialization phase, even if the first config is not delivered yet. The timer is activated
* when the xDS API subscription starts, and is disarmed on first config update or on error. 0
* means no timeout - Envoy will wait indefinitely for the first xDS config (unless another
* timeout applies). The default is 15s.
*/
'initial_fetch_timeout'?: (_google_protobuf_Duration__Output);
/**
* [#not-implemented-hide:]
* When set, the client will access the resources from the same server it got the
* ConfigSource from, although not necessarily from the same stream. This is similar to the
* :ref:`ads<envoy_api_field.ConfigSource.ads>` field, except that the client may use a
* different stream to the same server. As a result, this field can be used for things
* like LRS that cannot be sent on an ADS stream. It can also be used to link from (e.g.)
* LDS to RDS on the same server without requiring the management server to know its name
* or required credentials.
* [#next-major-version: In xDS v3, consider replacing the ads field with this one, since
* this field can implicitly mean to use the same stream in the case where the ConfigSource
* is provided via ADS and the specified data can also be obtained via ADS.]
*/
'self'?: (_envoy_api_v2_core_SelfConfigSource__Output);
/**
* API version for xDS resources. This implies the type URLs that the client
* will request for resources and the resource type that the client will in
* turn expect to be delivered.
*/
'resource_api_version': (keyof typeof _envoy_api_v2_core_ApiVersion);
'config_source_specifier': "path"|"api_config_source"|"ads"|"self";
}

View File

@ -0,0 +1,26 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
/**
* Identifies a specific ControlPlane instance that Envoy is connected to.
*/
export interface ControlPlane {
/**
* An opaque control plane identifier that uniquely identifies an instance
* of control plane. This can be used to identify which control plane instance,
* the Envoy is connected to.
*/
'identifier'?: (string);
}
/**
* Identifies a specific ControlPlane instance that Envoy is connected to.
*/
export interface ControlPlane__Output {
/**
* An opaque control plane identifier that uniquely identifies an instance
* of control plane. This can be used to identify which control plane instance,
* the Envoy is connected to.
*/
'identifier': (string);
}

View File

@ -0,0 +1,40 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
/**
* Data source consisting of either a file or an inline value.
*/
export interface DataSource {
/**
* Local filesystem data source.
*/
'filename'?: (string);
/**
* Bytes inlined in the configuration.
*/
'inline_bytes'?: (Buffer | Uint8Array | string);
/**
* String inlined in the configuration.
*/
'inline_string'?: (string);
'specifier'?: "filename"|"inline_bytes"|"inline_string";
}
/**
* Data source consisting of either a file or an inline value.
*/
export interface DataSource__Output {
/**
* Local filesystem data source.
*/
'filename'?: (string);
/**
* Bytes inlined in the configuration.
*/
'inline_bytes'?: (Buffer);
/**
* String inlined in the configuration.
*/
'inline_string'?: (string);
'specifier': "filename"|"inline_bytes"|"inline_string";
}

View File

@ -0,0 +1,27 @@
// Original file: deps/envoy-api/envoy/api/v2/core/event_service_config.proto
import { GrpcService as _envoy_api_v2_core_GrpcService, GrpcService__Output as _envoy_api_v2_core_GrpcService__Output } from '../../../../envoy/api/v2/core/GrpcService';
/**
* [#not-implemented-hide:]
* Configuration of the event reporting service endpoint.
*/
export interface EventServiceConfig {
/**
* Specifies the gRPC service that hosts the event reporting service.
*/
'grpc_service'?: (_envoy_api_v2_core_GrpcService);
'config_source_specifier'?: "grpc_service";
}
/**
* [#not-implemented-hide:]
* Configuration of the event reporting service endpoint.
*/
export interface EventServiceConfig__Output {
/**
* Specifies the gRPC service that hosts the event reporting service.
*/
'grpc_service'?: (_envoy_api_v2_core_GrpcService__Output);
'config_source_specifier': "grpc_service";
}

View File

@ -0,0 +1,75 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { BuildVersion as _envoy_api_v2_core_BuildVersion, BuildVersion__Output as _envoy_api_v2_core_BuildVersion__Output } from '../../../../envoy/api/v2/core/BuildVersion';
/**
* Version and identification for an Envoy extension.
* [#next-free-field: 6]
*/
export interface Extension {
/**
* This is the name of the Envoy filter as specified in the Envoy
* configuration, e.g. envoy.filters.http.router, com.acme.widget.
*/
'name'?: (string);
/**
* Category of the extension.
* Extension category names use reverse DNS notation. For instance "envoy.filters.listener"
* for Envoy's built-in listener filters or "com.acme.filters.http" for HTTP filters from
* acme.com vendor.
* [#comment:TODO(yanavlasov): Link to the doc with existing envoy category names.]
*/
'category'?: (string);
/**
* [#not-implemented-hide:] Type descriptor of extension configuration proto.
* [#comment:TODO(yanavlasov): Link to the doc with existing configuration protos.]
* [#comment:TODO(yanavlasov): Add tests when PR #9391 lands.]
*/
'type_descriptor'?: (string);
/**
* The version is a property of the extension and maintained independently
* of other extensions and the Envoy API.
* This field is not set when extension did not provide version information.
*/
'version'?: (_envoy_api_v2_core_BuildVersion);
/**
* Indicates that the extension is present but was disabled via dynamic configuration.
*/
'disabled'?: (boolean);
}
/**
* Version and identification for an Envoy extension.
* [#next-free-field: 6]
*/
export interface Extension__Output {
/**
* This is the name of the Envoy filter as specified in the Envoy
* configuration, e.g. envoy.filters.http.router, com.acme.widget.
*/
'name': (string);
/**
* Category of the extension.
* Extension category names use reverse DNS notation. For instance "envoy.filters.listener"
* for Envoy's built-in listener filters or "com.acme.filters.http" for HTTP filters from
* acme.com vendor.
* [#comment:TODO(yanavlasov): Link to the doc with existing envoy category names.]
*/
'category': (string);
/**
* [#not-implemented-hide:] Type descriptor of extension configuration proto.
* [#comment:TODO(yanavlasov): Link to the doc with existing configuration protos.]
* [#comment:TODO(yanavlasov): Add tests when PR #9391 lands.]
*/
'type_descriptor': (string);
/**
* The version is a property of the extension and maintained independently
* of other extensions and the Envoy API.
* This field is not set when extension did not provide version information.
*/
'version'?: (_envoy_api_v2_core_BuildVersion__Output);
/**
* Indicates that the extension is present but was disabled via dynamic configuration.
*/
'disabled': (boolean);
}

View File

@ -0,0 +1,17 @@
// Original file: deps/envoy-api/envoy/api/v2/core/protocol.proto
import { Http2ProtocolOptions as _envoy_api_v2_core_Http2ProtocolOptions, Http2ProtocolOptions__Output as _envoy_api_v2_core_Http2ProtocolOptions__Output } from '../../../../envoy/api/v2/core/Http2ProtocolOptions';
/**
* [#not-implemented-hide:]
*/
export interface GrpcProtocolOptions {
'http2_protocol_options'?: (_envoy_api_v2_core_Http2ProtocolOptions);
}
/**
* [#not-implemented-hide:]
*/
export interface GrpcProtocolOptions__Output {
'http2_protocol_options'?: (_envoy_api_v2_core_Http2ProtocolOptions__Output);
}

View File

@ -0,0 +1,481 @@
// Original file: deps/envoy-api/envoy/api/v2/core/grpc_service.proto
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
import { HeaderValue as _envoy_api_v2_core_HeaderValue, HeaderValue__Output as _envoy_api_v2_core_HeaderValue__Output } from '../../../../envoy/api/v2/core/HeaderValue';
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { DataSource as _envoy_api_v2_core_DataSource, DataSource__Output as _envoy_api_v2_core_DataSource__Output } from '../../../../envoy/api/v2/core/DataSource';
import { Empty as _google_protobuf_Empty, Empty__Output as _google_protobuf_Empty__Output } from '../../../../google/protobuf/Empty';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
import { Long } from '@grpc/proto-loader';
/**
* [#next-free-field: 8]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials {
/**
* Access token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.
*/
'access_token'?: (string);
/**
* Google Compute Engine credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_compute_engine'?: (_google_protobuf_Empty);
/**
* Google refresh token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.
*/
'google_refresh_token'?: (string);
/**
* Service Account JWT Access credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.
*/
'service_account_jwt_access'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials);
/**
* Google IAM credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.
*/
'google_iam'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials);
/**
* Custom authenticator credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.
* https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.
*/
'from_plugin'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin);
/**
* Custom security token service which implements OAuth 2.0 token exchange.
* https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16
* See https://github.com/grpc/grpc/pull/19587.
*/
'sts_service'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_StsService);
'credential_specifier'?: "access_token"|"google_compute_engine"|"google_refresh_token"|"service_account_jwt_access"|"google_iam"|"from_plugin"|"sts_service";
}
/**
* [#next-free-field: 8]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials__Output {
/**
* Access token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.
*/
'access_token'?: (string);
/**
* Google Compute Engine credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_compute_engine'?: (_google_protobuf_Empty__Output);
/**
* Google refresh token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.
*/
'google_refresh_token'?: (string);
/**
* Service Account JWT Access credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.
*/
'service_account_jwt_access'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials__Output);
/**
* Google IAM credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.
*/
'google_iam'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials__Output);
/**
* Custom authenticator credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.
* https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.
*/
'from_plugin'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin__Output);
/**
* Custom security token service which implements OAuth 2.0 token exchange.
* https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16
* See https://github.com/grpc/grpc/pull/19587.
*/
'sts_service'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_StsService__Output);
'credential_specifier': "access_token"|"google_compute_engine"|"google_refresh_token"|"service_account_jwt_access"|"google_iam"|"from_plugin"|"sts_service";
}
/**
* See https://grpc.io/docs/guides/auth.html#credential-types to understand Channel and Call
* credential types.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_ChannelCredentials {
'ssl_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials);
/**
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_default'?: (_google_protobuf_Empty);
'local_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials);
'credential_specifier'?: "ssl_credentials"|"google_default"|"local_credentials";
}
/**
* See https://grpc.io/docs/guides/auth.html#credential-types to understand Channel and Call
* credential types.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_ChannelCredentials__Output {
'ssl_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials__Output);
/**
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_default'?: (_google_protobuf_Empty__Output);
'local_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials__Output);
'credential_specifier': "ssl_credentials"|"google_default"|"local_credentials";
}
export interface _envoy_api_v2_core_GrpcService_EnvoyGrpc {
/**
* The name of the upstream gRPC cluster. SSL credentials will be supplied
* in the :ref:`Cluster <envoy_api_msg_Cluster>` :ref:`transport_socket
* <envoy_api_field_Cluster.transport_socket>`.
*/
'cluster_name'?: (string);
}
export interface _envoy_api_v2_core_GrpcService_EnvoyGrpc__Output {
/**
* The name of the upstream gRPC cluster. SSL credentials will be supplied
* in the :ref:`Cluster <envoy_api_msg_Cluster>` :ref:`transport_socket
* <envoy_api_field_Cluster.transport_socket>`.
*/
'cluster_name': (string);
}
/**
* [#next-free-field: 7]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc {
/**
* The target URI when using the `Google C++ gRPC client
* <https://github.com/grpc/grpc>`_. SSL credentials will be supplied in
* :ref:`channel_credentials <envoy_api_field_core.GrpcService.GoogleGrpc.channel_credentials>`.
*/
'target_uri'?: (string);
'channel_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_ChannelCredentials);
/**
* A set of call credentials that can be composed with `channel credentials
* <https://grpc.io/docs/guides/auth.html#credential-types>`_.
*/
'call_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials)[];
/**
* The human readable prefix to use when emitting statistics for the gRPC
* service.
*
* .. csv-table::
* :header: Name, Type, Description
* :widths: 1, 1, 2
*
* streams_total, Counter, Total number of streams opened
* streams_closed_<gRPC status code>, Counter, Total streams closed with <gRPC status code>
*/
'stat_prefix'?: (string);
/**
* The name of the Google gRPC credentials factory to use. This must have been registered with
* Envoy. If this is empty, a default credentials factory will be used that sets up channel
* credentials based on other configuration parameters.
*/
'credentials_factory_name'?: (string);
/**
* Additional configuration for site-specific customizations of the Google
* gRPC library.
*/
'config'?: (_google_protobuf_Struct);
}
/**
* [#next-free-field: 7]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc__Output {
/**
* The target URI when using the `Google C++ gRPC client
* <https://github.com/grpc/grpc>`_. SSL credentials will be supplied in
* :ref:`channel_credentials <envoy_api_field_core.GrpcService.GoogleGrpc.channel_credentials>`.
*/
'target_uri': (string);
'channel_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_ChannelCredentials__Output);
/**
* A set of call credentials that can be composed with `channel credentials
* <https://grpc.io/docs/guides/auth.html#credential-types>`_.
*/
'call_credentials': (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials__Output)[];
/**
* The human readable prefix to use when emitting statistics for the gRPC
* service.
*
* .. csv-table::
* :header: Name, Type, Description
* :widths: 1, 1, 2
*
* streams_total, Counter, Total number of streams opened
* streams_closed_<gRPC status code>, Counter, Total streams closed with <gRPC status code>
*/
'stat_prefix': (string);
/**
* The name of the Google gRPC credentials factory to use. This must have been registered with
* Envoy. If this is empty, a default credentials factory will be used that sets up channel
* credentials based on other configuration parameters.
*/
'credentials_factory_name': (string);
/**
* Additional configuration for site-specific customizations of the Google
* gRPC library.
*/
'config'?: (_google_protobuf_Struct__Output);
}
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials {
'authorization_token'?: (string);
'authority_selector'?: (string);
}
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials__Output {
'authorization_token': (string);
'authority_selector': (string);
}
/**
* Local channel credentials. Only UDS is supported for now.
* See https://github.com/grpc/grpc/pull/15909.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials {
}
/**
* Local channel credentials. Only UDS is supported for now.
* See https://github.com/grpc/grpc/pull/15909.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials__Output {
}
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin {
'name'?: (string);
'config'?: (_google_protobuf_Struct);
'typed_config'?: (_google_protobuf_Any);
'config_type'?: "config"|"typed_config";
}
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin__Output {
'name': (string);
'config'?: (_google_protobuf_Struct__Output);
'typed_config'?: (_google_protobuf_Any__Output);
'config_type': "config"|"typed_config";
}
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials {
'json_key'?: (string);
'token_lifetime_seconds'?: (number | string | Long);
}
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials__Output {
'json_key': (string);
'token_lifetime_seconds': (string);
}
/**
* See https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials {
/**
* PEM encoded server root certificates.
*/
'root_certs'?: (_envoy_api_v2_core_DataSource);
/**
* PEM encoded client private key.
*/
'private_key'?: (_envoy_api_v2_core_DataSource);
/**
* PEM encoded client certificate chain.
*/
'cert_chain'?: (_envoy_api_v2_core_DataSource);
}
/**
* See https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials__Output {
/**
* PEM encoded server root certificates.
*/
'root_certs'?: (_envoy_api_v2_core_DataSource__Output);
/**
* PEM encoded client private key.
*/
'private_key'?: (_envoy_api_v2_core_DataSource__Output);
/**
* PEM encoded client certificate chain.
*/
'cert_chain'?: (_envoy_api_v2_core_DataSource__Output);
}
/**
* Security token service configuration that allows Google gRPC to
* fetch security token from an OAuth 2.0 authorization server.
* See https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16 and
* https://github.com/grpc/grpc/pull/19587.
* [#next-free-field: 10]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_StsService {
/**
* URI of the token exchange service that handles token exchange requests.
* [#comment:TODO(asraa): Add URI validation when implemented. Tracked by
* https://github.com/envoyproxy/protoc-gen-validate/issues/303]
*/
'token_exchange_service_uri'?: (string);
/**
* Location of the target service or resource where the client
* intends to use the requested security token.
*/
'resource'?: (string);
/**
* Logical name of the target service where the client intends to
* use the requested security token.
*/
'audience'?: (string);
/**
* The desired scope of the requested security token in the
* context of the service or resource where the token will be used.
*/
'scope'?: (string);
/**
* Type of the requested security token.
*/
'requested_token_type'?: (string);
/**
* The path of subject token, a security token that represents the
* identity of the party on behalf of whom the request is being made.
*/
'subject_token_path'?: (string);
/**
* Type of the subject token.
*/
'subject_token_type'?: (string);
/**
* The path of actor token, a security token that represents the identity
* of the acting party. The acting party is authorized to use the
* requested security token and act on behalf of the subject.
*/
'actor_token_path'?: (string);
/**
* Type of the actor token.
*/
'actor_token_type'?: (string);
}
/**
* Security token service configuration that allows Google gRPC to
* fetch security token from an OAuth 2.0 authorization server.
* See https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16 and
* https://github.com/grpc/grpc/pull/19587.
* [#next-free-field: 10]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_StsService__Output {
/**
* URI of the token exchange service that handles token exchange requests.
* [#comment:TODO(asraa): Add URI validation when implemented. Tracked by
* https://github.com/envoyproxy/protoc-gen-validate/issues/303]
*/
'token_exchange_service_uri': (string);
/**
* Location of the target service or resource where the client
* intends to use the requested security token.
*/
'resource': (string);
/**
* Logical name of the target service where the client intends to
* use the requested security token.
*/
'audience': (string);
/**
* The desired scope of the requested security token in the
* context of the service or resource where the token will be used.
*/
'scope': (string);
/**
* Type of the requested security token.
*/
'requested_token_type': (string);
/**
* The path of subject token, a security token that represents the
* identity of the party on behalf of whom the request is being made.
*/
'subject_token_path': (string);
/**
* Type of the subject token.
*/
'subject_token_type': (string);
/**
* The path of actor token, a security token that represents the identity
* of the acting party. The acting party is authorized to use the
* requested security token and act on behalf of the subject.
*/
'actor_token_path': (string);
/**
* Type of the actor token.
*/
'actor_token_type': (string);
}
/**
* gRPC service configuration. This is used by :ref:`ApiConfigSource
* <envoy_api_msg_core.ApiConfigSource>` and filter configurations.
* [#next-free-field: 6]
*/
export interface GrpcService {
/**
* Envoy's in-built gRPC client.
* See the :ref:`gRPC services overview <arch_overview_grpc_services>`
* documentation for discussion on gRPC client selection.
*/
'envoy_grpc'?: (_envoy_api_v2_core_GrpcService_EnvoyGrpc);
/**
* `Google C++ gRPC client <https://github.com/grpc/grpc>`_
* See the :ref:`gRPC services overview <arch_overview_grpc_services>`
* documentation for discussion on gRPC client selection.
*/
'google_grpc'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc);
/**
* The timeout for the gRPC request. This is the timeout for a specific
* request.
*/
'timeout'?: (_google_protobuf_Duration);
/**
* Additional metadata to include in streams initiated to the GrpcService.
* This can be used for scenarios in which additional ad hoc authorization
* headers (e.g. ``x-foo-bar: baz-key``) are to be injected.
*/
'initial_metadata'?: (_envoy_api_v2_core_HeaderValue)[];
'target_specifier'?: "envoy_grpc"|"google_grpc";
}
/**
* gRPC service configuration. This is used by :ref:`ApiConfigSource
* <envoy_api_msg_core.ApiConfigSource>` and filter configurations.
* [#next-free-field: 6]
*/
export interface GrpcService__Output {
/**
* Envoy's in-built gRPC client.
* See the :ref:`gRPC services overview <arch_overview_grpc_services>`
* documentation for discussion on gRPC client selection.
*/
'envoy_grpc'?: (_envoy_api_v2_core_GrpcService_EnvoyGrpc__Output);
/**
* `Google C++ gRPC client <https://github.com/grpc/grpc>`_
* See the :ref:`gRPC services overview <arch_overview_grpc_services>`
* documentation for discussion on gRPC client selection.
*/
'google_grpc'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc__Output);
/**
* The timeout for the gRPC request. This is the timeout for a specific
* request.
*/
'timeout'?: (_google_protobuf_Duration__Output);
/**
* Additional metadata to include in streams initiated to the GrpcService.
* This can be used for scenarios in which additional ad hoc authorization
* headers (e.g. ``x-foo-bar: baz-key``) are to be injected.
*/
'initial_metadata': (_envoy_api_v2_core_HeaderValue__Output)[];
'target_specifier': "envoy_grpc"|"google_grpc";
}

View File

@ -0,0 +1,17 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { HeaderValue as _envoy_api_v2_core_HeaderValue, HeaderValue__Output as _envoy_api_v2_core_HeaderValue__Output } from '../../../../envoy/api/v2/core/HeaderValue';
/**
* Wrapper for a set of headers.
*/
export interface HeaderMap {
'headers'?: (_envoy_api_v2_core_HeaderValue)[];
}
/**
* Wrapper for a set of headers.
*/
export interface HeaderMap__Output {
'headers': (_envoy_api_v2_core_HeaderValue__Output)[];
}

View File

@ -0,0 +1,38 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
/**
* Header name/value pair.
*/
export interface HeaderValue {
/**
* Header name.
*/
'key'?: (string);
/**
* Header value.
*
* The same :ref:`format specifier <config_access_log_format>` as used for
* :ref:`HTTP access logging <config_access_log>` applies here, however
* unknown header values are replaced with the empty string instead of `-`.
*/
'value'?: (string);
}
/**
* Header name/value pair.
*/
export interface HeaderValue__Output {
/**
* Header name.
*/
'key': (string);
/**
* Header value.
*
* The same :ref:`format specifier <config_access_log_format>` as used for
* :ref:`HTTP access logging <config_access_log>` applies here, however
* unknown header values are replaced with the empty string instead of `-`.
*/
'value': (string);
}

View File

@ -0,0 +1,34 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { HeaderValue as _envoy_api_v2_core_HeaderValue, HeaderValue__Output as _envoy_api_v2_core_HeaderValue__Output } from '../../../../envoy/api/v2/core/HeaderValue';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
/**
* Header name/value pair plus option to control append behavior.
*/
export interface HeaderValueOption {
/**
* Header name/value pair that this option applies to.
*/
'header'?: (_envoy_api_v2_core_HeaderValue);
/**
* Should the value be appended? If true (default), the value is appended to
* existing values.
*/
'append'?: (_google_protobuf_BoolValue);
}
/**
* Header name/value pair plus option to control append behavior.
*/
export interface HeaderValueOption__Output {
/**
* Header name/value pair that this option applies to.
*/
'header'?: (_envoy_api_v2_core_HeaderValue__Output);
/**
* Should the value be appended? If true (default), the value is appended to
* existing values.
*/
'append'?: (_google_protobuf_BoolValue__Output);
}

View File

@ -0,0 +1,607 @@
// Original file: deps/envoy-api/envoy/api/v2/core/health_check.proto
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
import { EventServiceConfig as _envoy_api_v2_core_EventServiceConfig, EventServiceConfig__Output as _envoy_api_v2_core_EventServiceConfig__Output } from '../../../../envoy/api/v2/core/EventServiceConfig';
import { HeaderValueOption as _envoy_api_v2_core_HeaderValueOption, HeaderValueOption__Output as _envoy_api_v2_core_HeaderValueOption__Output } from '../../../../envoy/api/v2/core/HeaderValueOption';
import { Int64Range as _envoy_type_Int64Range, Int64Range__Output as _envoy_type_Int64Range__Output } from '../../../../envoy/type/Int64Range';
import { CodecClientType as _envoy_type_CodecClientType } from '../../../../envoy/type/CodecClientType';
import { StringMatcher as _envoy_type_matcher_StringMatcher, StringMatcher__Output as _envoy_type_matcher_StringMatcher__Output } from '../../../../envoy/type/matcher/StringMatcher';
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
import { Long } from '@grpc/proto-loader';
/**
* Custom health check.
*/
export interface _envoy_api_v2_core_HealthCheck_CustomHealthCheck {
/**
* The registered name of the custom health checker.
*/
'name'?: (string);
'config'?: (_google_protobuf_Struct);
'typed_config'?: (_google_protobuf_Any);
/**
* A custom health checker specific configuration which depends on the custom health checker
* being instantiated. See :api:`envoy/config/health_checker` for reference.
*/
'config_type'?: "config"|"typed_config";
}
/**
* Custom health check.
*/
export interface _envoy_api_v2_core_HealthCheck_CustomHealthCheck__Output {
/**
* The registered name of the custom health checker.
*/
'name': (string);
'config'?: (_google_protobuf_Struct__Output);
'typed_config'?: (_google_protobuf_Any__Output);
/**
* A custom health checker specific configuration which depends on the custom health checker
* being instantiated. See :api:`envoy/config/health_checker` for reference.
*/
'config_type': "config"|"typed_config";
}
/**
* `grpc.health.v1.Health
* <https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto>`_-based
* healthcheck. See `gRPC doc <https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_
* for details.
*/
export interface _envoy_api_v2_core_HealthCheck_GrpcHealthCheck {
/**
* An optional service name parameter which will be sent to gRPC service in
* `grpc.health.v1.HealthCheckRequest
* <https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20>`_.
* message. See `gRPC health-checking overview
* <https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_ for more information.
*/
'service_name'?: (string);
/**
* The value of the :authority header in the gRPC health check request. If
* left empty (default value), the name of the cluster this health check is associated
* with will be used. The authority header can be customized for a specific endpoint by setting
* the :ref:`hostname <envoy_api_field_endpoint.Endpoint.HealthCheckConfig.hostname>` field.
*/
'authority'?: (string);
}
/**
* `grpc.health.v1.Health
* <https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto>`_-based
* healthcheck. See `gRPC doc <https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_
* for details.
*/
export interface _envoy_api_v2_core_HealthCheck_GrpcHealthCheck__Output {
/**
* An optional service name parameter which will be sent to gRPC service in
* `grpc.health.v1.HealthCheckRequest
* <https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20>`_.
* message. See `gRPC health-checking overview
* <https://github.com/grpc/grpc/blob/master/doc/health-checking.md>`_ for more information.
*/
'service_name': (string);
/**
* The value of the :authority header in the gRPC health check request. If
* left empty (default value), the name of the cluster this health check is associated
* with will be used. The authority header can be customized for a specific endpoint by setting
* the :ref:`hostname <envoy_api_field_endpoint.Endpoint.HealthCheckConfig.hostname>` field.
*/
'authority': (string);
}
/**
* [#next-free-field: 12]
*/
export interface _envoy_api_v2_core_HealthCheck_HttpHealthCheck {
/**
* The value of the host header in the HTTP health check request. If
* left empty (default value), the name of the cluster this health check is associated
* with will be used. The host header can be customized for a specific endpoint by setting the
* :ref:`hostname <envoy_api_field_endpoint.Endpoint.HealthCheckConfig.hostname>` field.
*/
'host'?: (string);
/**
* Specifies the HTTP path that will be requested during health checking. For example
* * /healthcheck*.
*/
'path'?: (string);
/**
* [#not-implemented-hide:] HTTP specific payload.
*/
'send'?: (_envoy_api_v2_core_HealthCheck_Payload);
/**
* [#not-implemented-hide:] HTTP specific response.
*/
'receive'?: (_envoy_api_v2_core_HealthCheck_Payload);
/**
* An optional service name parameter which is used to validate the identity of
* the health checked cluster. See the :ref:`architecture overview
* <arch_overview_health_checking_identity>` for more information.
*
* .. attention::
*
* This field has been deprecated in favor of `service_name_matcher` for better flexibility
* over matching with service-cluster name.
*/
'service_name'?: (string);
/**
* Specifies a list of HTTP headers that should be added to each request 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>`.
*/
'request_headers_to_add'?: (_envoy_api_v2_core_HeaderValueOption)[];
/**
* Specifies a list of HTTP headers that should be removed from each request that is sent to the
* health checked cluster.
*/
'request_headers_to_remove'?: (string)[];
/**
* If set, health checks will be made using http/2.
* Deprecated, use :ref:`codec_client_type
* <envoy_api_field_core.HealthCheck.HttpHealthCheck.codec_client_type>` instead.
*/
'use_http2'?: (boolean);
/**
* Specifies a list of HTTP response statuses considered healthy. If provided, replaces default
* 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open
* semantics of :ref:`Int64Range <envoy_api_msg_type.Int64Range>`. The start and end of each
* range are required. Only statuses in the range [100, 600) are allowed.
*/
'expected_statuses'?: (_envoy_type_Int64Range)[];
/**
* Use specified application protocol for health checks.
*/
'codec_client_type'?: (_envoy_type_CodecClientType | keyof typeof _envoy_type_CodecClientType);
/**
* An optional service name parameter which is used to validate the identity of
* the health checked cluster using a :ref:`StringMatcher
* <envoy_api_msg_type.matcher.StringMatcher>`. See the :ref:`architecture overview
* <arch_overview_health_checking_identity>` for more information.
*/
'service_name_matcher'?: (_envoy_type_matcher_StringMatcher);
}
/**
* [#next-free-field: 12]
*/
export interface _envoy_api_v2_core_HealthCheck_HttpHealthCheck__Output {
/**
* The value of the host header in the HTTP health check request. If
* left empty (default value), the name of the cluster this health check is associated
* with will be used. The host header can be customized for a specific endpoint by setting the
* :ref:`hostname <envoy_api_field_endpoint.Endpoint.HealthCheckConfig.hostname>` field.
*/
'host': (string);
/**
* Specifies the HTTP path that will be requested during health checking. For example
* * /healthcheck*.
*/
'path': (string);
/**
* [#not-implemented-hide:] HTTP specific payload.
*/
'send'?: (_envoy_api_v2_core_HealthCheck_Payload__Output);
/**
* [#not-implemented-hide:] HTTP specific response.
*/
'receive'?: (_envoy_api_v2_core_HealthCheck_Payload__Output);
/**
* An optional service name parameter which is used to validate the identity of
* the health checked cluster. See the :ref:`architecture overview
* <arch_overview_health_checking_identity>` for more information.
*
* .. attention::
*
* This field has been deprecated in favor of `service_name_matcher` for better flexibility
* over matching with service-cluster name.
*/
'service_name': (string);
/**
* Specifies a list of HTTP headers that should be added to each request 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>`.
*/
'request_headers_to_add': (_envoy_api_v2_core_HeaderValueOption__Output)[];
/**
* Specifies a list of HTTP headers that should be removed from each request that is sent to the
* health checked cluster.
*/
'request_headers_to_remove': (string)[];
/**
* If set, health checks will be made using http/2.
* Deprecated, use :ref:`codec_client_type
* <envoy_api_field_core.HealthCheck.HttpHealthCheck.codec_client_type>` instead.
*/
'use_http2': (boolean);
/**
* Specifies a list of HTTP response statuses considered healthy. If provided, replaces default
* 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open
* semantics of :ref:`Int64Range <envoy_api_msg_type.Int64Range>`. The start and end of each
* range are required. Only statuses in the range [100, 600) are allowed.
*/
'expected_statuses': (_envoy_type_Int64Range__Output)[];
/**
* Use specified application protocol for health checks.
*/
'codec_client_type': (keyof typeof _envoy_type_CodecClientType);
/**
* An optional service name parameter which is used to validate the identity of
* the health checked cluster using a :ref:`StringMatcher
* <envoy_api_msg_type.matcher.StringMatcher>`. See the :ref:`architecture overview
* <arch_overview_health_checking_identity>` for more information.
*/
'service_name_matcher'?: (_envoy_type_matcher_StringMatcher__Output);
}
/**
* Describes the encoding of the payload bytes in the payload.
*/
export interface _envoy_api_v2_core_HealthCheck_Payload {
/**
* Hex encoded payload. E.g., "000000FF".
*/
'text'?: (string);
/**
* [#not-implemented-hide:] Binary payload.
*/
'binary'?: (Buffer | Uint8Array | string);
'payload'?: "text"|"binary";
}
/**
* Describes the encoding of the payload bytes in the payload.
*/
export interface _envoy_api_v2_core_HealthCheck_Payload__Output {
/**
* Hex encoded payload. E.g., "000000FF".
*/
'text'?: (string);
/**
* [#not-implemented-hide:] Binary payload.
*/
'binary'?: (Buffer);
'payload': "text"|"binary";
}
export interface _envoy_api_v2_core_HealthCheck_RedisHealthCheck {
/**
* If set, optionally perform ``EXISTS <key>`` instead of ``PING``. A return value
* from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other
* than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance
* by setting the specified key to any value and waiting for traffic to drain.
*/
'key'?: (string);
}
export interface _envoy_api_v2_core_HealthCheck_RedisHealthCheck__Output {
/**
* If set, optionally perform ``EXISTS <key>`` instead of ``PING``. A return value
* from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other
* than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance
* by setting the specified key to any value and waiting for traffic to drain.
*/
'key': (string);
}
export interface _envoy_api_v2_core_HealthCheck_TcpHealthCheck {
/**
* Empty payloads imply a connect-only health check.
*/
'send'?: (_envoy_api_v2_core_HealthCheck_Payload);
/**
* When checking the response, fuzzy matching is performed such that each
* binary block must be found, and in the order specified, but not
* necessarily contiguous.
*/
'receive'?: (_envoy_api_v2_core_HealthCheck_Payload)[];
}
export interface _envoy_api_v2_core_HealthCheck_TcpHealthCheck__Output {
/**
* Empty payloads imply a connect-only health check.
*/
'send'?: (_envoy_api_v2_core_HealthCheck_Payload__Output);
/**
* When checking the response, fuzzy matching is performed such that each
* binary block must be found, and in the order specified, but not
* necessarily contiguous.
*/
'receive': (_envoy_api_v2_core_HealthCheck_Payload__Output)[];
}
/**
* Health checks occur over the transport socket specified for the cluster. This implies that if a
* cluster is using a TLS-enabled transport socket, the health check will also occur over TLS.
*
* This allows overriding the cluster TLS settings, just for health check connections.
*/
export interface _envoy_api_v2_core_HealthCheck_TlsOptions {
/**
* Specifies the ALPN protocols for health check connections. This is useful if the
* corresponding upstream is using ALPN-based :ref:`FilterChainMatch
* <envoy_api_msg_listener.FilterChainMatch>` along with different protocols for health checks
* versus data connections. If empty, no ALPN protocols will be set on health check connections.
*/
'alpn_protocols'?: (string)[];
}
/**
* Health checks occur over the transport socket specified for the cluster. This implies that if a
* cluster is using a TLS-enabled transport socket, the health check will also occur over TLS.
*
* This allows overriding the cluster TLS settings, just for health check connections.
*/
export interface _envoy_api_v2_core_HealthCheck_TlsOptions__Output {
/**
* Specifies the ALPN protocols for health check connections. This is useful if the
* corresponding upstream is using ALPN-based :ref:`FilterChainMatch
* <envoy_api_msg_listener.FilterChainMatch>` along with different protocols for health checks
* versus data connections. If empty, no ALPN protocols will be set on health check connections.
*/
'alpn_protocols': (string)[];
}
/**
* [#next-free-field: 23]
*/
export interface HealthCheck {
/**
* The time to wait for a health check response. If the timeout is reached the
* health check attempt will be considered a failure.
*/
'timeout'?: (_google_protobuf_Duration);
/**
* The interval between health checks.
*/
'interval'?: (_google_protobuf_Duration);
/**
* An optional jitter amount in milliseconds. If specified, during every
* interval Envoy will add interval_jitter to the wait time.
*/
'interval_jitter'?: (_google_protobuf_Duration);
/**
* 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
* this threshold is ignored and the host is considered unhealthy immediately.
*/
'unhealthy_threshold'?: (_google_protobuf_UInt32Value);
/**
* The number of healthy health checks required before a host is marked
* healthy. Note that during startup, only a single successful health check is
* required to mark a host healthy.
*/
'healthy_threshold'?: (_google_protobuf_UInt32Value);
/**
* [#not-implemented-hide:] Non-serving port for health checking.
*/
'alt_port'?: (_google_protobuf_UInt32Value);
/**
* Reuse health check connection between health checks. Default is true.
*/
'reuse_connection'?: (_google_protobuf_BoolValue);
/**
* HTTP health check.
*/
'http_health_check'?: (_envoy_api_v2_core_HealthCheck_HttpHealthCheck);
/**
* TCP health check.
*/
'tcp_health_check'?: (_envoy_api_v2_core_HealthCheck_TcpHealthCheck);
/**
* gRPC health check.
*/
'grpc_health_check'?: (_envoy_api_v2_core_HealthCheck_GrpcHealthCheck);
/**
* The "no traffic interval" is a special health check interval that is used when a cluster has
* never had traffic routed to it. This lower interval allows cluster information to be kept up to
* date, without sending a potentially large amount of active health checking traffic for no
* reason. Once a cluster has been used for traffic routing, Envoy will shift back to using the
* standard health check interval that is defined. Note that this interval takes precedence over
* any other.
*
* The default value for "no traffic interval" is 60 seconds.
*/
'no_traffic_interval'?: (_google_protobuf_Duration);
/**
* Custom health check.
*/
'custom_health_check'?: (_envoy_api_v2_core_HealthCheck_CustomHealthCheck);
/**
* The "unhealthy interval" is a health check interval that is used for hosts that are marked as
* unhealthy. As soon as the host is marked as healthy, Envoy will shift back to using the
* standard health check interval that is defined.
*
* The default value for "unhealthy interval" is the same as "interval".
*/
'unhealthy_interval'?: (_google_protobuf_Duration);
/**
* The "unhealthy edge interval" is a special health check interval that is used for the first
* health check right after a host is marked as unhealthy. For subsequent health checks
* Envoy will shift back to using either "unhealthy interval" if present or the standard health
* check interval that is defined.
*
* The default value for "unhealthy edge interval" is the same as "unhealthy interval".
*/
'unhealthy_edge_interval'?: (_google_protobuf_Duration);
/**
* The "healthy edge interval" is a special health check interval that is used for the first
* health check right after a host is marked as healthy. For subsequent health checks
* Envoy will shift back to using the standard health check interval that is defined.
*
* The default value for "healthy edge interval" is the same as the default interval.
*/
'healthy_edge_interval'?: (_google_protobuf_Duration);
/**
* Specifies the path to the :ref:`health check event log <arch_overview_health_check_logging>`.
* If empty, no event log will be written.
*/
'event_log_path'?: (string);
/**
* An optional jitter amount as a percentage of interval_ms. If specified,
* during every interval Envoy will add interval_ms *
* interval_jitter_percent / 100 to the wait time.
*
* If interval_jitter_ms and interval_jitter_percent are both set, both of
* them will be used to increase the wait time.
*/
'interval_jitter_percent'?: (number);
/**
* If set to true, health check failure events will always be logged. If set to false, only the
* initial health check failure event will be logged.
* The default value is false.
*/
'always_log_health_check_failures'?: (boolean);
/**
* An optional jitter amount in milliseconds. If specified, Envoy will start health
* checking after for a random time in ms between 0 and initial_jitter. This only
* applies to the first health check.
*/
'initial_jitter'?: (_google_protobuf_Duration);
/**
* This allows overriding the cluster TLS settings, just for health check connections.
*/
'tls_options'?: (_envoy_api_v2_core_HealthCheck_TlsOptions);
/**
* [#not-implemented-hide:]
* The gRPC service for the health check event service.
* If empty, health check events won't be sent to a remote endpoint.
*/
'event_service'?: (_envoy_api_v2_core_EventServiceConfig);
'health_checker'?: "http_health_check"|"tcp_health_check"|"grpc_health_check"|"custom_health_check";
}
/**
* [#next-free-field: 23]
*/
export interface HealthCheck__Output {
/**
* The time to wait for a health check response. If the timeout is reached the
* health check attempt will be considered a failure.
*/
'timeout'?: (_google_protobuf_Duration__Output);
/**
* The interval between health checks.
*/
'interval'?: (_google_protobuf_Duration__Output);
/**
* An optional jitter amount in milliseconds. If specified, during every
* interval Envoy will add interval_jitter to the wait time.
*/
'interval_jitter'?: (_google_protobuf_Duration__Output);
/**
* 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
* this threshold is ignored and the host is considered unhealthy immediately.
*/
'unhealthy_threshold'?: (_google_protobuf_UInt32Value__Output);
/**
* The number of healthy health checks required before a host is marked
* healthy. Note that during startup, only a single successful health check is
* required to mark a host healthy.
*/
'healthy_threshold'?: (_google_protobuf_UInt32Value__Output);
/**
* [#not-implemented-hide:] Non-serving port for health checking.
*/
'alt_port'?: (_google_protobuf_UInt32Value__Output);
/**
* Reuse health check connection between health checks. Default is true.
*/
'reuse_connection'?: (_google_protobuf_BoolValue__Output);
/**
* HTTP health check.
*/
'http_health_check'?: (_envoy_api_v2_core_HealthCheck_HttpHealthCheck__Output);
/**
* TCP health check.
*/
'tcp_health_check'?: (_envoy_api_v2_core_HealthCheck_TcpHealthCheck__Output);
/**
* gRPC health check.
*/
'grpc_health_check'?: (_envoy_api_v2_core_HealthCheck_GrpcHealthCheck__Output);
/**
* The "no traffic interval" is a special health check interval that is used when a cluster has
* never had traffic routed to it. This lower interval allows cluster information to be kept up to
* date, without sending a potentially large amount of active health checking traffic for no
* reason. Once a cluster has been used for traffic routing, Envoy will shift back to using the
* standard health check interval that is defined. Note that this interval takes precedence over
* any other.
*
* The default value for "no traffic interval" is 60 seconds.
*/
'no_traffic_interval'?: (_google_protobuf_Duration__Output);
/**
* Custom health check.
*/
'custom_health_check'?: (_envoy_api_v2_core_HealthCheck_CustomHealthCheck__Output);
/**
* The "unhealthy interval" is a health check interval that is used for hosts that are marked as
* unhealthy. As soon as the host is marked as healthy, Envoy will shift back to using the
* standard health check interval that is defined.
*
* The default value for "unhealthy interval" is the same as "interval".
*/
'unhealthy_interval'?: (_google_protobuf_Duration__Output);
/**
* The "unhealthy edge interval" is a special health check interval that is used for the first
* health check right after a host is marked as unhealthy. For subsequent health checks
* Envoy will shift back to using either "unhealthy interval" if present or the standard health
* check interval that is defined.
*
* The default value for "unhealthy edge interval" is the same as "unhealthy interval".
*/
'unhealthy_edge_interval'?: (_google_protobuf_Duration__Output);
/**
* The "healthy edge interval" is a special health check interval that is used for the first
* health check right after a host is marked as healthy. For subsequent health checks
* Envoy will shift back to using the standard health check interval that is defined.
*
* The default value for "healthy edge interval" is the same as the default interval.
*/
'healthy_edge_interval'?: (_google_protobuf_Duration__Output);
/**
* Specifies the path to the :ref:`health check event log <arch_overview_health_check_logging>`.
* If empty, no event log will be written.
*/
'event_log_path': (string);
/**
* An optional jitter amount as a percentage of interval_ms. If specified,
* during every interval Envoy will add interval_ms *
* interval_jitter_percent / 100 to the wait time.
*
* If interval_jitter_ms and interval_jitter_percent are both set, both of
* them will be used to increase the wait time.
*/
'interval_jitter_percent': (number);
/**
* If set to true, health check failure events will always be logged. If set to false, only the
* initial health check failure event will be logged.
* The default value is false.
*/
'always_log_health_check_failures': (boolean);
/**
* An optional jitter amount in milliseconds. If specified, Envoy will start health
* checking after for a random time in ms between 0 and initial_jitter. This only
* applies to the first health check.
*/
'initial_jitter'?: (_google_protobuf_Duration__Output);
/**
* This allows overriding the cluster TLS settings, just for health check connections.
*/
'tls_options'?: (_envoy_api_v2_core_HealthCheck_TlsOptions__Output);
/**
* [#not-implemented-hide:]
* The gRPC service for the health check event service.
* If empty, health check events won't be sent to a remote endpoint.
*/
'event_service'?: (_envoy_api_v2_core_EventServiceConfig__Output);
'health_checker': "http_health_check"|"tcp_health_check"|"grpc_health_check"|"custom_health_check";
}

View File

@ -0,0 +1,36 @@
// Original file: deps/envoy-api/envoy/api/v2/core/health_check.proto
/**
* Endpoint health status.
*/
export enum HealthStatus {
/**
* The health status is not known. This is interpreted by Envoy as *HEALTHY*.
*/
UNKNOWN = 0,
/**
* Healthy.
*/
HEALTHY = 1,
/**
* Unhealthy.
*/
UNHEALTHY = 2,
/**
* Connection draining in progress. E.g.,
* `<https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/>`_
* or
* `<https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining>`_.
* This is interpreted by Envoy as *UNHEALTHY*.
*/
DRAINING = 3,
/**
* Health check timed out. This is part of HDS and is interpreted by Envoy as
* *UNHEALTHY*.
*/
TIMEOUT = 4,
/**
* Degraded.
*/
DEGRADED = 5,
}

View File

@ -0,0 +1,119 @@
// Original file: deps/envoy-api/envoy/api/v2/core/protocol.proto
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
export interface _envoy_api_v2_core_Http1ProtocolOptions_HeaderKeyFormat {
/**
* Formats the header by proper casing words: the first character and any character following
* a special character will be capitalized if it's an alpha character. For example,
* "content-type" becomes "Content-Type", and "foo$b#$are" becomes "Foo$B#$Are".
* Note that while this results in most headers following conventional casing, certain headers
* are not covered. For example, the "TE" header will be formatted as "Te".
*/
'proper_case_words'?: (_envoy_api_v2_core_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords);
'header_format'?: "proper_case_words";
}
export interface _envoy_api_v2_core_Http1ProtocolOptions_HeaderKeyFormat__Output {
/**
* Formats the header by proper casing words: the first character and any character following
* a special character will be capitalized if it's an alpha character. For example,
* "content-type" becomes "Content-Type", and "foo$b#$are" becomes "Foo$B#$Are".
* Note that while this results in most headers following conventional casing, certain headers
* are not covered. For example, the "TE" header will be formatted as "Te".
*/
'proper_case_words'?: (_envoy_api_v2_core_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords__Output);
'header_format': "proper_case_words";
}
export interface _envoy_api_v2_core_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords {
}
export interface _envoy_api_v2_core_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords__Output {
}
/**
* [#next-free-field: 6]
*/
export interface Http1ProtocolOptions {
/**
* Handle HTTP requests with absolute URLs in the requests. These requests
* are generally sent by clients to forward/explicit proxies. This allows clients to configure
* envoy as their HTTP proxy. In Unix, for example, this is typically done by setting the
* *http_proxy* environment variable.
*/
'allow_absolute_url'?: (_google_protobuf_BoolValue);
/**
* Handle incoming HTTP/1.0 and HTTP 0.9 requests.
* This is off by default, and not fully standards compliant. There is support for pre-HTTP/1.1
* style connect logic, dechunking, and handling lack of client host iff
* *default_host_for_http_10* is configured.
*/
'accept_http_10'?: (boolean);
/**
* A default host for HTTP/1.0 requests. This is highly suggested if *accept_http_10* is true as
* Envoy does not otherwise support HTTP/1.0 without a Host header.
* This is a no-op if *accept_http_10* is not true.
*/
'default_host_for_http_10'?: (string);
/**
* Describes how the keys for response headers should be formatted. By default, all header keys
* are lower cased.
*/
'header_key_format'?: (_envoy_api_v2_core_Http1ProtocolOptions_HeaderKeyFormat);
/**
* Enables trailers for HTTP/1. By default the HTTP/1 codec drops proxied trailers.
*
* .. attention::
*
* Note that this only happens when Envoy is chunk encoding which occurs when:
* - The request is HTTP/1.1.
* - Is neither a HEAD only request nor a HTTP Upgrade.
* - Not a response to a HEAD request.
* - The content length header is not present.
*/
'enable_trailers'?: (boolean);
}
/**
* [#next-free-field: 6]
*/
export interface Http1ProtocolOptions__Output {
/**
* Handle HTTP requests with absolute URLs in the requests. These requests
* are generally sent by clients to forward/explicit proxies. This allows clients to configure
* envoy as their HTTP proxy. In Unix, for example, this is typically done by setting the
* *http_proxy* environment variable.
*/
'allow_absolute_url'?: (_google_protobuf_BoolValue__Output);
/**
* Handle incoming HTTP/1.0 and HTTP 0.9 requests.
* This is off by default, and not fully standards compliant. There is support for pre-HTTP/1.1
* style connect logic, dechunking, and handling lack of client host iff
* *default_host_for_http_10* is configured.
*/
'accept_http_10': (boolean);
/**
* A default host for HTTP/1.0 requests. This is highly suggested if *accept_http_10* is true as
* Envoy does not otherwise support HTTP/1.0 without a Host header.
* This is a no-op if *accept_http_10* is not true.
*/
'default_host_for_http_10': (string);
/**
* Describes how the keys for response headers should be formatted. By default, all header keys
* are lower cased.
*/
'header_key_format'?: (_envoy_api_v2_core_Http1ProtocolOptions_HeaderKeyFormat__Output);
/**
* Enables trailers for HTTP/1. By default the HTTP/1 codec drops proxied trailers.
*
* .. attention::
*
* Note that this only happens when Envoy is chunk encoding which occurs when:
* - The request is HTTP/1.1.
* - Is neither a HEAD only request nor a HTTP Upgrade.
* - Not a response to a HEAD request.
* - The content length header is not present.
*/
'enable_trailers': (boolean);
}

View File

@ -0,0 +1,325 @@
// Original file: deps/envoy-api/envoy/api/v2/core/protocol.proto
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
/**
* Defines a parameter to be sent in the SETTINGS frame.
* See `RFC7540, sec. 6.5.1 <https://tools.ietf.org/html/rfc7540#section-6.5.1>`_ for details.
*/
export interface _envoy_api_v2_core_Http2ProtocolOptions_SettingsParameter {
/**
* The 16 bit parameter identifier.
*/
'identifier'?: (_google_protobuf_UInt32Value);
/**
* The 32 bit parameter value.
*/
'value'?: (_google_protobuf_UInt32Value);
}
/**
* Defines a parameter to be sent in the SETTINGS frame.
* See `RFC7540, sec. 6.5.1 <https://tools.ietf.org/html/rfc7540#section-6.5.1>`_ for details.
*/
export interface _envoy_api_v2_core_Http2ProtocolOptions_SettingsParameter__Output {
/**
* The 16 bit parameter identifier.
*/
'identifier'?: (_google_protobuf_UInt32Value__Output);
/**
* The 32 bit parameter value.
*/
'value'?: (_google_protobuf_UInt32Value__Output);
}
/**
* [#next-free-field: 14]
*/
export interface Http2ProtocolOptions {
/**
* `Maximum table size <https://httpwg.org/specs/rfc7541.html#rfc.section.4.2>`_
* (in octets) that the encoder is permitted to use for the dynamic HPACK table. Valid values
* range from 0 to 4294967295 (2^32 - 1) and defaults to 4096. 0 effectively disables header
* compression.
*/
'hpack_table_size'?: (_google_protobuf_UInt32Value);
/**
* `Maximum concurrent streams <https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2>`_
* allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1)
* and defaults to 2147483647.
*
* For upstream connections, this also limits how many streams Envoy will initiate concurrently
* on a single connection. If the limit is reached, Envoy may queue requests or establish
* additional connections (as allowed per circuit breaker limits).
*/
'max_concurrent_streams'?: (_google_protobuf_UInt32Value);
/**
* `Initial stream-level flow-control window
* <https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2>`_ size. Valid values range from 65535
* (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456
* (256 * 1024 * 1024).
*
* NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default
* window size now, so it's also the minimum.
*
* This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the
* HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to
* stop the flow of data to the codec buffers.
*/
'initial_stream_window_size'?: (_google_protobuf_UInt32Value);
/**
* Similar to *initial_stream_window_size*, but for connection-level flow-control
* window. Currently, this has the same minimum/maximum/default as *initial_stream_window_size*.
*/
'initial_connection_window_size'?: (_google_protobuf_UInt32Value);
/**
* Allows proxying Websocket and other upgrades over H2 connect.
*/
'allow_connect'?: (boolean);
/**
* [#not-implemented-hide:] Hiding until envoy has full metadata support.
* Still under implementation. DO NOT USE.
*
* Allows metadata. See [metadata
* docs](https://github.com/envoyproxy/envoy/blob/master/source/docs/h2_metadata.md) for more
* information.
*/
'allow_metadata'?: (boolean);
/**
* Limit the number of pending outbound downstream frames of all types (frames that are waiting to
* 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
* to flood mitigation. The default limit is 10000.
* [#comment:TODO: implement same limits for upstream outbound frames as well.]
*/
'max_outbound_frames'?: (_google_protobuf_UInt32Value);
/**
* Limit the number of pending outbound downstream frames of types PING, SETTINGS and RST_STREAM,
* preventing high memory utilization when receiving continuous stream of these frames. Exceeding
* this limit triggers flood mitigation and connection is terminated. The
* ``http2.outbound_control_flood`` stat tracks the number of terminated connections due to flood
* mitigation. The default limit is 1000.
* [#comment:TODO: implement same limits for upstream outbound frames as well.]
*/
'max_outbound_control_frames'?: (_google_protobuf_UInt32Value);
/**
* Limit the number of consecutive inbound frames of types HEADERS, CONTINUATION and DATA with an
* empty payload and no end stream flag. Those frames have no legitimate use and are abusive, but
* might be a result of a broken HTTP/2 implementation. The `http2.inbound_empty_frames_flood``
* 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
* and no end stream flag. The default limit is 1.
* [#comment:TODO: implement same limits for upstream inbound frames as well.]
*/
'max_consecutive_inbound_frames_with_empty_payload'?: (_google_protobuf_UInt32Value);
/**
* Limit the number of inbound PRIORITY frames allowed per each opened stream. If the number
* of PRIORITY frames received over the lifetime of connection exceeds the value calculated
* using this formula::
*
* max_inbound_priority_frames_per_stream * (1 + inbound_streams)
*
* the connection is terminated. The ``http2.inbound_priority_frames_flood`` stat tracks
* the number of connections terminated due to flood mitigation. The default limit is 100.
* [#comment:TODO: implement same limits for upstream inbound frames as well.]
*/
'max_inbound_priority_frames_per_stream'?: (_google_protobuf_UInt32Value);
/**
* Limit the number of inbound WINDOW_UPDATE frames allowed per DATA frame sent. If the number
* of WINDOW_UPDATE frames received over the lifetime of connection exceeds the value calculated
* using this formula::
*
* 1 + 2 * (inbound_streams +
* max_inbound_window_update_frames_per_data_frame_sent * outbound_data_frames)
*
* the connection is terminated. The ``http2.inbound_priority_frames_flood`` stat tracks
* the number of connections terminated due to flood mitigation. The default limit is 10.
* 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.
* [#comment:TODO: implement same limits for upstream inbound frames as well.]
*/
'max_inbound_window_update_frames_per_data_frame_sent'?: (_google_protobuf_UInt32Value);
/**
* Allows invalid HTTP messaging and headers. When this option is disabled (default), then
* the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However,
* when this option is enabled, only the offending stream is terminated.
*
* See `RFC7540, sec. 8.1 <https://tools.ietf.org/html/rfc7540#section-8.1>`_ for details.
*/
'stream_error_on_invalid_http_messaging'?: (boolean);
/**
* [#not-implemented-hide:]
* Specifies SETTINGS frame parameters to be sent to the peer, with two exceptions:
*
* 1. SETTINGS_ENABLE_PUSH (0x2) is not configurable as HTTP/2 server push is not supported by
* Envoy.
*
* 2. SETTINGS_ENABLE_CONNECT_PROTOCOL (0x8) is only configurable through the named field
* 'allow_connect'.
*
* Note that custom parameters specified through this field can not also be set in the
* corresponding named parameters:
*
* .. code-block:: text
*
* ID Field Name
* ----------------
* 0x1 hpack_table_size
* 0x3 max_concurrent_streams
* 0x4 initial_stream_window_size
*
* Collisions will trigger config validation failure on load/update. Likewise, inconsistencies
* between custom parameters with the same identifier will trigger a failure.
*
* See `IANA HTTP/2 Settings
* <https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml#settings>`_ for
* standardized identifiers.
*/
'custom_settings_parameters'?: (_envoy_api_v2_core_Http2ProtocolOptions_SettingsParameter)[];
}
/**
* [#next-free-field: 14]
*/
export interface Http2ProtocolOptions__Output {
/**
* `Maximum table size <https://httpwg.org/specs/rfc7541.html#rfc.section.4.2>`_
* (in octets) that the encoder is permitted to use for the dynamic HPACK table. Valid values
* range from 0 to 4294967295 (2^32 - 1) and defaults to 4096. 0 effectively disables header
* compression.
*/
'hpack_table_size'?: (_google_protobuf_UInt32Value__Output);
/**
* `Maximum concurrent streams <https://httpwg.org/specs/rfc7540.html#rfc.section.5.1.2>`_
* allowed for peer on one HTTP/2 connection. Valid values range from 1 to 2147483647 (2^31 - 1)
* and defaults to 2147483647.
*
* For upstream connections, this also limits how many streams Envoy will initiate concurrently
* on a single connection. If the limit is reached, Envoy may queue requests or establish
* additional connections (as allowed per circuit breaker limits).
*/
'max_concurrent_streams'?: (_google_protobuf_UInt32Value__Output);
/**
* `Initial stream-level flow-control window
* <https://httpwg.org/specs/rfc7540.html#rfc.section.6.9.2>`_ size. Valid values range from 65535
* (2^16 - 1, HTTP/2 default) to 2147483647 (2^31 - 1, HTTP/2 maximum) and defaults to 268435456
* (256 * 1024 * 1024).
*
* NOTE: 65535 is the initial window size from HTTP/2 spec. We only support increasing the default
* window size now, so it's also the minimum.
*
* This field also acts as a soft limit on the number of bytes Envoy will buffer per-stream in the
* HTTP/2 codec buffers. Once the buffer reaches this pointer, watermark callbacks will fire to
* stop the flow of data to the codec buffers.
*/
'initial_stream_window_size'?: (_google_protobuf_UInt32Value__Output);
/**
* Similar to *initial_stream_window_size*, but for connection-level flow-control
* window. Currently, this has the same minimum/maximum/default as *initial_stream_window_size*.
*/
'initial_connection_window_size'?: (_google_protobuf_UInt32Value__Output);
/**
* Allows proxying Websocket and other upgrades over H2 connect.
*/
'allow_connect': (boolean);
/**
* [#not-implemented-hide:] Hiding until envoy has full metadata support.
* Still under implementation. DO NOT USE.
*
* Allows metadata. See [metadata
* docs](https://github.com/envoyproxy/envoy/blob/master/source/docs/h2_metadata.md) for more
* information.
*/
'allow_metadata': (boolean);
/**
* Limit the number of pending outbound downstream frames of all types (frames that are waiting to
* 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
* to flood mitigation. The default limit is 10000.
* [#comment:TODO: implement same limits for upstream outbound frames as well.]
*/
'max_outbound_frames'?: (_google_protobuf_UInt32Value__Output);
/**
* Limit the number of pending outbound downstream frames of types PING, SETTINGS and RST_STREAM,
* preventing high memory utilization when receiving continuous stream of these frames. Exceeding
* this limit triggers flood mitigation and connection is terminated. The
* ``http2.outbound_control_flood`` stat tracks the number of terminated connections due to flood
* mitigation. The default limit is 1000.
* [#comment:TODO: implement same limits for upstream outbound frames as well.]
*/
'max_outbound_control_frames'?: (_google_protobuf_UInt32Value__Output);
/**
* Limit the number of consecutive inbound frames of types HEADERS, CONTINUATION and DATA with an
* empty payload and no end stream flag. Those frames have no legitimate use and are abusive, but
* might be a result of a broken HTTP/2 implementation. The `http2.inbound_empty_frames_flood``
* 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
* and no end stream flag. The default limit is 1.
* [#comment:TODO: implement same limits for upstream inbound frames as well.]
*/
'max_consecutive_inbound_frames_with_empty_payload'?: (_google_protobuf_UInt32Value__Output);
/**
* Limit the number of inbound PRIORITY frames allowed per each opened stream. If the number
* of PRIORITY frames received over the lifetime of connection exceeds the value calculated
* using this formula::
*
* max_inbound_priority_frames_per_stream * (1 + inbound_streams)
*
* the connection is terminated. The ``http2.inbound_priority_frames_flood`` stat tracks
* the number of connections terminated due to flood mitigation. The default limit is 100.
* [#comment:TODO: implement same limits for upstream inbound frames as well.]
*/
'max_inbound_priority_frames_per_stream'?: (_google_protobuf_UInt32Value__Output);
/**
* Limit the number of inbound WINDOW_UPDATE frames allowed per DATA frame sent. If the number
* of WINDOW_UPDATE frames received over the lifetime of connection exceeds the value calculated
* using this formula::
*
* 1 + 2 * (inbound_streams +
* max_inbound_window_update_frames_per_data_frame_sent * outbound_data_frames)
*
* the connection is terminated. The ``http2.inbound_priority_frames_flood`` stat tracks
* the number of connections terminated due to flood mitigation. The default limit is 10.
* 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.
* [#comment:TODO: implement same limits for upstream inbound frames as well.]
*/
'max_inbound_window_update_frames_per_data_frame_sent'?: (_google_protobuf_UInt32Value__Output);
/**
* Allows invalid HTTP messaging and headers. When this option is disabled (default), then
* the whole HTTP/2 connection is terminated upon receiving invalid HEADERS frame. However,
* when this option is enabled, only the offending stream is terminated.
*
* See `RFC7540, sec. 8.1 <https://tools.ietf.org/html/rfc7540#section-8.1>`_ for details.
*/
'stream_error_on_invalid_http_messaging': (boolean);
/**
* [#not-implemented-hide:]
* Specifies SETTINGS frame parameters to be sent to the peer, with two exceptions:
*
* 1. SETTINGS_ENABLE_PUSH (0x2) is not configurable as HTTP/2 server push is not supported by
* Envoy.
*
* 2. SETTINGS_ENABLE_CONNECT_PROTOCOL (0x8) is only configurable through the named field
* 'allow_connect'.
*
* Note that custom parameters specified through this field can not also be set in the
* corresponding named parameters:
*
* .. code-block:: text
*
* ID Field Name
* ----------------
* 0x1 hpack_table_size
* 0x3 max_concurrent_streams
* 0x4 initial_stream_window_size
*
* Collisions will trigger config validation failure on load/update. Likewise, inconsistencies
* between custom parameters with the same identifier will trigger a failure.
*
* See `IANA HTTP/2 Settings
* <https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml#settings>`_ for
* standardized identifiers.
*/
'custom_settings_parameters': (_envoy_api_v2_core_Http2ProtocolOptions_SettingsParameter__Output)[];
}

View File

@ -0,0 +1,126 @@
// Original file: deps/envoy-api/envoy/api/v2/core/protocol.proto
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
// Original file: deps/envoy-api/envoy/api/v2/core/protocol.proto
/**
* Action to take when Envoy receives client request with header names containing underscore
* characters.
* Underscore character is allowed in header names by the RFC-7230 and this behavior is implemented
* as a security measure due to systems that treat '_' and '-' as interchangeable. Envoy by default allows client request headers with underscore
* characters.
*/
export enum _envoy_api_v2_core_HttpProtocolOptions_HeadersWithUnderscoresAction {
/**
* Allow headers with underscores. This is the default behavior.
*/
ALLOW = 0,
/**
* Reject client request. HTTP/1 requests are rejected with the 400 status. HTTP/2 requests
* end with the stream reset. The "httpN.requests_rejected_with_underscores_in_headers" counter
* is incremented for each rejected request.
*/
REJECT_REQUEST = 1,
/**
* Drop the 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
* "httpN.dropped_headers_with_underscores" is incremented for each dropped header.
*/
DROP_HEADER = 2,
}
/**
* [#next-free-field: 6]
*/
export interface HttpProtocolOptions {
/**
* The idle timeout for connections. The idle timeout is defined as the
* period in which there are no active requests. When the
* idle timeout is reached the connection will be closed. If the connection is an HTTP/2
* downstream connection a drain sequence will occur prior to closing the connection, see
* :ref:`drain_timeout
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.drain_timeout>`.
* Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive.
* If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0.
*
* .. warning::
* Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP
* FIN packets, etc.
*/
'idle_timeout'?: (_google_protobuf_Duration);
/**
* The maximum number of headers. If unconfigured, the default
* maximum number of request headers allowed is 100. Requests that exceed this limit will receive
* a 431 response for HTTP/1.x and cause a stream reset for HTTP/2.
*/
'max_headers_count'?: (_google_protobuf_UInt32Value);
/**
* 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
* the connection will be closed. Drain sequence will occur prior to closing the connection if
* if's applicable. See :ref:`drain_timeout
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.drain_timeout>`.
* Note: not implemented for upstream connections.
*/
'max_connection_duration'?: (_google_protobuf_Duration);
/**
* Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be
* reset independent of any other timeouts. If not specified, this value is not set.
*/
'max_stream_duration'?: (_google_protobuf_Duration);
/**
* 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.
* Note: upstream responses are not affected by this setting.
*/
'headers_with_underscores_action'?: (_envoy_api_v2_core_HttpProtocolOptions_HeadersWithUnderscoresAction | keyof typeof _envoy_api_v2_core_HttpProtocolOptions_HeadersWithUnderscoresAction);
}
/**
* [#next-free-field: 6]
*/
export interface HttpProtocolOptions__Output {
/**
* The idle timeout for connections. The idle timeout is defined as the
* period in which there are no active requests. When the
* idle timeout is reached the connection will be closed. If the connection is an HTTP/2
* downstream connection a drain sequence will occur prior to closing the connection, see
* :ref:`drain_timeout
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.drain_timeout>`.
* Note that request based timeouts mean that HTTP/2 PINGs will not keep the connection alive.
* If not specified, this defaults to 1 hour. To disable idle timeouts explicitly set this to 0.
*
* .. warning::
* Disabling this timeout has a highly likelihood of yielding connection leaks due to lost TCP
* FIN packets, etc.
*/
'idle_timeout'?: (_google_protobuf_Duration__Output);
/**
* The maximum number of headers. If unconfigured, the default
* maximum number of request headers allowed is 100. Requests that exceed this limit will receive
* a 431 response for HTTP/1.x and cause a stream reset for HTTP/2.
*/
'max_headers_count'?: (_google_protobuf_UInt32Value__Output);
/**
* 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
* the connection will be closed. Drain sequence will occur prior to closing the connection if
* if's applicable. See :ref:`drain_timeout
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.drain_timeout>`.
* Note: not implemented for upstream connections.
*/
'max_connection_duration'?: (_google_protobuf_Duration__Output);
/**
* Total duration to keep alive an HTTP request/response stream. If the time limit is reached the stream will be
* reset independent of any other timeouts. If not specified, this value is not set.
*/
'max_stream_duration'?: (_google_protobuf_Duration__Output);
/**
* 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.
* Note: upstream responses are not affected by this setting.
*/
'headers_with_underscores_action': (keyof typeof _envoy_api_v2_core_HttpProtocolOptions_HeadersWithUnderscoresAction);
}

View File

@ -0,0 +1,79 @@
// Original file: deps/envoy-api/envoy/api/v2/core/http_uri.proto
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
/**
* Envoy external URI descriptor
*/
export interface HttpUri {
/**
* The HTTP server URI. It should be a full FQDN with protocol, host and path.
*
* Example:
*
* .. code-block:: yaml
*
* uri: https://www.googleapis.com/oauth2/v1/certs
*/
'uri'?: (string);
/**
* A cluster is created in the Envoy "cluster_manager" config
* section. This field specifies the cluster name.
*
* Example:
*
* .. code-block:: yaml
*
* cluster: jwks_cluster
*/
'cluster'?: (string);
/**
* Sets the maximum duration in milliseconds that a response can take to arrive upon request.
*/
'timeout'?: (_google_protobuf_Duration);
/**
* Specify how `uri` is to be fetched. Today, this requires an explicit
* cluster, but in the future we may support dynamic cluster creation or
* inline DNS resolution. See `issue
* <https://github.com/envoyproxy/envoy/issues/1606>`_.
*/
'http_upstream_type'?: "cluster";
}
/**
* Envoy external URI descriptor
*/
export interface HttpUri__Output {
/**
* The HTTP server URI. It should be a full FQDN with protocol, host and path.
*
* Example:
*
* .. code-block:: yaml
*
* uri: https://www.googleapis.com/oauth2/v1/certs
*/
'uri': (string);
/**
* A cluster is created in the Envoy "cluster_manager" config
* section. This field specifies the cluster name.
*
* Example:
*
* .. code-block:: yaml
*
* cluster: jwks_cluster
*/
'cluster'?: (string);
/**
* Sets the maximum duration in milliseconds that a response can take to arrive upon request.
*/
'timeout'?: (_google_protobuf_Duration__Output);
/**
* Specify how `uri` is to be fetched. Today, this requires an explicit
* cluster, but in the future we may support dynamic cluster creation or
* inline DNS resolution. See `issue
* <https://github.com/envoyproxy/envoy/issues/1606>`_.
*/
'http_upstream_type': "cluster";
}

View File

@ -0,0 +1,56 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
/**
* Identifies location of where either Envoy runs or where upstream hosts run.
*/
export interface Locality {
/**
* Region this :ref:`zone <envoy_api_field_core.Locality.zone>` belongs to.
*/
'region'?: (string);
/**
* Defines the local service zone where Envoy is running. Though optional, it
* should be set if discovery service routing is used and the discovery
* service exposes :ref:`zone data <envoy_api_field_endpoint.LocalityLbEndpoints.locality>`,
* either in this message or via :option:`--service-zone`. The meaning of zone
* is context dependent, e.g. `Availability Zone (AZ)
* <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html>`_
* on AWS, `Zone <https://cloud.google.com/compute/docs/regions-zones/>`_ on
* GCP, etc.
*/
'zone'?: (string);
/**
* When used for locality of upstream hosts, this field further splits zone
* into smaller chunks of sub-zones so they can be load balanced
* independently.
*/
'sub_zone'?: (string);
}
/**
* Identifies location of where either Envoy runs or where upstream hosts run.
*/
export interface Locality__Output {
/**
* Region this :ref:`zone <envoy_api_field_core.Locality.zone>` belongs to.
*/
'region': (string);
/**
* Defines the local service zone where Envoy is running. Though optional, it
* should be set if discovery service routing is used and the discovery
* service exposes :ref:`zone data <envoy_api_field_endpoint.LocalityLbEndpoints.locality>`,
* either in this message or via :option:`--service-zone`. The meaning of zone
* is context dependent, e.g. `Availability Zone (AZ)
* <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html>`_
* on AWS, `Zone <https://cloud.google.com/compute/docs/regions-zones/>`_ on
* GCP, etc.
*/
'zone': (string);
/**
* When used for locality of upstream hosts, this field further splits zone
* into smaller chunks of sub-zones so they can be load balanced
* independently.
*/
'sub_zone': (string);
}

View File

@ -0,0 +1,67 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
/**
* Metadata provides additional inputs to filters based on matched listeners,
* filter chains, routes and endpoints. It is structured as a map, usually from
* filter name (in reverse DNS format) to metadata specific to the filter. Metadata
* key-values for a filter are merged as connection and request handling occurs,
* with later values for the same key overriding earlier values.
*
* An example use of metadata is providing additional values to
* http_connection_manager in the envoy.http_connection_manager.access_log
* namespace.
*
* Another example use of metadata is to per service config info in cluster metadata, which may get
* consumed by multiple filters.
*
* For load balancing, Metadata provides a means to subset cluster endpoints.
* Endpoints have a Metadata object associated and routes contain a Metadata
* object to match against. There are some well defined metadata used today for
* this purpose:
*
* * ``{"envoy.lb": {"canary": <bool> }}`` This indicates the canary status of an
* endpoint and is also used during header processing
* (x-envoy-upstream-canary) and for stats purposes.
* [#next-major-version: move to type/metadata/v2]
*/
export interface Metadata {
/**
* Key is the reverse DNS filter name, e.g. com.acme.widget. The envoy.*
* namespace is reserved for Envoy's built-in filters.
*/
'filter_metadata'?: ({[key: string]: _google_protobuf_Struct});
}
/**
* Metadata provides additional inputs to filters based on matched listeners,
* filter chains, routes and endpoints. It is structured as a map, usually from
* filter name (in reverse DNS format) to metadata specific to the filter. Metadata
* key-values for a filter are merged as connection and request handling occurs,
* with later values for the same key overriding earlier values.
*
* An example use of metadata is providing additional values to
* http_connection_manager in the envoy.http_connection_manager.access_log
* namespace.
*
* Another example use of metadata is to per service config info in cluster metadata, which may get
* consumed by multiple filters.
*
* For load balancing, Metadata provides a means to subset cluster endpoints.
* Endpoints have a Metadata object associated and routes contain a Metadata
* object to match against. There are some well defined metadata used today for
* this purpose:
*
* * ``{"envoy.lb": {"canary": <bool> }}`` This indicates the canary status of an
* endpoint and is also used during header processing
* (x-envoy-upstream-canary) and for stats purposes.
* [#next-major-version: move to type/metadata/v2]
*/
export interface Metadata__Output {
/**
* Key is the reverse DNS filter name, e.g. com.acme.widget. The envoy.*
* namespace is reserved for Envoy's built-in filters.
*/
'filter_metadata'?: ({[key: string]: _google_protobuf_Struct__Output});
}

View File

@ -0,0 +1,173 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { Locality as _envoy_api_v2_core_Locality, Locality__Output as _envoy_api_v2_core_Locality__Output } from '../../../../envoy/api/v2/core/Locality';
import { BuildVersion as _envoy_api_v2_core_BuildVersion, BuildVersion__Output as _envoy_api_v2_core_BuildVersion__Output } from '../../../../envoy/api/v2/core/BuildVersion';
import { Extension as _envoy_api_v2_core_Extension, Extension__Output as _envoy_api_v2_core_Extension__Output } from '../../../../envoy/api/v2/core/Extension';
import { Address as _envoy_api_v2_core_Address, Address__Output as _envoy_api_v2_core_Address__Output } from '../../../../envoy/api/v2/core/Address';
/**
* Identifies a specific Envoy instance. The node identifier is presented to the
* management server, which may use this identifier to distinguish per Envoy
* configuration for serving.
* [#next-free-field: 12]
*/
export interface Node {
/**
* An opaque node identifier for the Envoy node. This also provides the local
* service node name. It should be set if any of the following features are
* used: :ref:`statsd <arch_overview_statistics>`, :ref:`CDS
* <config_cluster_manager_cds>`, and :ref:`HTTP tracing
* <arch_overview_tracing>`, either in this message or via
* :option:`--service-node`.
*/
'id'?: (string);
/**
* Defines the local service cluster name where Envoy is running. Though
* optional, it should be set if any of the following features are used:
* :ref:`statsd <arch_overview_statistics>`, :ref:`health check cluster
* verification
* <envoy_api_field_core.HealthCheck.HttpHealthCheck.service_name_matcher>`,
* :ref:`runtime override directory <envoy_api_msg_config.bootstrap.v2.Runtime>`,
* :ref:`user agent addition
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.add_user_agent>`,
* :ref:`HTTP global rate limiting <config_http_filters_rate_limit>`,
* :ref:`CDS <config_cluster_manager_cds>`, and :ref:`HTTP tracing
* <arch_overview_tracing>`, either in this message or via
* :option:`--service-cluster`.
*/
'cluster'?: (string);
/**
* Opaque metadata extending the node identifier. Envoy will pass this
* directly to the management server.
*/
'metadata'?: (_google_protobuf_Struct);
/**
* Locality specifying where the Envoy instance is running.
*/
'locality'?: (_envoy_api_v2_core_Locality);
/**
* This is motivated by informing a management server during canary which
* version of Envoy is being tested in a heterogeneous fleet. This will be set
* by Envoy in management server RPCs.
* This field is deprecated in favor of the user_agent_name and user_agent_version values.
*/
'build_version'?: (string);
/**
* Free-form string that identifies the entity requesting config.
* E.g. "envoy" or "grpc"
*/
'user_agent_name'?: (string);
/**
* Free-form string that identifies the version of the entity requesting config.
* E.g. "1.12.2" or "abcd1234", or "SpecialEnvoyBuild"
*/
'user_agent_version'?: (string);
/**
* Structured version of the entity requesting config.
*/
'user_agent_build_version'?: (_envoy_api_v2_core_BuildVersion);
/**
* List of extensions and their versions supported by the node.
*/
'extensions'?: (_envoy_api_v2_core_Extension)[];
/**
* Client feature support list. These are well known features described
* in the Envoy API repository for a given major version of an API. Client features
* use reverse DNS naming scheme, for example `com.acme.feature`.
* See :ref:`the list of features <client_features>` that xDS client may
* support.
*/
'client_features'?: (string)[];
/**
* Known listening ports on the node as a generic hint to the management server
* for filtering :ref:`listeners <config_listeners>` to be returned. For example,
* if there is a listener bound to port 80, the list can optionally contain the
* SocketAddress `(0.0.0.0,80)`. The field is optional and just a hint.
*/
'listening_addresses'?: (_envoy_api_v2_core_Address)[];
'user_agent_version_type'?: "user_agent_version"|"user_agent_build_version";
}
/**
* Identifies a specific Envoy instance. The node identifier is presented to the
* management server, which may use this identifier to distinguish per Envoy
* configuration for serving.
* [#next-free-field: 12]
*/
export interface Node__Output {
/**
* An opaque node identifier for the Envoy node. This also provides the local
* service node name. It should be set if any of the following features are
* used: :ref:`statsd <arch_overview_statistics>`, :ref:`CDS
* <config_cluster_manager_cds>`, and :ref:`HTTP tracing
* <arch_overview_tracing>`, either in this message or via
* :option:`--service-node`.
*/
'id': (string);
/**
* Defines the local service cluster name where Envoy is running. Though
* optional, it should be set if any of the following features are used:
* :ref:`statsd <arch_overview_statistics>`, :ref:`health check cluster
* verification
* <envoy_api_field_core.HealthCheck.HttpHealthCheck.service_name_matcher>`,
* :ref:`runtime override directory <envoy_api_msg_config.bootstrap.v2.Runtime>`,
* :ref:`user agent addition
* <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.add_user_agent>`,
* :ref:`HTTP global rate limiting <config_http_filters_rate_limit>`,
* :ref:`CDS <config_cluster_manager_cds>`, and :ref:`HTTP tracing
* <arch_overview_tracing>`, either in this message or via
* :option:`--service-cluster`.
*/
'cluster': (string);
/**
* Opaque metadata extending the node identifier. Envoy will pass this
* directly to the management server.
*/
'metadata'?: (_google_protobuf_Struct__Output);
/**
* Locality specifying where the Envoy instance is running.
*/
'locality'?: (_envoy_api_v2_core_Locality__Output);
/**
* This is motivated by informing a management server during canary which
* version of Envoy is being tested in a heterogeneous fleet. This will be set
* by Envoy in management server RPCs.
* This field is deprecated in favor of the user_agent_name and user_agent_version values.
*/
'build_version': (string);
/**
* Free-form string that identifies the entity requesting config.
* E.g. "envoy" or "grpc"
*/
'user_agent_name': (string);
/**
* Free-form string that identifies the version of the entity requesting config.
* E.g. "1.12.2" or "abcd1234", or "SpecialEnvoyBuild"
*/
'user_agent_version'?: (string);
/**
* Structured version of the entity requesting config.
*/
'user_agent_build_version'?: (_envoy_api_v2_core_BuildVersion__Output);
/**
* List of extensions and their versions supported by the node.
*/
'extensions': (_envoy_api_v2_core_Extension__Output)[];
/**
* Client feature support list. These are well known features described
* in the Envoy API repository for a given major version of an API. Client features
* use reverse DNS naming scheme, for example `com.acme.feature`.
* See :ref:`the list of features <client_features>` that xDS client may
* support.
*/
'client_features': (string)[];
/**
* Known listening ports on the node as a generic hint to the management server
* for filtering :ref:`listeners <config_listeners>` to be returned. For example,
* if there is a listener bound to port 80, the list can optionally contain the
* SocketAddress `(0.0.0.0,80)`. The field is optional and just a hint.
*/
'listening_addresses': (_envoy_api_v2_core_Address__Output)[];
'user_agent_version_type': "user_agent_version"|"user_agent_build_version";
}

View File

@ -0,0 +1,30 @@
// Original file: deps/envoy-api/envoy/api/v2/core/address.proto
export interface Pipe {
/**
* Unix Domain Socket path. On Linux, paths starting with '@' will use the
* abstract namespace. The starting '@' is replaced by a null byte by Envoy.
* Paths starting with '@' will result in an error in environments other than
* Linux.
*/
'path'?: (string);
/**
* The mode for the Pipe. Not applicable for abstract sockets.
*/
'mode'?: (number);
}
export interface Pipe__Output {
/**
* Unix Domain Socket path. On Linux, paths starting with '@' will use the
* abstract namespace. The starting '@' is replaced by a null byte by Envoy.
* Paths starting with '@' will result in an error in environments other than
* Linux.
*/
'path': (string);
/**
* The mode for the Pipe. Not applicable for abstract sockets.
*/
'mode': (number);
}

View File

@ -0,0 +1,36 @@
// Original file: deps/envoy-api/envoy/api/v2/core/config_source.proto
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
import { DoubleValue as _google_protobuf_DoubleValue, DoubleValue__Output as _google_protobuf_DoubleValue__Output } from '../../../../google/protobuf/DoubleValue';
/**
* Rate Limit settings to be applied for discovery requests made by Envoy.
*/
export interface RateLimitSettings {
/**
* Maximum number of tokens to be used for rate limiting discovery request calls. If not set, a
* default value of 100 will be used.
*/
'max_tokens'?: (_google_protobuf_UInt32Value);
/**
* Rate at which tokens will be filled per second. If not set, a default fill rate of 10 tokens
* per second will be used.
*/
'fill_rate'?: (_google_protobuf_DoubleValue);
}
/**
* Rate Limit settings to be applied for discovery requests made by Envoy.
*/
export interface RateLimitSettings__Output {
/**
* Maximum number of tokens to be used for rate limiting discovery request calls. If not set, a
* default value of 100 will be used.
*/
'max_tokens'?: (_google_protobuf_UInt32Value__Output);
/**
* Rate at which tokens will be filled per second. If not set, a default fill rate of 10 tokens
* per second will be used.
*/
'fill_rate'?: (_google_protobuf_DoubleValue__Output);
}

View File

@ -0,0 +1,40 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { HttpUri as _envoy_api_v2_core_HttpUri, HttpUri__Output as _envoy_api_v2_core_HttpUri__Output } from '../../../../envoy/api/v2/core/HttpUri';
import { RetryPolicy as _envoy_api_v2_core_RetryPolicy, RetryPolicy__Output as _envoy_api_v2_core_RetryPolicy__Output } from '../../../../envoy/api/v2/core/RetryPolicy';
/**
* The message specifies how to fetch data from remote and how to verify it.
*/
export interface RemoteDataSource {
/**
* The HTTP URI to fetch the remote data.
*/
'http_uri'?: (_envoy_api_v2_core_HttpUri);
/**
* SHA256 string for verifying data.
*/
'sha256'?: (string);
/**
* Retry policy for fetching remote data.
*/
'retry_policy'?: (_envoy_api_v2_core_RetryPolicy);
}
/**
* The message specifies how to fetch data from remote and how to verify it.
*/
export interface RemoteDataSource__Output {
/**
* The HTTP URI to fetch the remote data.
*/
'http_uri'?: (_envoy_api_v2_core_HttpUri__Output);
/**
* SHA256 string for verifying data.
*/
'sha256': (string);
/**
* Retry policy for fetching remote data.
*/
'retry_policy'?: (_envoy_api_v2_core_RetryPolicy__Output);
}

View File

@ -0,0 +1,17 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
/**
* HTTP request method.
*/
export enum RequestMethod {
METHOD_UNSPECIFIED = 0,
GET = 1,
HEAD = 2,
POST = 3,
PUT = 4,
DELETE = 5,
CONNECT = 6,
OPTIONS = 7,
TRACE = 8,
PATCH = 9,
}

View File

@ -0,0 +1,38 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { BackoffStrategy as _envoy_api_v2_core_BackoffStrategy, BackoffStrategy__Output as _envoy_api_v2_core_BackoffStrategy__Output } from '../../../../envoy/api/v2/core/BackoffStrategy';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
/**
* The message specifies the retry policy of remote data source when fetching fails.
*/
export interface RetryPolicy {
/**
* Specifies parameters that control :ref:`retry backoff strategy <envoy_api_msg_core.BackoffStrategy>`.
* This parameter is optional, in which case the default base interval is 1000 milliseconds. The
* default maximum interval is 10 times the base interval.
*/
'retry_back_off'?: (_envoy_api_v2_core_BackoffStrategy);
/**
* Specifies the allowed number of retries. This parameter is optional and
* defaults to 1.
*/
'num_retries'?: (_google_protobuf_UInt32Value);
}
/**
* The message specifies the retry policy of remote data source when fetching fails.
*/
export interface RetryPolicy__Output {
/**
* Specifies parameters that control :ref:`retry backoff strategy <envoy_api_msg_core.BackoffStrategy>`.
* This parameter is optional, in which case the default base interval is 1000 milliseconds. The
* default maximum interval is 10 times the base interval.
*/
'retry_back_off'?: (_envoy_api_v2_core_BackoffStrategy__Output);
/**
* Specifies the allowed number of retries. This parameter is optional and
* defaults to 1.
*/
'num_retries'?: (_google_protobuf_UInt32Value__Output);
}

View File

@ -0,0 +1,15 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
/**
* Envoy supports :ref:`upstream priority routing
* <arch_overview_http_routing_priority>` both at the route and the virtual
* cluster level. The current priority implementation uses different connection
* pool and circuit breaking settings for each priority level. This means that
* even for HTTP/2 requests, two physical connections will be used to an
* upstream host. In the future Envoy will likely support true HTTP/2 priority
* over a single upstream connection.
*/
export enum RoutingPriority {
DEFAULT = 0,
HIGH = 1,
}

View File

@ -0,0 +1,30 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
/**
* Runtime derived double with a default when not specified.
*/
export interface RuntimeDouble {
/**
* Default value if runtime value is not available.
*/
'default_value'?: (number | string);
/**
* Runtime key to get value for comparison. This value is used if defined.
*/
'runtime_key'?: (string);
}
/**
* Runtime derived double with a default when not specified.
*/
export interface RuntimeDouble__Output {
/**
* Default value if runtime value is not available.
*/
'default_value': (number | string);
/**
* Runtime key to get value for comparison. This value is used if defined.
*/
'runtime_key': (string);
}

View File

@ -0,0 +1,35 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
/**
* Runtime derived bool with a default when not specified.
*/
export interface RuntimeFeatureFlag {
/**
* Default value if runtime value is not available.
*/
'default_value'?: (_google_protobuf_BoolValue);
/**
* Runtime key to get value for comparison. This value is used if defined. The boolean value must
* be represented via its
* `canonical JSON encoding <https://developers.google.com/protocol-buffers/docs/proto3#json>`_.
*/
'runtime_key'?: (string);
}
/**
* Runtime derived bool with a default when not specified.
*/
export interface RuntimeFeatureFlag__Output {
/**
* Default value if runtime value is not available.
*/
'default_value'?: (_google_protobuf_BoolValue__Output);
/**
* Runtime key to get value for comparison. This value is used if defined. The boolean value must
* be represented via its
* `canonical JSON encoding <https://developers.google.com/protocol-buffers/docs/proto3#json>`_.
*/
'runtime_key': (string);
}

View File

@ -0,0 +1,49 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { FractionalPercent as _envoy_type_FractionalPercent, FractionalPercent__Output as _envoy_type_FractionalPercent__Output } from '../../../../envoy/type/FractionalPercent';
/**
* Runtime derived FractionalPercent with defaults for when the numerator or denominator is not
* specified via a runtime key.
*
* .. note::
*
* Parsing of the runtime key's data is implemented such that it may be represented as a
* :ref:`FractionalPercent <envoy_api_msg_type.FractionalPercent>` proto represented as JSON/YAML
* and may also be represented as an integer with the assumption that the value is an integral
* percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse
* as a `FractionalPercent` whose numerator is 42 and denominator is HUNDRED.
*/
export interface RuntimeFractionalPercent {
/**
* Default value if the runtime value's for the numerator/denominator keys are not available.
*/
'default_value'?: (_envoy_type_FractionalPercent);
/**
* Runtime key for a YAML representation of a FractionalPercent.
*/
'runtime_key'?: (string);
}
/**
* Runtime derived FractionalPercent with defaults for when the numerator or denominator is not
* specified via a runtime key.
*
* .. note::
*
* Parsing of the runtime key's data is implemented such that it may be represented as a
* :ref:`FractionalPercent <envoy_api_msg_type.FractionalPercent>` proto represented as JSON/YAML
* and may also be represented as an integer with the assumption that the value is an integral
* percentage out of 100. For instance, a runtime key lookup returning the value "42" would parse
* as a `FractionalPercent` whose numerator is 42 and denominator is HUNDRED.
*/
export interface RuntimeFractionalPercent__Output {
/**
* Default value if the runtime value's for the numerator/denominator keys are not available.
*/
'default_value'?: (_envoy_type_FractionalPercent__Output);
/**
* Runtime key for a YAML representation of a FractionalPercent.
*/
'runtime_key': (string);
}

View File

@ -0,0 +1,30 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
/**
* Runtime derived uint32 with a default when not specified.
*/
export interface RuntimeUInt32 {
/**
* Default value if runtime value is not available.
*/
'default_value'?: (number);
/**
* Runtime key to get value for comparison. This value is used if defined.
*/
'runtime_key'?: (string);
}
/**
* Runtime derived uint32 with a default when not specified.
*/
export interface RuntimeUInt32__Output {
/**
* Default value if runtime value is not available.
*/
'default_value': (number);
/**
* Runtime key to get value for comparison. This value is used if defined.
*/
'runtime_key': (string);
}

View File

@ -0,0 +1,20 @@
// Original file: deps/envoy-api/envoy/api/v2/core/config_source.proto
/**
* [#not-implemented-hide:]
* Self-referencing config source options. This is currently empty, but when
* set in :ref:`ConfigSource <envoy_api_msg_core.ConfigSource>` can be used to
* specify that other data can be obtained from the same server.
*/
export interface SelfConfigSource {
}
/**
* [#not-implemented-hide:]
* Self-referencing config source options. This is currently empty, but when
* set in :ref:`ConfigSource <envoy_api_msg_core.ConfigSource>` can be used to
* specify that other data can be obtained from the same server.
*/
export interface SelfConfigSource__Output {
}

View File

@ -0,0 +1,97 @@
// Original file: deps/envoy-api/envoy/api/v2/core/address.proto
// Original file: deps/envoy-api/envoy/api/v2/core/address.proto
export enum _envoy_api_v2_core_SocketAddress_Protocol {
TCP = 0,
UDP = 1,
}
/**
* [#next-free-field: 7]
*/
export interface SocketAddress {
'protocol'?: (_envoy_api_v2_core_SocketAddress_Protocol | keyof typeof _envoy_api_v2_core_SocketAddress_Protocol);
/**
* The address for this socket. :ref:`Listeners <config_listeners>` will bind
* to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::``
* to bind to any address. [#comment:TODO(zuercher) reinstate when implemented:
* It is possible to distinguish a Listener address via the prefix/suffix matching
* in :ref:`FilterChainMatch <envoy_api_msg_listener.FilterChainMatch>`.] When used
* within an upstream :ref:`BindConfig <envoy_api_msg_core.BindConfig>`, the address
* controls the source address of outbound connections. For :ref:`clusters
* <envoy_api_msg_Cluster>`, the cluster type determines whether the
* address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS
* (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized
* via :ref:`resolver_name <envoy_api_field_core.SocketAddress.resolver_name>`.
*/
'address'?: (string);
'port_value'?: (number);
/**
* This is only valid if :ref:`resolver_name
* <envoy_api_field_core.SocketAddress.resolver_name>` is specified below and the
* named resolver is capable of named port resolution.
*/
'named_port'?: (string);
/**
* The name of the custom resolver. This must have been registered with Envoy. If
* this is empty, a context dependent default applies. If the address is a concrete
* IP address, no resolution will occur. If address is a hostname this
* should be set for resolution other than DNS. Specifying a custom resolver with
* *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime.
*/
'resolver_name'?: (string);
/**
* When binding to an IPv6 address above, this enables `IPv4 compatibility
* <https://tools.ietf.org/html/rfc3493#page-11>`_. Binding to ``::`` will
* allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
* IPv6 space as ``::FFFF:<IPv4-address>``.
*/
'ipv4_compat'?: (boolean);
'port_specifier'?: "port_value"|"named_port";
}
/**
* [#next-free-field: 7]
*/
export interface SocketAddress__Output {
'protocol': (keyof typeof _envoy_api_v2_core_SocketAddress_Protocol);
/**
* The address for this socket. :ref:`Listeners <config_listeners>` will bind
* to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::``
* to bind to any address. [#comment:TODO(zuercher) reinstate when implemented:
* It is possible to distinguish a Listener address via the prefix/suffix matching
* in :ref:`FilterChainMatch <envoy_api_msg_listener.FilterChainMatch>`.] When used
* within an upstream :ref:`BindConfig <envoy_api_msg_core.BindConfig>`, the address
* controls the source address of outbound connections. For :ref:`clusters
* <envoy_api_msg_Cluster>`, the cluster type determines whether the
* address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS
* (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized
* via :ref:`resolver_name <envoy_api_field_core.SocketAddress.resolver_name>`.
*/
'address': (string);
'port_value'?: (number);
/**
* This is only valid if :ref:`resolver_name
* <envoy_api_field_core.SocketAddress.resolver_name>` is specified below and the
* named resolver is capable of named port resolution.
*/
'named_port'?: (string);
/**
* The name of the custom resolver. This must have been registered with Envoy. If
* this is empty, a context dependent default applies. If the address is a concrete
* IP address, no resolution will occur. If address is a hostname this
* should be set for resolution other than DNS. Specifying a custom resolver with
* *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime.
*/
'resolver_name': (string);
/**
* When binding to an IPv6 address above, this enables `IPv4 compatibility
* <https://tools.ietf.org/html/rfc3493#page-11>`_. Binding to ``::`` will
* allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into
* IPv6 space as ``::FFFF:<IPv4-address>``.
*/
'ipv4_compat': (boolean);
'port_specifier': "port_value"|"named_port";
}

View File

@ -0,0 +1,90 @@
// Original file: deps/envoy-api/envoy/api/v2/core/socket_option.proto
import { Long } from '@grpc/proto-loader';
// Original file: deps/envoy-api/envoy/api/v2/core/socket_option.proto
export enum _envoy_api_v2_core_SocketOption_SocketState {
/**
* Socket options are applied after socket creation but before binding the socket to a port
*/
STATE_PREBIND = 0,
/**
* Socket options are applied after binding the socket to a port but before calling listen()
*/
STATE_BOUND = 1,
/**
* Socket options are applied after calling listen()
*/
STATE_LISTENING = 2,
}
/**
* Generic socket option message. This would be used to set socket options that
* might not exist in upstream kernels or precompiled Envoy binaries.
* [#next-free-field: 7]
*/
export interface SocketOption {
/**
* An optional name to give this socket option for debugging, etc.
* Uniqueness is not required and no special meaning is assumed.
*/
'description'?: (string);
/**
* Corresponding to the level value passed to setsockopt, such as IPPROTO_TCP
*/
'level'?: (number | string | Long);
/**
* The numeric name as passed to setsockopt
*/
'name'?: (number | string | Long);
/**
* Because many sockopts take an int value.
*/
'int_value'?: (number | string | Long);
/**
* Otherwise it's a byte buffer.
*/
'buf_value'?: (Buffer | Uint8Array | string);
/**
* The state in which the option will be applied. When used in BindConfig
* STATE_PREBIND is currently the only valid value.
*/
'state'?: (_envoy_api_v2_core_SocketOption_SocketState | keyof typeof _envoy_api_v2_core_SocketOption_SocketState);
'value'?: "int_value"|"buf_value";
}
/**
* Generic socket option message. This would be used to set socket options that
* might not exist in upstream kernels or precompiled Envoy binaries.
* [#next-free-field: 7]
*/
export interface SocketOption__Output {
/**
* An optional name to give this socket option for debugging, etc.
* Uniqueness is not required and no special meaning is assumed.
*/
'description': (string);
/**
* Corresponding to the level value passed to setsockopt, such as IPPROTO_TCP
*/
'level': (string);
/**
* The numeric name as passed to setsockopt
*/
'name': (string);
/**
* Because many sockopts take an int value.
*/
'int_value'?: (string);
/**
* Otherwise it's a byte buffer.
*/
'buf_value'?: (Buffer);
/**
* The state in which the option will be applied. When used in BindConfig
* STATE_PREBIND is currently the only valid value.
*/
'state': (keyof typeof _envoy_api_v2_core_SocketOption_SocketState);
'value': "int_value"|"buf_value";
}

View File

@ -0,0 +1,43 @@
// Original file: deps/envoy-api/envoy/api/v2/core/address.proto
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
export interface TcpKeepalive {
/**
* Maximum number of keepalive probes to send without response before deciding
* the connection is dead. Default is to use the OS level configuration (unless
* overridden, Linux defaults to 9.)
*/
'keepalive_probes'?: (_google_protobuf_UInt32Value);
/**
* The number of seconds a connection needs to be idle before keep-alive probes
* start being sent. Default is to use the OS level configuration (unless
* overridden, Linux defaults to 7200s (i.e., 2 hours.)
*/
'keepalive_time'?: (_google_protobuf_UInt32Value);
/**
* The number of seconds between keep-alive probes. Default is to use the OS
* level configuration (unless overridden, Linux defaults to 75s.)
*/
'keepalive_interval'?: (_google_protobuf_UInt32Value);
}
export interface TcpKeepalive__Output {
/**
* Maximum number of keepalive probes to send without response before deciding
* the connection is dead. Default is to use the OS level configuration (unless
* overridden, Linux defaults to 9.)
*/
'keepalive_probes'?: (_google_protobuf_UInt32Value__Output);
/**
* The number of seconds a connection needs to be idle before keep-alive probes
* start being sent. Default is to use the OS level configuration (unless
* overridden, Linux defaults to 7200s (i.e., 2 hours.)
*/
'keepalive_time'?: (_google_protobuf_UInt32Value__Output);
/**
* The number of seconds between keep-alive probes. Default is to use the OS
* level configuration (unless overridden, Linux defaults to 75s.)
*/
'keepalive_interval'?: (_google_protobuf_UInt32Value__Output);
}

View File

@ -0,0 +1,14 @@
// Original file: deps/envoy-api/envoy/api/v2/core/protocol.proto
/**
* [#not-implemented-hide:]
*/
export interface TcpProtocolOptions {
}
/**
* [#not-implemented-hide:]
*/
export interface TcpProtocolOptions__Output {
}

View File

@ -0,0 +1,19 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
/**
* Identifies the direction of the traffic relative to the local Envoy.
*/
export enum TrafficDirection {
/**
* Default option is unspecified.
*/
UNSPECIFIED = 0,
/**
* The transport is used for incoming traffic.
*/
INBOUND = 1,
/**
* The transport is used for outgoing traffic.
*/
OUTBOUND = 2,
}

View File

@ -0,0 +1,46 @@
// Original file: deps/envoy-api/envoy/api/v2/core/base.proto
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
/**
* Configuration for transport socket in :ref:`listeners <config_listeners>` and
* :ref:`clusters <envoy_api_msg_Cluster>`. If the configuration is
* empty, a default transport socket implementation and configuration will be
* chosen based on the platform and existence of tls_context.
*/
export interface TransportSocket {
/**
* The name of the transport socket to instantiate. The name must match a supported transport
* socket implementation.
*/
'name'?: (string);
'config'?: (_google_protobuf_Struct);
'typed_config'?: (_google_protobuf_Any);
/**
* Implementation specific configuration which depends on the implementation being instantiated.
* See the supported transport socket implementations for further documentation.
*/
'config_type'?: "config"|"typed_config";
}
/**
* Configuration for transport socket in :ref:`listeners <config_listeners>` and
* :ref:`clusters <envoy_api_msg_Cluster>`. If the configuration is
* empty, a default transport socket implementation and configuration will be
* chosen based on the platform and existence of tls_context.
*/
export interface TransportSocket__Output {
/**
* The name of the transport socket to instantiate. The name must match a supported transport
* socket implementation.
*/
'name': (string);
'config'?: (_google_protobuf_Struct__Output);
'typed_config'?: (_google_protobuf_Any__Output);
/**
* Implementation specific configuration which depends on the implementation being instantiated.
* See the supported transport socket implementations for further documentation.
*/
'config_type': "config"|"typed_config";
}

View File

@ -0,0 +1,34 @@
// Original file: deps/envoy-api/envoy/api/v2/core/protocol.proto
export interface UpstreamHttpProtocolOptions {
/**
* 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
* :ref:`router filter <config_http_filters_router>`.
*/
'auto_sni'?: (boolean);
/**
* Automatic validate upstream presented certificate for new upstream connections based on the
* downstream HTTP host/authority header, as seen by the
* :ref:`router filter <config_http_filters_router>`.
* This field is intended to set with `auto_sni` field.
*/
'auto_san_validation'?: (boolean);
}
export interface UpstreamHttpProtocolOptions__Output {
/**
* 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
* :ref:`router filter <config_http_filters_router>`.
*/
'auto_sni': (boolean);
/**
* Automatic validate upstream presented certificate for new upstream connections based on the
* downstream HTTP host/authority header, as seen by the
* :ref:`router filter <config_http_filters_router>`.
* This field is intended to set with `auto_sni` field.
*/
'auto_san_validation': (boolean);
}

View File

@ -0,0 +1,119 @@
// Original file: deps/envoy-api/envoy/api/v2/endpoint/endpoint_components.proto
import { Address as _envoy_api_v2_core_Address, Address__Output as _envoy_api_v2_core_Address__Output } from '../../../../envoy/api/v2/core/Address';
/**
* The optional health check configuration.
*/
export interface _envoy_api_v2_endpoint_Endpoint_HealthCheckConfig {
/**
* Optional alternative health check port value.
*
* By default the health check address port of an upstream host is the same
* as the host's serving address port. This provides an alternative health
* check port. Setting this with a non-zero value allows an upstream host
* to have different health check address port.
*/
'port_value'?: (number);
/**
* By default, the host header for L7 health checks is controlled by cluster level configuration
* (see: :ref:`host <envoy_api_field_core.HealthCheck.HttpHealthCheck.host>` and
* :ref:`authority <envoy_api_field_core.HealthCheck.GrpcHealthCheck.authority>`). Setting this
* to a non-empty value allows overriding the cluster level configuration for a specific
* endpoint.
*/
'hostname'?: (string);
}
/**
* The optional health check configuration.
*/
export interface _envoy_api_v2_endpoint_Endpoint_HealthCheckConfig__Output {
/**
* Optional alternative health check port value.
*
* By default the health check address port of an upstream host is the same
* as the host's serving address port. This provides an alternative health
* check port. Setting this with a non-zero value allows an upstream host
* to have different health check address port.
*/
'port_value': (number);
/**
* By default, the host header for L7 health checks is controlled by cluster level configuration
* (see: :ref:`host <envoy_api_field_core.HealthCheck.HttpHealthCheck.host>` and
* :ref:`authority <envoy_api_field_core.HealthCheck.GrpcHealthCheck.authority>`). Setting this
* to a non-empty value allows overriding the cluster level configuration for a specific
* endpoint.
*/
'hostname': (string);
}
/**
* Upstream host identifier.
*/
export interface Endpoint {
/**
* The upstream host address.
*
* .. attention::
*
* The form of host address depends on the given cluster type. For STATIC or EDS,
* it is expected to be a direct IP address (or something resolvable by the
* specified :ref:`resolver <envoy_api_field_core.SocketAddress.resolver_name>`
* in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
* and will be resolved via DNS.
*/
'address'?: (_envoy_api_v2_core_Address);
/**
* The optional health check configuration is used as configuration for the
* health checker to contact the health checked host.
*
* .. attention::
*
* This takes into effect only for upstream clusters with
* :ref:`active health checking <arch_overview_health_checking>` enabled.
*/
'health_check_config'?: (_envoy_api_v2_endpoint_Endpoint_HealthCheckConfig);
/**
* The hostname associated with this endpoint. This hostname is not used for routing or address
* resolution. If provided, it will be associated with the endpoint, and can be used for features
* that require a hostname, like
* :ref:`auto_host_rewrite <envoy_api_field_route.RouteAction.auto_host_rewrite>`.
*/
'hostname'?: (string);
}
/**
* Upstream host identifier.
*/
export interface Endpoint__Output {
/**
* The upstream host address.
*
* .. attention::
*
* The form of host address depends on the given cluster type. For STATIC or EDS,
* it is expected to be a direct IP address (or something resolvable by the
* specified :ref:`resolver <envoy_api_field_core.SocketAddress.resolver_name>`
* in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
* and will be resolved via DNS.
*/
'address'?: (_envoy_api_v2_core_Address__Output);
/**
* The optional health check configuration is used as configuration for the
* health checker to contact the health checked host.
*
* .. attention::
*
* This takes into effect only for upstream clusters with
* :ref:`active health checking <arch_overview_health_checking>` enabled.
*/
'health_check_config'?: (_envoy_api_v2_endpoint_Endpoint_HealthCheckConfig__Output);
/**
* The hostname associated with this endpoint. This hostname is not used for routing or address
* resolution. If provided, it will be associated with the endpoint, and can be used for features
* that require a hostname, like
* :ref:`auto_host_rewrite <envoy_api_field_route.RouteAction.auto_host_rewrite>`.
*/
'hostname': (string);
}

View File

@ -0,0 +1,90 @@
// Original file: deps/envoy-api/envoy/api/v2/endpoint/endpoint_components.proto
import { Endpoint as _envoy_api_v2_endpoint_Endpoint, Endpoint__Output as _envoy_api_v2_endpoint_Endpoint__Output } from '../../../../envoy/api/v2/endpoint/Endpoint';
import { HealthStatus as _envoy_api_v2_core_HealthStatus } from '../../../../envoy/api/v2/core/HealthStatus';
import { Metadata as _envoy_api_v2_core_Metadata, Metadata__Output as _envoy_api_v2_core_Metadata__Output } from '../../../../envoy/api/v2/core/Metadata';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
/**
* An Endpoint that Envoy can route traffic to.
* [#next-free-field: 6]
*/
export interface LbEndpoint {
'endpoint'?: (_envoy_api_v2_endpoint_Endpoint);
/**
* Optional health status when known and supplied by EDS server.
*/
'health_status'?: (_envoy_api_v2_core_HealthStatus | keyof typeof _envoy_api_v2_core_HealthStatus);
/**
* The endpoint metadata specifies values that may be used by the load
* balancer to select endpoints in a cluster for a given request. The filter
* name should be specified as *envoy.lb*. An example boolean key-value pair
* is *canary*, providing the optional canary status of the upstream host.
* This may be matched against in a route's
* :ref:`RouteAction <envoy_api_msg_route.RouteAction>` metadata_match field
* to subset the endpoints considered in cluster load balancing.
*/
'metadata'?: (_envoy_api_v2_core_Metadata);
/**
* The optional load balancing weight of the upstream host; at least 1.
* Envoy uses the load balancing weight in some of the built in load
* balancers. The load balancing weight for an endpoint is divided by the sum
* of the weights of all endpoints in the endpoint's locality to produce a
* percentage of traffic for the endpoint. This percentage is then further
* weighted by the endpoint's locality's load balancing weight from
* LocalityLbEndpoints. If unspecified, each host is presumed to have equal
* weight in a locality. The sum of the weights of all endpoints in the
* endpoint's locality must not exceed uint32_t maximal value (4294967295).
*/
'load_balancing_weight'?: (_google_protobuf_UInt32Value);
/**
* [#not-implemented-hide:]
*/
'endpoint_name'?: (string);
/**
* Upstream host identifier or a named reference.
*/
'host_identifier'?: "endpoint"|"endpoint_name";
}
/**
* An Endpoint that Envoy can route traffic to.
* [#next-free-field: 6]
*/
export interface LbEndpoint__Output {
'endpoint'?: (_envoy_api_v2_endpoint_Endpoint__Output);
/**
* Optional health status when known and supplied by EDS server.
*/
'health_status': (keyof typeof _envoy_api_v2_core_HealthStatus);
/**
* The endpoint metadata specifies values that may be used by the load
* balancer to select endpoints in a cluster for a given request. The filter
* name should be specified as *envoy.lb*. An example boolean key-value pair
* is *canary*, providing the optional canary status of the upstream host.
* This may be matched against in a route's
* :ref:`RouteAction <envoy_api_msg_route.RouteAction>` metadata_match field
* to subset the endpoints considered in cluster load balancing.
*/
'metadata'?: (_envoy_api_v2_core_Metadata__Output);
/**
* The optional load balancing weight of the upstream host; at least 1.
* Envoy uses the load balancing weight in some of the built in load
* balancers. The load balancing weight for an endpoint is divided by the sum
* of the weights of all endpoints in the endpoint's locality to produce a
* percentage of traffic for the endpoint. This percentage is then further
* weighted by the endpoint's locality's load balancing weight from
* LocalityLbEndpoints. If unspecified, each host is presumed to have equal
* weight in a locality. The sum of the weights of all endpoints in the
* endpoint's locality must not exceed uint32_t maximal value (4294967295).
*/
'load_balancing_weight'?: (_google_protobuf_UInt32Value__Output);
/**
* [#not-implemented-hide:]
*/
'endpoint_name'?: (string);
/**
* Upstream host identifier or a named reference.
*/
'host_identifier': "endpoint"|"endpoint_name";
}

View File

@ -0,0 +1,111 @@
// Original file: deps/envoy-api/envoy/api/v2/endpoint/endpoint_components.proto
import { Locality as _envoy_api_v2_core_Locality, Locality__Output as _envoy_api_v2_core_Locality__Output } from '../../../../envoy/api/v2/core/Locality';
import { LbEndpoint as _envoy_api_v2_endpoint_LbEndpoint, LbEndpoint__Output as _envoy_api_v2_endpoint_LbEndpoint__Output } from '../../../../envoy/api/v2/endpoint/LbEndpoint';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
/**
* A group of endpoints belonging to a Locality.
* One can have multiple LocalityLbEndpoints for a locality, but this is
* generally only done if the different groups need to have different load
* balancing weights or different priorities.
* [#next-free-field: 7]
*/
export interface LocalityLbEndpoints {
/**
* Identifies location of where the upstream hosts run.
*/
'locality'?: (_envoy_api_v2_core_Locality);
/**
* The group of endpoints belonging to the locality specified.
*/
'lb_endpoints'?: (_envoy_api_v2_endpoint_LbEndpoint)[];
/**
* Optional: Per priority/region/zone/sub_zone weight; at least 1. The load
* balancing weight for a locality is divided by the sum of the weights of all
* localities at the same priority level to produce the effective percentage
* of traffic for the locality. The sum of the weights of all localities at
* the same priority level must not exceed uint32_t maximal value (4294967295).
*
* Locality weights are only considered when :ref:`locality weighted load
* balancing <arch_overview_load_balancing_locality_weighted_lb>` is
* configured. These weights are ignored otherwise. If no weights are
* specified when locality weighted load balancing is enabled, the locality is
* assigned no load.
*/
'load_balancing_weight'?: (_google_protobuf_UInt32Value);
/**
* Optional: the priority for this LocalityLbEndpoints. If unspecified this will
* default to the highest priority (0).
*
* Under usual circumstances, Envoy will only select endpoints for the highest
* priority (0). In the event all endpoints for a particular priority are
* unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
* next highest priority group.
*
* Priorities should range from 0 (highest) to N (lowest) without skipping.
*/
'priority'?: (number);
/**
* Optional: Per locality proximity value which indicates how close this
* locality is from the source locality. This value only provides ordering
* information (lower the value, closer it is to the source locality).
* This will be consumed by load balancing schemes that need proximity order
* to determine where to route the requests.
* [#not-implemented-hide:]
*/
'proximity'?: (_google_protobuf_UInt32Value);
}
/**
* A group of endpoints belonging to a Locality.
* One can have multiple LocalityLbEndpoints for a locality, but this is
* generally only done if the different groups need to have different load
* balancing weights or different priorities.
* [#next-free-field: 7]
*/
export interface LocalityLbEndpoints__Output {
/**
* Identifies location of where the upstream hosts run.
*/
'locality'?: (_envoy_api_v2_core_Locality__Output);
/**
* The group of endpoints belonging to the locality specified.
*/
'lb_endpoints': (_envoy_api_v2_endpoint_LbEndpoint__Output)[];
/**
* Optional: Per priority/region/zone/sub_zone weight; at least 1. The load
* balancing weight for a locality is divided by the sum of the weights of all
* localities at the same priority level to produce the effective percentage
* of traffic for the locality. The sum of the weights of all localities at
* the same priority level must not exceed uint32_t maximal value (4294967295).
*
* Locality weights are only considered when :ref:`locality weighted load
* balancing <arch_overview_load_balancing_locality_weighted_lb>` is
* configured. These weights are ignored otherwise. If no weights are
* specified when locality weighted load balancing is enabled, the locality is
* assigned no load.
*/
'load_balancing_weight'?: (_google_protobuf_UInt32Value__Output);
/**
* Optional: the priority for this LocalityLbEndpoints. If unspecified this will
* default to the highest priority (0).
*
* Under usual circumstances, Envoy will only select endpoints for the highest
* priority (0). In the event all endpoints for a particular priority are
* unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
* next highest priority group.
*
* Priorities should range from 0 (highest) to N (lowest) without skipping.
*/
'priority': (number);
/**
* Optional: Per locality proximity value which indicates how close this
* locality is from the source locality. This value only provides ordering
* information (lower the value, closer it is to the source locality).
* This will be consumed by load balancing schemes that need proximity order
* to determine where to route the requests.
* [#not-implemented-hide:]
*/
'proximity'?: (_google_protobuf_UInt32Value__Output);
}

View File

@ -0,0 +1,8 @@
// Original file: deps/envoy-api/envoy/api/v2/listener/udp_listener_config.proto
export interface ActiveRawUdpListenerConfig {
}
export interface ActiveRawUdpListenerConfig__Output {
}

View File

@ -0,0 +1,34 @@
// Original file: deps/envoy-api/envoy/api/v2/listener/listener_components.proto
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
export interface Filter {
/**
* The name of the filter to instantiate. The name must match a
* :ref:`supported filter <config_network_filters>`.
*/
'name'?: (string);
'config'?: (_google_protobuf_Struct);
'typed_config'?: (_google_protobuf_Any);
/**
* Filter specific configuration which depends on the filter being
* instantiated. See the supported filters for further documentation.
*/
'config_type'?: "config"|"typed_config";
}
export interface Filter__Output {
/**
* The name of the filter to instantiate. The name must match a
* :ref:`supported filter <config_network_filters>`.
*/
'name': (string);
'config'?: (_google_protobuf_Struct__Output);
'typed_config'?: (_google_protobuf_Any__Output);
/**
* Filter specific configuration which depends on the filter being
* instantiated. See the supported filters for further documentation.
*/
'config_type': "config"|"typed_config";
}

View File

@ -0,0 +1,118 @@
// Original file: deps/envoy-api/envoy/api/v2/listener/listener_components.proto
import { FilterChainMatch as _envoy_api_v2_listener_FilterChainMatch, FilterChainMatch__Output as _envoy_api_v2_listener_FilterChainMatch__Output } from '../../../../envoy/api/v2/listener/FilterChainMatch';
import { DownstreamTlsContext as _envoy_api_v2_auth_DownstreamTlsContext, DownstreamTlsContext__Output as _envoy_api_v2_auth_DownstreamTlsContext__Output } from '../../../../envoy/api/v2/auth/DownstreamTlsContext';
import { Filter as _envoy_api_v2_listener_Filter, Filter__Output as _envoy_api_v2_listener_Filter__Output } from '../../../../envoy/api/v2/listener/Filter';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
import { Metadata as _envoy_api_v2_core_Metadata, Metadata__Output as _envoy_api_v2_core_Metadata__Output } from '../../../../envoy/api/v2/core/Metadata';
import { TransportSocket as _envoy_api_v2_core_TransportSocket, TransportSocket__Output as _envoy_api_v2_core_TransportSocket__Output } from '../../../../envoy/api/v2/core/TransportSocket';
/**
* A filter chain wraps a set of match criteria, an option TLS context, a set of filters, and
* various other parameters.
* [#next-free-field: 8]
*/
export interface FilterChain {
/**
* The criteria to use when matching a connection to this filter chain.
*/
'filter_chain_match'?: (_envoy_api_v2_listener_FilterChainMatch);
/**
* The TLS context for this filter chain.
*
* .. attention::
*
* **This field is deprecated**. Use `transport_socket` with name `tls` instead. If both are
* set, `transport_socket` takes priority.
*/
'tls_context'?: (_envoy_api_v2_auth_DownstreamTlsContext);
/**
* A list of individual network filters that make up the filter chain for
* connections established with the listener. Order matters as the filters are
* processed sequentially as connection events happen. Note: If the filter
* list is empty, the connection will close by default.
*/
'filters'?: (_envoy_api_v2_listener_Filter)[];
/**
* Whether the listener should expect a PROXY protocol V1 header on new
* connections. If this option is enabled, the listener will assume that that
* remote address of the connection is the one specified in the header. Some
* load balancers including the AWS ELB support this option. If the option is
* absent or set to false, Envoy will use the physical peer address of the
* connection as the remote address.
*/
'use_proxy_proto'?: (_google_protobuf_BoolValue);
/**
* [#not-implemented-hide:] filter chain metadata.
*/
'metadata'?: (_envoy_api_v2_core_Metadata);
/**
* Optional custom transport socket implementation to use for downstream connections.
* To setup TLS, set a transport socket with name `tls` and
* :ref:`DownstreamTlsContext <envoy_api_msg_auth.DownstreamTlsContext>` in the `typed_config`.
* If no transport socket configuration is specified, new connections
* will be set up with plaintext.
*/
'transport_socket'?: (_envoy_api_v2_core_TransportSocket);
/**
* [#not-implemented-hide:] The unique name (or empty) by which this filter chain is known. If no
* name is provided, Envoy will allocate an internal UUID for the filter chain. If the filter
* chain is to be dynamically updated or removed via FCDS a unique name must be provided.
*/
'name'?: (string);
}
/**
* A filter chain wraps a set of match criteria, an option TLS context, a set of filters, and
* various other parameters.
* [#next-free-field: 8]
*/
export interface FilterChain__Output {
/**
* The criteria to use when matching a connection to this filter chain.
*/
'filter_chain_match'?: (_envoy_api_v2_listener_FilterChainMatch__Output);
/**
* The TLS context for this filter chain.
*
* .. attention::
*
* **This field is deprecated**. Use `transport_socket` with name `tls` instead. If both are
* set, `transport_socket` takes priority.
*/
'tls_context'?: (_envoy_api_v2_auth_DownstreamTlsContext__Output);
/**
* A list of individual network filters that make up the filter chain for
* connections established with the listener. Order matters as the filters are
* processed sequentially as connection events happen. Note: If the filter
* list is empty, the connection will close by default.
*/
'filters': (_envoy_api_v2_listener_Filter__Output)[];
/**
* Whether the listener should expect a PROXY protocol V1 header on new
* connections. If this option is enabled, the listener will assume that that
* remote address of the connection is the one specified in the header. Some
* load balancers including the AWS ELB support this option. If the option is
* absent or set to false, Envoy will use the physical peer address of the
* connection as the remote address.
*/
'use_proxy_proto'?: (_google_protobuf_BoolValue__Output);
/**
* [#not-implemented-hide:] filter chain metadata.
*/
'metadata'?: (_envoy_api_v2_core_Metadata__Output);
/**
* Optional custom transport socket implementation to use for downstream connections.
* To setup TLS, set a transport socket with name `tls` and
* :ref:`DownstreamTlsContext <envoy_api_msg_auth.DownstreamTlsContext>` in the `typed_config`.
* If no transport socket configuration is specified, new connections
* will be set up with plaintext.
*/
'transport_socket'?: (_envoy_api_v2_core_TransportSocket__Output);
/**
* [#not-implemented-hide:] The unique name (or empty) by which this filter chain is known. If no
* name is provided, Envoy will allocate an internal UUID for the filter chain. If the filter
* chain is to be dynamically updated or removed via FCDS a unique name must be provided.
*/
'name': (string);
}

View File

@ -0,0 +1,263 @@
// Original file: deps/envoy-api/envoy/api/v2/listener/listener_components.proto
import { CidrRange as _envoy_api_v2_core_CidrRange, CidrRange__Output as _envoy_api_v2_core_CidrRange__Output } from '../../../../envoy/api/v2/core/CidrRange';
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
// Original file: deps/envoy-api/envoy/api/v2/listener/listener_components.proto
export enum _envoy_api_v2_listener_FilterChainMatch_ConnectionSourceType {
/**
* Any connection source matches.
*/
ANY = 0,
/**
* Match a connection originating from the same host.
*/
LOCAL = 1,
/**
* Match a connection originating from a different host.
*/
EXTERNAL = 2,
}
/**
* Specifies the match criteria for selecting a specific filter chain for a
* listener.
*
* In order for a filter chain to be selected, *ALL* of its criteria must be
* fulfilled by the incoming connection, properties of which are set by the
* networking stack and/or listener filters.
*
* The following order applies:
*
* 1. Destination port.
* 2. Destination IP address.
* 3. Server name (e.g. SNI for TLS protocol),
* 4. Transport protocol.
* 5. Application protocols (e.g. ALPN for TLS protocol).
* 6. Source type (e.g. any, local or external network).
* 7. Source IP address.
* 8. Source port.
*
* For criteria that allow ranges or wildcards, the most specific value in any
* of the configured filter chains that matches the incoming connection is going
* to be used (e.g. for SNI ``www.example.com`` the most specific match would be
* ``www.example.com``, then ``*.example.com``, then ``*.com``, then any filter
* chain without ``server_names`` requirements).
*
* [#comment: Implemented rules are kept in the preference order, with deprecated fields
* listed at the end, because that's how we want to list them in the docs.
*
* [#comment:TODO(PiotrSikora): Add support for configurable precedence of the rules]
* [#next-free-field: 13]
*/
export interface FilterChainMatch {
/**
* If non-empty, an IP address and prefix length to match addresses when the
* listener is bound to 0.0.0.0/:: or when use_original_dst is specified.
*/
'prefix_ranges'?: (_envoy_api_v2_core_CidrRange)[];
/**
* If non-empty, an IP address and suffix length to match addresses when the
* listener is bound to 0.0.0.0/:: or when use_original_dst is specified.
* [#not-implemented-hide:]
*/
'address_suffix'?: (string);
/**
* [#not-implemented-hide:]
*/
'suffix_len'?: (_google_protobuf_UInt32Value);
/**
* The criteria is satisfied if the source IP address of the downstream
* connection is contained in at least one of the specified subnets. If the
* parameter is not specified or the list is empty, the source IP address is
* ignored.
*/
'source_prefix_ranges'?: (_envoy_api_v2_core_CidrRange)[];
/**
* The criteria is satisfied if the source port of the downstream connection
* is contained in at least one of the specified ports. If the parameter is
* not specified, the source port is ignored.
*/
'source_ports'?: (number)[];
/**
* Optional destination port to consider when use_original_dst is set on the
* listener in determining a filter chain match.
*/
'destination_port'?: (_google_protobuf_UInt32Value);
/**
* If non-empty, a transport protocol to consider when determining a filter chain match.
* This value will be compared against the transport protocol of a new connection, when
* it's detected by one of the listener filters.
*
* Suggested values include:
*
* * ``raw_buffer`` - default, used when no transport protocol is detected,
* * ``tls`` - set by :ref:`envoy.filters.listener.tls_inspector <config_listener_filters_tls_inspector>`
* when TLS protocol is detected.
*/
'transport_protocol'?: (string);
/**
* If non-empty, a list of application protocols (e.g. ALPN for TLS protocol) to consider when
* determining a filter chain match. Those values will be compared against the application
* protocols of a new connection, when detected by one of the listener filters.
*
* Suggested values include:
*
* * ``http/1.1`` - set by :ref:`envoy.filters.listener.tls_inspector
* <config_listener_filters_tls_inspector>`,
* * ``h2`` - set by :ref:`envoy.filters.listener.tls_inspector <config_listener_filters_tls_inspector>`
*
* .. attention::
*
* Currently, only :ref:`TLS Inspector <config_listener_filters_tls_inspector>` provides
* application protocol detection based on the requested
* `ALPN <https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation>`_ values.
*
* However, the use of ALPN is pretty much limited to the HTTP/2 traffic on the Internet,
* and matching on values other than ``h2`` is going to lead to a lot of false negatives,
* unless all connecting clients are known to use ALPN.
*/
'application_protocols'?: (string)[];
/**
* If non-empty, a list of server names (e.g. SNI for TLS protocol) to consider when determining
* a filter chain match. Those values will be compared against the server names of a new
* connection, when detected by one of the listener filters.
*
* The server name will be matched against all wildcard domains, i.e. ``www.example.com``
* will be first matched against ``www.example.com``, then ``*.example.com``, then ``*.com``.
*
* Note that partial wildcards are not supported, and values like ``*w.example.com`` are invalid.
*
* .. attention::
*
* See the :ref:`FAQ entry <faq_how_to_setup_sni>` on how to configure SNI for more
* information.
*/
'server_names'?: (string)[];
/**
* Specifies the connection source IP match type. Can be any, local or external network.
*/
'source_type'?: (_envoy_api_v2_listener_FilterChainMatch_ConnectionSourceType | keyof typeof _envoy_api_v2_listener_FilterChainMatch_ConnectionSourceType);
}
/**
* Specifies the match criteria for selecting a specific filter chain for a
* listener.
*
* In order for a filter chain to be selected, *ALL* of its criteria must be
* fulfilled by the incoming connection, properties of which are set by the
* networking stack and/or listener filters.
*
* The following order applies:
*
* 1. Destination port.
* 2. Destination IP address.
* 3. Server name (e.g. SNI for TLS protocol),
* 4. Transport protocol.
* 5. Application protocols (e.g. ALPN for TLS protocol).
* 6. Source type (e.g. any, local or external network).
* 7. Source IP address.
* 8. Source port.
*
* For criteria that allow ranges or wildcards, the most specific value in any
* of the configured filter chains that matches the incoming connection is going
* to be used (e.g. for SNI ``www.example.com`` the most specific match would be
* ``www.example.com``, then ``*.example.com``, then ``*.com``, then any filter
* chain without ``server_names`` requirements).
*
* [#comment: Implemented rules are kept in the preference order, with deprecated fields
* listed at the end, because that's how we want to list them in the docs.
*
* [#comment:TODO(PiotrSikora): Add support for configurable precedence of the rules]
* [#next-free-field: 13]
*/
export interface FilterChainMatch__Output {
/**
* If non-empty, an IP address and prefix length to match addresses when the
* listener is bound to 0.0.0.0/:: or when use_original_dst is specified.
*/
'prefix_ranges': (_envoy_api_v2_core_CidrRange__Output)[];
/**
* If non-empty, an IP address and suffix length to match addresses when the
* listener is bound to 0.0.0.0/:: or when use_original_dst is specified.
* [#not-implemented-hide:]
*/
'address_suffix': (string);
/**
* [#not-implemented-hide:]
*/
'suffix_len'?: (_google_protobuf_UInt32Value__Output);
/**
* The criteria is satisfied if the source IP address of the downstream
* connection is contained in at least one of the specified subnets. If the
* parameter is not specified or the list is empty, the source IP address is
* ignored.
*/
'source_prefix_ranges': (_envoy_api_v2_core_CidrRange__Output)[];
/**
* The criteria is satisfied if the source port of the downstream connection
* is contained in at least one of the specified ports. If the parameter is
* not specified, the source port is ignored.
*/
'source_ports': (number)[];
/**
* Optional destination port to consider when use_original_dst is set on the
* listener in determining a filter chain match.
*/
'destination_port'?: (_google_protobuf_UInt32Value__Output);
/**
* If non-empty, a transport protocol to consider when determining a filter chain match.
* This value will be compared against the transport protocol of a new connection, when
* it's detected by one of the listener filters.
*
* Suggested values include:
*
* * ``raw_buffer`` - default, used when no transport protocol is detected,
* * ``tls`` - set by :ref:`envoy.filters.listener.tls_inspector <config_listener_filters_tls_inspector>`
* when TLS protocol is detected.
*/
'transport_protocol': (string);
/**
* If non-empty, a list of application protocols (e.g. ALPN for TLS protocol) to consider when
* determining a filter chain match. Those values will be compared against the application
* protocols of a new connection, when detected by one of the listener filters.
*
* Suggested values include:
*
* * ``http/1.1`` - set by :ref:`envoy.filters.listener.tls_inspector
* <config_listener_filters_tls_inspector>`,
* * ``h2`` - set by :ref:`envoy.filters.listener.tls_inspector <config_listener_filters_tls_inspector>`
*
* .. attention::
*
* Currently, only :ref:`TLS Inspector <config_listener_filters_tls_inspector>` provides
* application protocol detection based on the requested
* `ALPN <https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation>`_ values.
*
* However, the use of ALPN is pretty much limited to the HTTP/2 traffic on the Internet,
* and matching on values other than ``h2`` is going to lead to a lot of false negatives,
* unless all connecting clients are known to use ALPN.
*/
'application_protocols': (string)[];
/**
* If non-empty, a list of server names (e.g. SNI for TLS protocol) to consider when determining
* a filter chain match. Those values will be compared against the server names of a new
* connection, when detected by one of the listener filters.
*
* The server name will be matched against all wildcard domains, i.e. ``www.example.com``
* will be first matched against ``www.example.com``, then ``*.example.com``, then ``*.com``.
*
* Note that partial wildcards are not supported, and values like ``*w.example.com`` are invalid.
*
* .. attention::
*
* See the :ref:`FAQ entry <faq_how_to_setup_sni>` on how to configure SNI for more
* information.
*/
'server_names': (string)[];
/**
* Specifies the connection source IP match type. Can be any, local or external network.
*/
'source_type': (keyof typeof _envoy_api_v2_listener_FilterChainMatch_ConnectionSourceType);
}

View File

@ -0,0 +1,47 @@
// Original file: deps/envoy-api/envoy/api/v2/listener/listener_components.proto
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
import { ListenerFilterChainMatchPredicate as _envoy_api_v2_listener_ListenerFilterChainMatchPredicate, ListenerFilterChainMatchPredicate__Output as _envoy_api_v2_listener_ListenerFilterChainMatchPredicate__Output } from '../../../../envoy/api/v2/listener/ListenerFilterChainMatchPredicate';
export interface ListenerFilter {
/**
* The name of the filter to instantiate. The name must match a
* :ref:`supported filter <config_listener_filters>`.
*/
'name'?: (string);
'config'?: (_google_protobuf_Struct);
'typed_config'?: (_google_protobuf_Any);
/**
* Optional match predicate used to disable the filter. The filter is enabled when this field is empty.
* See :ref:`ListenerFilterChainMatchPredicate <envoy_api_msg_listener.ListenerFilterChainMatchPredicate>`
* for further examples.
*/
'filter_disabled'?: (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate);
/**
* Filter specific configuration which depends on the filter being instantiated.
* See the supported filters for further documentation.
*/
'config_type'?: "config"|"typed_config";
}
export interface ListenerFilter__Output {
/**
* The name of the filter to instantiate. The name must match a
* :ref:`supported filter <config_listener_filters>`.
*/
'name': (string);
'config'?: (_google_protobuf_Struct__Output);
'typed_config'?: (_google_protobuf_Any__Output);
/**
* Optional match predicate used to disable the filter. The filter is enabled when this field is empty.
* See :ref:`ListenerFilterChainMatchPredicate <envoy_api_msg_listener.ListenerFilterChainMatchPredicate>`
* for further examples.
*/
'filter_disabled'?: (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate__Output);
/**
* Filter specific configuration which depends on the filter being instantiated.
* See the supported filters for further documentation.
*/
'config_type': "config"|"typed_config";
}

View File

@ -0,0 +1,136 @@
// Original file: deps/envoy-api/envoy/api/v2/listener/listener_components.proto
import { ListenerFilterChainMatchPredicate as _envoy_api_v2_listener_ListenerFilterChainMatchPredicate, ListenerFilterChainMatchPredicate__Output as _envoy_api_v2_listener_ListenerFilterChainMatchPredicate__Output } from '../../../../envoy/api/v2/listener/ListenerFilterChainMatchPredicate';
import { Int32Range as _envoy_type_Int32Range, Int32Range__Output as _envoy_type_Int32Range__Output } from '../../../../envoy/type/Int32Range';
/**
* A set of match configurations used for logical operations.
*/
export interface _envoy_api_v2_listener_ListenerFilterChainMatchPredicate_MatchSet {
/**
* The list of rules that make up the set.
*/
'rules'?: (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate)[];
}
/**
* A set of match configurations used for logical operations.
*/
export interface _envoy_api_v2_listener_ListenerFilterChainMatchPredicate_MatchSet__Output {
/**
* The list of rules that make up the set.
*/
'rules': (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate__Output)[];
}
/**
* Listener filter chain match configuration. This is a recursive structure which allows complex
* nested match configurations to be built using various logical operators.
*
* Examples:
*
* * Matches if the destination port is 3306.
*
* .. code-block:: yaml
*
* destination_port_range:
* start: 3306
* end: 3307
*
* * Matches if the destination port is 3306 or 15000.
*
* .. code-block:: yaml
*
* or_match:
* rules:
* - destination_port_range:
* start: 3306
* end: 3306
* - destination_port_range:
* start: 15000
* end: 15001
*
* [#next-free-field: 6]
*/
export interface ListenerFilterChainMatchPredicate {
/**
* A set that describes a logical OR. If any member of the set matches, the match configuration
* matches.
*/
'or_match'?: (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate_MatchSet);
/**
* A set that describes a logical AND. If all members of the set match, the match configuration
* matches.
*/
'and_match'?: (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate_MatchSet);
/**
* A negation match. The match configuration will match if the negated match condition matches.
*/
'not_match'?: (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate);
/**
* The match configuration will always match.
*/
'any_match'?: (boolean);
/**
* Match destination port. Particularly, the match evaluation must use the recovered local port if
* the owning listener filter is after :ref:`an original_dst listener filter <config_listener_filters_original_dst>`.
*/
'destination_port_range'?: (_envoy_type_Int32Range);
'rule'?: "or_match"|"and_match"|"not_match"|"any_match"|"destination_port_range";
}
/**
* Listener filter chain match configuration. This is a recursive structure which allows complex
* nested match configurations to be built using various logical operators.
*
* Examples:
*
* * Matches if the destination port is 3306.
*
* .. code-block:: yaml
*
* destination_port_range:
* start: 3306
* end: 3307
*
* * Matches if the destination port is 3306 or 15000.
*
* .. code-block:: yaml
*
* or_match:
* rules:
* - destination_port_range:
* start: 3306
* end: 3306
* - destination_port_range:
* start: 15000
* end: 15001
*
* [#next-free-field: 6]
*/
export interface ListenerFilterChainMatchPredicate__Output {
/**
* A set that describes a logical OR. If any member of the set matches, the match configuration
* matches.
*/
'or_match'?: (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate_MatchSet__Output);
/**
* A set that describes a logical AND. If all members of the set match, the match configuration
* matches.
*/
'and_match'?: (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate_MatchSet__Output);
/**
* A negation match. The match configuration will match if the negated match condition matches.
*/
'not_match'?: (_envoy_api_v2_listener_ListenerFilterChainMatchPredicate__Output);
/**
* The match configuration will always match.
*/
'any_match'?: (boolean);
/**
* Match destination port. Particularly, the match evaluation must use the recovered local port if
* the owning listener filter is after :ref:`an original_dst listener filter <config_listener_filters_original_dst>`.
*/
'destination_port_range'?: (_envoy_type_Int32Range__Output);
'rule': "or_match"|"and_match"|"not_match"|"any_match"|"destination_port_range";
}

View File

@ -0,0 +1,36 @@
// Original file: deps/envoy-api/envoy/api/v2/listener/udp_listener_config.proto
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
export interface UdpListenerConfig {
/**
* Used to look up UDP listener factory, matches "raw_udp_listener" or
* "quic_listener" to create a specific udp listener.
* If not specified, treat as "raw_udp_listener".
*/
'udp_listener_name'?: (string);
'config'?: (_google_protobuf_Struct);
'typed_config'?: (_google_protobuf_Any);
/**
* Used to create a specific listener factory. To some factory, e.g.
* "raw_udp_listener", config is not needed.
*/
'config_type'?: "config"|"typed_config";
}
export interface UdpListenerConfig__Output {
/**
* Used to look up UDP listener factory, matches "raw_udp_listener" or
* "quic_listener" to create a specific udp listener.
* If not specified, treat as "raw_udp_listener".
*/
'udp_listener_name': (string);
'config'?: (_google_protobuf_Struct__Output);
'typed_config'?: (_google_protobuf_Any__Output);
/**
* Used to create a specific listener factory. To some factory, e.g.
* "raw_udp_listener", config is not needed.
*/
'config_type': "config"|"typed_config";
}

View File

@ -0,0 +1,169 @@
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
import { RuntimeFractionalPercent as _envoy_api_v2_core_RuntimeFractionalPercent, RuntimeFractionalPercent__Output as _envoy_api_v2_core_RuntimeFractionalPercent__Output } from '../../../../envoy/api/v2/core/RuntimeFractionalPercent';
import { StringMatcher as _envoy_type_matcher_StringMatcher, StringMatcher__Output as _envoy_type_matcher_StringMatcher__Output } from '../../../../envoy/type/matcher/StringMatcher';
/**
* [#next-free-field: 12]
*/
export interface CorsPolicy {
/**
* Specifies the origins that will be allowed to do CORS requests.
*
* An origin is allowed if either allow_origin or allow_origin_regex match.
*
* .. attention::
* This field has been deprecated in favor of `allow_origin_string_match`.
*/
'allow_origin'?: (string)[];
/**
* Specifies the content for the *access-control-allow-methods* header.
*/
'allow_methods'?: (string);
/**
* Specifies the content for the *access-control-allow-headers* header.
*/
'allow_headers'?: (string);
/**
* Specifies the content for the *access-control-expose-headers* header.
*/
'expose_headers'?: (string);
/**
* Specifies the content for the *access-control-max-age* header.
*/
'max_age'?: (string);
/**
* Specifies whether the resource allows credentials.
*/
'allow_credentials'?: (_google_protobuf_BoolValue);
/**
* Specifies if the CORS filter is enabled. Defaults to true. Only effective on route.
*
* .. attention::
*
* **This field is deprecated**. Set the
* :ref:`filter_enabled<envoy_api_field_route.CorsPolicy.filter_enabled>` field instead.
*/
'enabled'?: (_google_protobuf_BoolValue);
/**
* Specifies regex patterns that match allowed origins.
*
* An origin is allowed if either allow_origin or allow_origin_regex match.
*
* .. attention::
* This field has been deprecated in favor of `allow_origin_string_match` as it is not safe for
* use with untrusted input in all cases.
*/
'allow_origin_regex'?: (string)[];
/**
* Specifies the % of requests for which the CORS filter is enabled.
*
* If neither ``enabled``, ``filter_enabled``, nor ``shadow_enabled`` are specified, the CORS
* filter will be enabled for 100% of the requests.
*
* If :ref:`runtime_key <envoy_api_field_core.RuntimeFractionalPercent.runtime_key>` is
* specified, Envoy will lookup the runtime key to get the percentage of requests to filter.
*/
'filter_enabled'?: (_envoy_api_v2_core_RuntimeFractionalPercent);
/**
* Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not
* enforced.
*
* This field is intended to be used when ``filter_enabled`` and ``enabled`` are off. One of those
* fields have to explicitly disable the filter in order for this setting to take effect.
*
* If :ref:`runtime_key <envoy_api_field_core.RuntimeFractionalPercent.runtime_key>` is specified,
* Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate
* and track the request's *Origin* to determine if it's valid but will not enforce any policies.
*/
'shadow_enabled'?: (_envoy_api_v2_core_RuntimeFractionalPercent);
/**
* Specifies string patterns that match allowed origins. An origin is allowed if any of the
* string matchers match.
*/
'allow_origin_string_match'?: (_envoy_type_matcher_StringMatcher)[];
'enabled_specifier'?: "enabled"|"filter_enabled";
}
/**
* [#next-free-field: 12]
*/
export interface CorsPolicy__Output {
/**
* Specifies the origins that will be allowed to do CORS requests.
*
* An origin is allowed if either allow_origin or allow_origin_regex match.
*
* .. attention::
* This field has been deprecated in favor of `allow_origin_string_match`.
*/
'allow_origin': (string)[];
/**
* Specifies the content for the *access-control-allow-methods* header.
*/
'allow_methods': (string);
/**
* Specifies the content for the *access-control-allow-headers* header.
*/
'allow_headers': (string);
/**
* Specifies the content for the *access-control-expose-headers* header.
*/
'expose_headers': (string);
/**
* Specifies the content for the *access-control-max-age* header.
*/
'max_age': (string);
/**
* Specifies whether the resource allows credentials.
*/
'allow_credentials'?: (_google_protobuf_BoolValue__Output);
/**
* Specifies if the CORS filter is enabled. Defaults to true. Only effective on route.
*
* .. attention::
*
* **This field is deprecated**. Set the
* :ref:`filter_enabled<envoy_api_field_route.CorsPolicy.filter_enabled>` field instead.
*/
'enabled'?: (_google_protobuf_BoolValue__Output);
/**
* Specifies regex patterns that match allowed origins.
*
* An origin is allowed if either allow_origin or allow_origin_regex match.
*
* .. attention::
* This field has been deprecated in favor of `allow_origin_string_match` as it is not safe for
* use with untrusted input in all cases.
*/
'allow_origin_regex': (string)[];
/**
* Specifies the % of requests for which the CORS filter is enabled.
*
* If neither ``enabled``, ``filter_enabled``, nor ``shadow_enabled`` are specified, the CORS
* filter will be enabled for 100% of the requests.
*
* If :ref:`runtime_key <envoy_api_field_core.RuntimeFractionalPercent.runtime_key>` is
* specified, Envoy will lookup the runtime key to get the percentage of requests to filter.
*/
'filter_enabled'?: (_envoy_api_v2_core_RuntimeFractionalPercent__Output);
/**
* Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not
* enforced.
*
* This field is intended to be used when ``filter_enabled`` and ``enabled`` are off. One of those
* fields have to explicitly disable the filter in order for this setting to take effect.
*
* If :ref:`runtime_key <envoy_api_field_core.RuntimeFractionalPercent.runtime_key>` is specified,
* Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate
* and track the request's *Origin* to determine if it's valid but will not enforce any policies.
*/
'shadow_enabled'?: (_envoy_api_v2_core_RuntimeFractionalPercent__Output);
/**
* Specifies string patterns that match allowed origins. An origin is allowed if any of the
* string matchers match.
*/
'allow_origin_string_match': (_envoy_type_matcher_StringMatcher__Output)[];
'enabled_specifier': "enabled"|"filter_enabled";
}

View File

@ -0,0 +1,39 @@
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
export interface Decorator {
/**
* The operation name associated with the request matched to this route. If tracing is
* enabled, this information will be used as the span name reported for this request.
*
* .. note::
*
* For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden
* by the :ref:`x-envoy-decorator-operation
* <config_http_filters_router_x-envoy-decorator-operation>` header.
*/
'operation'?: (string);
/**
* Whether the decorated details should be propagated to the other party. The default is true.
*/
'propagate'?: (_google_protobuf_BoolValue);
}
export interface Decorator__Output {
/**
* The operation name associated with the request matched to this route. If tracing is
* enabled, this information will be used as the span name reported for this request.
*
* .. note::
*
* For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden
* by the :ref:`x-envoy-decorator-operation
* <config_http_filters_router_x-envoy-decorator-operation>` header.
*/
'operation': (string);
/**
* Whether the decorated details should be propagated to the other party. The default is true.
*/
'propagate'?: (_google_protobuf_BoolValue__Output);
}

View File

@ -0,0 +1,39 @@
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
import { DataSource as _envoy_api_v2_core_DataSource, DataSource__Output as _envoy_api_v2_core_DataSource__Output } from '../../../../envoy/api/v2/core/DataSource';
export interface DirectResponseAction {
/**
* Specifies the HTTP response status to be returned.
*/
'status'?: (number);
/**
* Specifies the content of the response body. If this setting is omitted,
* no body is included in the generated response.
*
* .. note::
*
* Headers can be specified using *response_headers_to_add* in the enclosing
* :ref:`envoy_api_msg_route.Route`, :ref:`envoy_api_msg_RouteConfiguration` or
* :ref:`envoy_api_msg_route.VirtualHost`.
*/
'body'?: (_envoy_api_v2_core_DataSource);
}
export interface DirectResponseAction__Output {
/**
* Specifies the HTTP response status to be returned.
*/
'status': (number);
/**
* Specifies the content of the response body. If this setting is omitted,
* no body is included in the generated response.
*
* .. note::
*
* Headers can be specified using *response_headers_to_add* in the enclosing
* :ref:`envoy_api_msg_route.Route`, :ref:`envoy_api_msg_RouteConfiguration` or
* :ref:`envoy_api_msg_route.VirtualHost`.
*/
'body'?: (_envoy_api_v2_core_DataSource__Output);
}

View File

@ -0,0 +1,17 @@
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
/**
* A filter-defined action type.
*/
export interface FilterAction {
'action'?: (_google_protobuf_Any);
}
/**
* A filter-defined action type.
*/
export interface FilterAction__Output {
'action'?: (_google_protobuf_Any__Output);
}

View File

@ -0,0 +1,227 @@
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
import { Int64Range as _envoy_type_Int64Range, Int64Range__Output as _envoy_type_Int64Range__Output } from '../../../../envoy/type/Int64Range';
import { RegexMatcher as _envoy_type_matcher_RegexMatcher, RegexMatcher__Output as _envoy_type_matcher_RegexMatcher__Output } from '../../../../envoy/type/matcher/RegexMatcher';
import { Long } from '@grpc/proto-loader';
/**
* .. 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.
*
* .. attention::
*
* To route on HTTP method, use the special HTTP/2 *:method* header. This works for both
* HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g.,
*
* .. code-block:: json
*
* {
* "name": ":method",
* "exact_match": "POST"
* }
*
* .. attention::
* In the absence of any header match specifier, match will default to :ref:`present_match
* <envoy_api_field_route.HeaderMatcher.present_match>`. i.e, a request that has the :ref:`name
* <envoy_api_field_route.HeaderMatcher.name>` header will match, regardless of the header's
* value.
*
* [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.]
* [#next-free-field: 12]
*/
export interface HeaderMatcher {
/**
* Specifies the name of the header in the request.
*/
'name'?: (string);
/**
* If specified, header match will be performed based on the value of the header.
*/
'exact_match'?: (string);
/**
* If specified, this regex string is a regular expression rule which implies the entire request
* header value must match the regex. The rule will not match if only a subsequence of the
* request header value matches the regex. The regex grammar used in the value field is defined
* `here <https://en.cppreference.com/w/cpp/regex/ecmascript>`_.
*
* Examples:
*
* * The regex ``\d{3}`` matches the value *123*
* * The regex ``\d{3}`` does not match the value *1234*
* * The regex ``\d{3}`` does not match the value *123.456*
*
* .. attention::
* This field has been deprecated in favor of `safe_regex_match` as it is not safe for use
* with untrusted input in all cases.
*/
'regex_match'?: (string);
/**
* If specified, header match will be performed based on range.
* The rule will match if the request header value is within this range.
* The entire request header value must represent an integer in base 10 notation: consisting of
* an optional plus or minus sign followed by a sequence of digits. The rule will not match if
* the header value does not represent an integer. Match will fail for empty values, floating
* point numbers or if only a subsequence of the header value is an integer.
*
* Examples:
*
* * For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9,
* "-1somestring"
*/
'range_match'?: (_envoy_type_Int64Range);
/**
* If specified, header match will be performed based on whether the header is in the
* request.
*/
'present_match'?: (boolean);
/**
* If specified, the match result will be inverted before checking. Defaults to false.
*
* Examples:
*
* * The regex ``\d{3}`` does not match the value *1234*, so it will match when inverted.
* * The range [-10,0) will match the value -1, so it will not match when inverted.
*/
'invert_match'?: (boolean);
/**
* If specified, header match will be performed based on the prefix of the header value.
* Note: empty prefix is not allowed, please use present_match instead.
*
* Examples:
*
* * The prefix *abcd* matches the value *abcdxyz*, but not for *abcxyz*.
*/
'prefix_match'?: (string);
/**
* If specified, header match will be performed based on the suffix of the header value.
* Note: empty suffix is not allowed, please use present_match instead.
*
* Examples:
*
* * The suffix *abcd* matches the value *xyzabcd*, but not for *xyzbcd*.
*/
'suffix_match'?: (string);
/**
* If specified, this regex string is a regular expression rule which implies the entire request
* header value must match the regex. The rule will not match if only a subsequence of the
* request header value matches the regex.
*/
'safe_regex_match'?: (_envoy_type_matcher_RegexMatcher);
/**
* Specifies how the header match will be performed to route the request.
*/
'header_match_specifier'?: "exact_match"|"regex_match"|"safe_regex_match"|"range_match"|"present_match"|"prefix_match"|"suffix_match";
}
/**
* .. 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.
*
* .. attention::
*
* To route on HTTP method, use the special HTTP/2 *:method* header. This works for both
* HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g.,
*
* .. code-block:: json
*
* {
* "name": ":method",
* "exact_match": "POST"
* }
*
* .. attention::
* In the absence of any header match specifier, match will default to :ref:`present_match
* <envoy_api_field_route.HeaderMatcher.present_match>`. i.e, a request that has the :ref:`name
* <envoy_api_field_route.HeaderMatcher.name>` header will match, regardless of the header's
* value.
*
* [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.]
* [#next-free-field: 12]
*/
export interface HeaderMatcher__Output {
/**
* Specifies the name of the header in the request.
*/
'name': (string);
/**
* If specified, header match will be performed based on the value of the header.
*/
'exact_match'?: (string);
/**
* If specified, this regex string is a regular expression rule which implies the entire request
* header value must match the regex. The rule will not match if only a subsequence of the
* request header value matches the regex. The regex grammar used in the value field is defined
* `here <https://en.cppreference.com/w/cpp/regex/ecmascript>`_.
*
* Examples:
*
* * The regex ``\d{3}`` matches the value *123*
* * The regex ``\d{3}`` does not match the value *1234*
* * The regex ``\d{3}`` does not match the value *123.456*
*
* .. attention::
* This field has been deprecated in favor of `safe_regex_match` as it is not safe for use
* with untrusted input in all cases.
*/
'regex_match'?: (string);
/**
* If specified, header match will be performed based on range.
* The rule will match if the request header value is within this range.
* The entire request header value must represent an integer in base 10 notation: consisting of
* an optional plus or minus sign followed by a sequence of digits. The rule will not match if
* the header value does not represent an integer. Match will fail for empty values, floating
* point numbers or if only a subsequence of the header value is an integer.
*
* Examples:
*
* * For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9,
* "-1somestring"
*/
'range_match'?: (_envoy_type_Int64Range__Output);
/**
* If specified, header match will be performed based on whether the header is in the
* request.
*/
'present_match'?: (boolean);
/**
* If specified, the match result will be inverted before checking. Defaults to false.
*
* Examples:
*
* * The regex ``\d{3}`` does not match the value *1234*, so it will match when inverted.
* * The range [-10,0) will match the value -1, so it will not match when inverted.
*/
'invert_match': (boolean);
/**
* If specified, header match will be performed based on the prefix of the header value.
* Note: empty prefix is not allowed, please use present_match instead.
*
* Examples:
*
* * The prefix *abcd* matches the value *abcdxyz*, but not for *abcxyz*.
*/
'prefix_match'?: (string);
/**
* If specified, header match will be performed based on the suffix of the header value.
* Note: empty suffix is not allowed, please use present_match instead.
*
* Examples:
*
* * The suffix *abcd* matches the value *xyzabcd*, but not for *xyzbcd*.
*/
'suffix_match'?: (string);
/**
* If specified, this regex string is a regular expression rule which implies the entire request
* header value must match the regex. The rule will not match if only a subsequence of the
* request header value matches the regex.
*/
'safe_regex_match'?: (_envoy_type_matcher_RegexMatcher__Output);
/**
* Specifies how the header match will be performed to route the request.
*/
'header_match_specifier': "exact_match"|"regex_match"|"safe_regex_match"|"range_match"|"present_match"|"prefix_match"|"suffix_match";
}

View File

@ -0,0 +1,66 @@
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
import { FractionalPercent as _envoy_type_FractionalPercent, FractionalPercent__Output as _envoy_type_FractionalPercent__Output } from '../../../../envoy/type/FractionalPercent';
/**
* HTTP request hedging :ref:`architecture overview <arch_overview_http_routing_hedging>`.
*/
export interface HedgePolicy {
/**
* Specifies the number of initial requests that should be sent upstream.
* Must be at least 1.
* Defaults to 1.
* [#not-implemented-hide:]
*/
'initial_requests'?: (_google_protobuf_UInt32Value);
/**
* Specifies a probability that an additional upstream request should be sent
* on top of what is specified by initial_requests.
* Defaults to 0.
* [#not-implemented-hide:]
*/
'additional_request_chance'?: (_envoy_type_FractionalPercent);
/**
* Indicates that a hedged request should be sent when the per-try timeout
* is hit. This will only occur if the retry policy also indicates that a
* timed out request should be retried.
* Once a timed out request is retried due to per try timeout, the router
* filter will ensure that it is not retried again even if the returned
* response headers would otherwise be retried according the specified
* :ref:`RetryPolicy <envoy_api_msg_route.RetryPolicy>`.
* Defaults to false.
*/
'hedge_on_per_try_timeout'?: (boolean);
}
/**
* HTTP request hedging :ref:`architecture overview <arch_overview_http_routing_hedging>`.
*/
export interface HedgePolicy__Output {
/**
* Specifies the number of initial requests that should be sent upstream.
* Must be at least 1.
* Defaults to 1.
* [#not-implemented-hide:]
*/
'initial_requests'?: (_google_protobuf_UInt32Value__Output);
/**
* Specifies a probability that an additional upstream request should be sent
* on top of what is specified by initial_requests.
* Defaults to 0.
* [#not-implemented-hide:]
*/
'additional_request_chance'?: (_envoy_type_FractionalPercent__Output);
/**
* Indicates that a hedged request should be sent when the per-try timeout
* is hit. This will only occur if the retry policy also indicates that a
* timed out request should be retried.
* Once a timed out request is retried due to per try timeout, the router
* filter will ensure that it is not retried again even if the returned
* response headers would otherwise be retried according the specified
* :ref:`RetryPolicy <envoy_api_msg_route.RetryPolicy>`.
* Defaults to false.
*/
'hedge_on_per_try_timeout': (boolean);
}

View File

@ -0,0 +1,86 @@
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
import { StringMatcher as _envoy_type_matcher_StringMatcher, StringMatcher__Output as _envoy_type_matcher_StringMatcher__Output } from '../../../../envoy/type/matcher/StringMatcher';
/**
* Query parameter matching treats the query string of a request's :path header
* as an ampersand-separated list of keys and/or key=value elements.
* [#next-free-field: 7]
*/
export interface QueryParameterMatcher {
/**
* Specifies the name of a key that must be present in the requested
* *path*'s query string.
*/
'name'?: (string);
/**
* Specifies the value of the key. If the value is absent, a request
* that contains the key in its query string will match, whether the
* key appears with a value (e.g., "?debug=true") or not (e.g., "?debug")
*
* ..attention::
* This field is deprecated. Use an `exact` match inside the `string_match` field.
*/
'value'?: (string);
/**
* Specifies whether the query parameter value is a regular expression.
* Defaults to false. The entire query parameter value (i.e., the part to
* the right of the equals sign in "key=value") must match the regex.
* E.g., the regex ``\d+$`` will match *123* but not *a123* or *123a*.
*
* ..attention::
* This field is deprecated. Use a `safe_regex` match inside the `string_match` field.
*/
'regex'?: (_google_protobuf_BoolValue);
/**
* Specifies whether a query parameter value should match against a string.
*/
'string_match'?: (_envoy_type_matcher_StringMatcher);
/**
* Specifies whether a query parameter should be present.
*/
'present_match'?: (boolean);
'query_parameter_match_specifier'?: "string_match"|"present_match";
}
/**
* Query parameter matching treats the query string of a request's :path header
* as an ampersand-separated list of keys and/or key=value elements.
* [#next-free-field: 7]
*/
export interface QueryParameterMatcher__Output {
/**
* Specifies the name of a key that must be present in the requested
* *path*'s query string.
*/
'name': (string);
/**
* Specifies the value of the key. If the value is absent, a request
* that contains the key in its query string will match, whether the
* key appears with a value (e.g., "?debug=true") or not (e.g., "?debug")
*
* ..attention::
* This field is deprecated. Use an `exact` match inside the `string_match` field.
*/
'value': (string);
/**
* Specifies whether the query parameter value is a regular expression.
* Defaults to false. The entire query parameter value (i.e., the part to
* the right of the equals sign in "key=value") must match the regex.
* E.g., the regex ``\d+$`` will match *123* but not *a123* or *123a*.
*
* ..attention::
* This field is deprecated. Use a `safe_regex` match inside the `string_match` field.
*/
'regex'?: (_google_protobuf_BoolValue__Output);
/**
* Specifies whether a query parameter value should match against a string.
*/
'string_match'?: (_envoy_type_matcher_StringMatcher__Output);
/**
* Specifies whether a query parameter should be present.
*/
'present_match'?: (boolean);
'query_parameter_match_specifier': "string_match"|"present_match";
}

View File

@ -0,0 +1,341 @@
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
import { HeaderMatcher as _envoy_api_v2_route_HeaderMatcher, HeaderMatcher__Output as _envoy_api_v2_route_HeaderMatcher__Output } from '../../../../envoy/api/v2/route/HeaderMatcher';
/**
* [#next-free-field: 7]
*/
export interface _envoy_api_v2_route_RateLimit_Action {
/**
* Rate limit on source cluster.
*/
'source_cluster'?: (_envoy_api_v2_route_RateLimit_Action_SourceCluster);
/**
* Rate limit on destination cluster.
*/
'destination_cluster'?: (_envoy_api_v2_route_RateLimit_Action_DestinationCluster);
/**
* Rate limit on request headers.
*/
'request_headers'?: (_envoy_api_v2_route_RateLimit_Action_RequestHeaders);
/**
* Rate limit on remote address.
*/
'remote_address'?: (_envoy_api_v2_route_RateLimit_Action_RemoteAddress);
/**
* Rate limit on a generic key.
*/
'generic_key'?: (_envoy_api_v2_route_RateLimit_Action_GenericKey);
/**
* Rate limit on the existence of request headers.
*/
'header_value_match'?: (_envoy_api_v2_route_RateLimit_Action_HeaderValueMatch);
'action_specifier'?: "source_cluster"|"destination_cluster"|"request_headers"|"remote_address"|"generic_key"|"header_value_match";
}
/**
* [#next-free-field: 7]
*/
export interface _envoy_api_v2_route_RateLimit_Action__Output {
/**
* Rate limit on source cluster.
*/
'source_cluster'?: (_envoy_api_v2_route_RateLimit_Action_SourceCluster__Output);
/**
* Rate limit on destination cluster.
*/
'destination_cluster'?: (_envoy_api_v2_route_RateLimit_Action_DestinationCluster__Output);
/**
* Rate limit on request headers.
*/
'request_headers'?: (_envoy_api_v2_route_RateLimit_Action_RequestHeaders__Output);
/**
* Rate limit on remote address.
*/
'remote_address'?: (_envoy_api_v2_route_RateLimit_Action_RemoteAddress__Output);
/**
* Rate limit on a generic key.
*/
'generic_key'?: (_envoy_api_v2_route_RateLimit_Action_GenericKey__Output);
/**
* Rate limit on the existence of request headers.
*/
'header_value_match'?: (_envoy_api_v2_route_RateLimit_Action_HeaderValueMatch__Output);
'action_specifier': "source_cluster"|"destination_cluster"|"request_headers"|"remote_address"|"generic_key"|"header_value_match";
}
/**
* The following descriptor entry is appended to the descriptor:
*
* .. code-block:: cpp
*
* ("destination_cluster", "<routed target cluster>")
*
* Once a request matches against a route table rule, a routed cluster is determined by one of
* the following :ref:`route table configuration <envoy_api_msg_RouteConfiguration>`
* settings:
*
* * :ref:`cluster <envoy_api_field_route.RouteAction.cluster>` indicates the upstream cluster
* to route to.
* * :ref:`weighted_clusters <envoy_api_field_route.RouteAction.weighted_clusters>`
* chooses a cluster randomly from a set of clusters with attributed weight.
* * :ref:`cluster_header <envoy_api_field_route.RouteAction.cluster_header>` indicates which
* header in the request contains the target cluster.
*/
export interface _envoy_api_v2_route_RateLimit_Action_DestinationCluster {
}
/**
* The following descriptor entry is appended to the descriptor:
*
* .. code-block:: cpp
*
* ("destination_cluster", "<routed target cluster>")
*
* Once a request matches against a route table rule, a routed cluster is determined by one of
* the following :ref:`route table configuration <envoy_api_msg_RouteConfiguration>`
* settings:
*
* * :ref:`cluster <envoy_api_field_route.RouteAction.cluster>` indicates the upstream cluster
* to route to.
* * :ref:`weighted_clusters <envoy_api_field_route.RouteAction.weighted_clusters>`
* chooses a cluster randomly from a set of clusters with attributed weight.
* * :ref:`cluster_header <envoy_api_field_route.RouteAction.cluster_header>` indicates which
* header in the request contains the target cluster.
*/
export interface _envoy_api_v2_route_RateLimit_Action_DestinationCluster__Output {
}
/**
* The following descriptor entry is appended to the descriptor:
*
* .. code-block:: cpp
*
* ("generic_key", "<descriptor_value>")
*/
export interface _envoy_api_v2_route_RateLimit_Action_GenericKey {
/**
* The value to use in the descriptor entry.
*/
'descriptor_value'?: (string);
}
/**
* The following descriptor entry is appended to the descriptor:
*
* .. code-block:: cpp
*
* ("generic_key", "<descriptor_value>")
*/
export interface _envoy_api_v2_route_RateLimit_Action_GenericKey__Output {
/**
* The value to use in the descriptor entry.
*/
'descriptor_value': (string);
}
/**
* The following descriptor entry is appended to the descriptor:
*
* .. code-block:: cpp
*
* ("header_match", "<descriptor_value>")
*/
export interface _envoy_api_v2_route_RateLimit_Action_HeaderValueMatch {
/**
* The value to use in the descriptor entry.
*/
'descriptor_value'?: (string);
/**
* If set to true, the action will append a descriptor entry when the
* request matches the headers. If set to false, the action will append a
* descriptor entry when the request does not match the headers. The
* default value is true.
*/
'expect_match'?: (_google_protobuf_BoolValue);
/**
* Specifies a set of headers that the rate limit action should match
* on. The action will check the requests headers against all the
* specified headers in the config. A match will happen if all the
* headers in the config are present in the request with the same values
* (or based on presence if the value field is not in the config).
*/
'headers'?: (_envoy_api_v2_route_HeaderMatcher)[];
}
/**
* The following descriptor entry is appended to the descriptor:
*
* .. code-block:: cpp
*
* ("header_match", "<descriptor_value>")
*/
export interface _envoy_api_v2_route_RateLimit_Action_HeaderValueMatch__Output {
/**
* The value to use in the descriptor entry.
*/
'descriptor_value': (string);
/**
* If set to true, the action will append a descriptor entry when the
* request matches the headers. If set to false, the action will append a
* descriptor entry when the request does not match the headers. The
* default value is true.
*/
'expect_match'?: (_google_protobuf_BoolValue__Output);
/**
* Specifies a set of headers that the rate limit action should match
* on. The action will check the requests headers against all the
* specified headers in the config. A match will happen if all the
* headers in the config are present in the request with the same values
* (or based on presence if the value field is not in the config).
*/
'headers': (_envoy_api_v2_route_HeaderMatcher__Output)[];
}
/**
* The following descriptor entry is appended to the descriptor and is populated using the
* trusted address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`:
*
* .. code-block:: cpp
*
* ("remote_address", "<trusted address from x-forwarded-for>")
*/
export interface _envoy_api_v2_route_RateLimit_Action_RemoteAddress {
}
/**
* The following descriptor entry is appended to the descriptor and is populated using the
* trusted address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`:
*
* .. code-block:: cpp
*
* ("remote_address", "<trusted address from x-forwarded-for>")
*/
export interface _envoy_api_v2_route_RateLimit_Action_RemoteAddress__Output {
}
/**
* The following descriptor entry is appended when a header contains a key that matches the
* *header_name*:
*
* .. code-block:: cpp
*
* ("<descriptor_key>", "<header_value_queried_from_header>")
*/
export interface _envoy_api_v2_route_RateLimit_Action_RequestHeaders {
/**
* The header name to be queried from the request headers. The headers
* value is used to populate the value of the descriptor entry for the
* descriptor_key.
*/
'header_name'?: (string);
/**
* The key to use in the descriptor entry.
*/
'descriptor_key'?: (string);
}
/**
* The following descriptor entry is appended when a header contains a key that matches the
* *header_name*:
*
* .. code-block:: cpp
*
* ("<descriptor_key>", "<header_value_queried_from_header>")
*/
export interface _envoy_api_v2_route_RateLimit_Action_RequestHeaders__Output {
/**
* The header name to be queried from the request headers. The headers
* value is used to populate the value of the descriptor entry for the
* descriptor_key.
*/
'header_name': (string);
/**
* The key to use in the descriptor entry.
*/
'descriptor_key': (string);
}
/**
* The following descriptor entry is appended to the descriptor:
*
* .. code-block:: cpp
*
* ("source_cluster", "<local service cluster>")
*
* <local service cluster> is derived from the :option:`--service-cluster` option.
*/
export interface _envoy_api_v2_route_RateLimit_Action_SourceCluster {
}
/**
* The following descriptor entry is appended to the descriptor:
*
* .. code-block:: cpp
*
* ("source_cluster", "<local service cluster>")
*
* <local service cluster> is derived from the :option:`--service-cluster` option.
*/
export interface _envoy_api_v2_route_RateLimit_Action_SourceCluster__Output {
}
/**
* Global rate limiting :ref:`architecture overview <arch_overview_global_rate_limit>`.
*/
export interface RateLimit {
/**
* Refers to the stage set in the filter. The rate limit configuration only
* applies to filters with the same stage number. The default stage number is
* 0.
*
* .. note::
*
* The filter supports a range of 0 - 10 inclusively for stage numbers.
*/
'stage'?: (_google_protobuf_UInt32Value);
/**
* The key to be set in runtime to disable this rate limit configuration.
*/
'disable_key'?: (string);
/**
* A list of actions that are to be applied for this rate limit configuration.
* Order matters as the actions are processed sequentially and the descriptor
* is composed by appending descriptor entries in that sequence. If an action
* cannot append a descriptor entry, no descriptor is generated for the
* configuration. See :ref:`composing actions
* <config_http_filters_rate_limit_composing_actions>` for additional documentation.
*/
'actions'?: (_envoy_api_v2_route_RateLimit_Action)[];
}
/**
* Global rate limiting :ref:`architecture overview <arch_overview_global_rate_limit>`.
*/
export interface RateLimit__Output {
/**
* Refers to the stage set in the filter. The rate limit configuration only
* applies to filters with the same stage number. The default stage number is
* 0.
*
* .. note::
*
* The filter supports a range of 0 - 10 inclusively for stage numbers.
*/
'stage'?: (_google_protobuf_UInt32Value__Output);
/**
* The key to be set in runtime to disable this rate limit configuration.
*/
'disable_key': (string);
/**
* A list of actions that are to be applied for this rate limit configuration.
* Order matters as the actions are processed sequentially and the descriptor
* is composed by appending descriptor entries in that sequence. If an action
* cannot append a descriptor entry, no descriptor is generated for the
* configuration. See :ref:`composing actions
* <config_http_filters_rate_limit_composing_actions>` for additional documentation.
*/
'actions': (_envoy_api_v2_route_RateLimit_Action__Output)[];
}

Some files were not shown because too many files have changed in this diff Show More