rate_limit_quotav3

package
v1.33.0-20240426201503... Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: unknown License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var File_envoy_extensions_filters_http_rate_limit_quota_v3_rate_limit_quota_proto protoreflect.FileDescriptor

Functions

This section is empty.

Types

type RateLimitQuotaBucketSettings

type RateLimitQuotaBucketSettings struct {

	// “BucketId“ builder.
	//
	// :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` is a map from
	// the string key to the string value which serves as bucket identifier common for on
	// the control plane and the data plane.
	//
	// While “BucketId“ is always static, “BucketIdBuilder“ allows to populate map values
	// with the dynamic properties associated with the each individual request.
	//
	// Example 1: static fields only
	//
	// “BucketIdBuilder“:
	//
	// .. validated-code-block:: yaml
	//
	//	:type-name: envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.BucketIdBuilder
	//
	//	bucket_id_builder:
	//	  name:
	//	    string_value: my_bucket
	//	  hello:
	//	    string_value: world
	//
	// Produces the following “BucketId“ for all requests:
	//
	// .. validated-code-block:: yaml
	//
	//	:type-name: envoy.service.rate_limit_quota.v3.BucketId
	//
	//	bucket:
	//	  name: my_bucket
	//	  hello: world
	//
	// Example 2: static and dynamic fields
	//
	// .. validated-code-block:: yaml
	//
	//	:type-name: envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.BucketIdBuilder
	//
	//	bucket_id_builder:
	//	  name:
	//	    string_value: my_bucket
	//	  env:
	//	    custom_value:
	//	      typed_config:
	//	        '@type': type.googleapis.com/envoy.type.matcher.v3.HttpRequestHeaderMatchInput
	//	        header_name: environment
	//
	// In this example, the value of “BucketId“ key “env“ is substituted from the “environment“
	// request header.
	//
	// This is equivalent to the following “pseudo-code“:
	//
	// .. code-block:: yaml
	//
	//	name: 'my_bucket'
	//	env: $header['environment']
	//
	// For example, the request with the HTTP header “env“ set to “staging“ will produce
	// the following “BucketId“:
	//
	// .. validated-code-block:: yaml
	//
	//	:type-name: envoy.service.rate_limit_quota.v3.BucketId
	//
	//	bucket:
	//	  name: my_bucket
	//	  env: staging
	//
	// For the request with the HTTP header “environment“ set to “prod“, will produce:
	//
	// .. validated-code-block:: yaml
	//
	//	:type-name: envoy.service.rate_limit_quota.v3.BucketId
	//
	//	bucket:
	//	  name: my_bucket
	//	  env: prod
	//
	// .. note::
	//
	//	The order of “BucketId“ keys do not matter. Buckets “{ a: 'A', b: 'B' }“ and
	//	“{ b: 'B', a: 'A' }“ are identical.
	//
	// If not set, requests will NOT be reported to the server, and will always limited
	// according to :ref:`no_assignment_behavior
	// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.no_assignment_behavior>`
	// configuration.
	BucketIdBuilder *RateLimitQuotaBucketSettings_BucketIdBuilder `protobuf:"bytes,1,opt,name=bucket_id_builder,json=bucketIdBuilder,proto3" json:"bucket_id_builder,omitempty"`
	// The interval at which the data plane (RLQS client) is to report quota usage for this bucket.
	//
	// When the first request is matched to a bucket with no assignment, the data plane is to report
	// the request immediately in the :ref:`RateLimitQuotaUsageReports
	// <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaUsageReports>` message.
	// For the RLQS server, this signals that the data plane is now subscribed to
	// the quota assignments in this bucket, and will start sending the assignment as described in
	// the :ref:`RLQS documentation <envoy_v3_api_file_envoy/service/rate_limit_quota/v3/rlqs.proto>`.
	//
	// After sending the initial report, the data plane is to continue reporting the bucket usage with
	// the internal specified in this field.
	//
	// If for any reason RLQS client doesn't receive the initial assignment for the reported bucket,
	// the data plane will eventually consider the bucket abandoned and stop sending the usage
	// reports. This is explained in more details at :ref:`Rate Limit Quota Service (RLQS)
	// <envoy_v3_api_file_envoy/service/rate_limit_quota/v3/rlqs.proto>`.
	//
	// [#comment: 100000000 nanoseconds = 0.1 seconds]
	ReportingInterval *durationpb.Duration `protobuf:"bytes,2,opt,name=reporting_interval,json=reportingInterval,proto3" json:"reporting_interval,omitempty"`
	// Customize the deny response to the requests over the rate limit.
	// If not set, the filter will be configured as if an empty message is set,
	// and will behave according to the defaults specified in :ref:`DenyResponseSettings
	// <envoy_v3_api_msg_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.DenyResponseSettings>`.
	DenyResponseSettings *RateLimitQuotaBucketSettings_DenyResponseSettings `protobuf:"bytes,3,opt,name=deny_response_settings,json=denyResponseSettings,proto3" json:"deny_response_settings,omitempty"`
	// Configures the behavior in the "no assignment" state: after the first request has been
	// matched to the bucket, and before the the RLQS server returns the first quota assignment.
	//
	// If not set, the default behavior is to allow all requests.
	NoAssignmentBehavior *RateLimitQuotaBucketSettings_NoAssignmentBehavior `protobuf:"bytes,4,opt,name=no_assignment_behavior,json=noAssignmentBehavior,proto3" json:"no_assignment_behavior,omitempty"`
	// Configures the behavior in the "expired assignment" state: the bucket's assignment has expired,
	// and cannot be refreshed.
	//
	// If not set, the bucket is abandoned when its “active“ assignment expires.
	// The process of abandoning the bucket, and restarting the subscription is described in the
	// :ref:`AbandonAction <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
	// message.
	ExpiredAssignmentBehavior *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior `` /* 138-byte string literal not displayed */
	// contains filtered or unexported fields
}

Rate Limit Quota Bucket Settings to apply on the successful “bucket_matchers“ match.

Specify this message in the :ref:`Matcher.OnMatch.action <envoy_v3_api_field_.xds.type.matcher.v3.Matcher.OnMatch.action>` field of the “bucket_matchers“ matcher tree to assign the matched requests to the Quota Bucket. Usage example: :ref:`RateLimitQuotaFilterConfig.bucket_matchers <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaFilterConfig.bucket_matchers>`. [#next-free-field: 6]

func (*RateLimitQuotaBucketSettings) Descriptor deprecated

func (*RateLimitQuotaBucketSettings) Descriptor() ([]byte, []int)

Deprecated: Use RateLimitQuotaBucketSettings.ProtoReflect.Descriptor instead.

func (*RateLimitQuotaBucketSettings) GetBucketIdBuilder

func (*RateLimitQuotaBucketSettings) GetDenyResponseSettings

func (*RateLimitQuotaBucketSettings) GetExpiredAssignmentBehavior

func (*RateLimitQuotaBucketSettings) GetNoAssignmentBehavior

func (*RateLimitQuotaBucketSettings) GetReportingInterval

func (x *RateLimitQuotaBucketSettings) GetReportingInterval() *durationpb.Duration

func (*RateLimitQuotaBucketSettings) ProtoMessage

func (*RateLimitQuotaBucketSettings) ProtoMessage()

func (*RateLimitQuotaBucketSettings) ProtoReflect

func (*RateLimitQuotaBucketSettings) Reset

func (x *RateLimitQuotaBucketSettings) Reset()

func (*RateLimitQuotaBucketSettings) String

type RateLimitQuotaBucketSettings_BucketIdBuilder

type RateLimitQuotaBucketSettings_BucketIdBuilder struct {

	// The map translated into the “BucketId“ map.
	//
	// The “string key“ of this map and becomes the key of “BucketId“ map as is.
	//
	// The “ValueBuilder value“ for the key can be:
	//
	//   - static “StringValue string_value“ — becomes the value in the “BucketId“ map as is.
	//   - dynamic “TypedExtensionConfig custom_value“ — evaluated for each request. Must produce
	//     a string output, which becomes the value in the the “BucketId“ map.
	//
	// See usage examples in the docs to :ref:`bucket_id_builder
	// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.bucket_id_builder>`
	// field.
	BucketIdBuilder map[string]*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder `` /* 196-byte string literal not displayed */
	// contains filtered or unexported fields
}

“BucketIdBuilder“ makes it possible to build :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` with values substituted from the dynamic properties associated with each individual request. See usage examples in the docs to :ref:`bucket_id_builder <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.bucket_id_builder>` field.

func (*RateLimitQuotaBucketSettings_BucketIdBuilder) Descriptor deprecated

Deprecated: Use RateLimitQuotaBucketSettings_BucketIdBuilder.ProtoReflect.Descriptor instead.

func (*RateLimitQuotaBucketSettings_BucketIdBuilder) GetBucketIdBuilder

func (*RateLimitQuotaBucketSettings_BucketIdBuilder) ProtoMessage

func (*RateLimitQuotaBucketSettings_BucketIdBuilder) ProtoReflect

func (*RateLimitQuotaBucketSettings_BucketIdBuilder) Reset

func (*RateLimitQuotaBucketSettings_BucketIdBuilder) String

type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder

type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder struct {

	// Types that are assignable to ValueSpecifier:
	//
	//	*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_StringValue
	//	*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_CustomValue
	ValueSpecifier isRateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier `protobuf_oneof:"value_specifier"`
	// contains filtered or unexported fields
}

Produces the value of the :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` map.

func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) Descriptor deprecated

Deprecated: Use RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder.ProtoReflect.Descriptor instead.

func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetCustomValue

func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetStringValue

func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetValueSpecifier

func (m *RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) GetValueSpecifier() isRateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_ValueSpecifier

func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ProtoMessage

func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) ProtoReflect

func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) Reset

func (*RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder) String

type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_CustomValue

type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_CustomValue struct {
	// Dynamic value — evaluated for each request. Must produce a string output, which becomes
	// the value in the :ref:`BucketId <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>`
	// map. For example, extensions with the “envoy.matching.http.input“ category can be used.
	CustomValue *v3.TypedExtensionConfig `protobuf:"bytes,2,opt,name=custom_value,json=customValue,proto3,oneof"`
}

type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_StringValue

type RateLimitQuotaBucketSettings_BucketIdBuilder_ValueBuilder_StringValue struct {
	// Static string value — becomes the value in the :ref:`BucketId
	// <envoy_v3_api_msg_service.rate_limit_quota.v3.BucketId>` map as is.
	StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,proto3,oneof"`
}

type RateLimitQuotaBucketSettings_DenyResponseSettings

type RateLimitQuotaBucketSettings_DenyResponseSettings struct {

	// HTTP response code to deny for HTTP requests (gRPC excluded).
	// Defaults to 429 (:ref:`StatusCode.TooManyRequests<envoy_v3_api_enum_value_type.v3.StatusCode.TooManyRequests>`).
	HttpStatus *v32.HttpStatus `protobuf:"bytes,1,opt,name=http_status,json=httpStatus,proto3" json:"http_status,omitempty"`
	// HTTP response body used to deny for HTTP requests (gRPC excluded).
	// If not set, an empty body is returned.
	HttpBody *wrapperspb.BytesValue `protobuf:"bytes,2,opt,name=http_body,json=httpBody,proto3" json:"http_body,omitempty"`
	// Configure the deny response for gRPC requests over the rate limit.
	// Allows to specify the `RPC status code
	// <https://cloud.google.com/natural-language/docs/reference/rpc/google.rpc#google.rpc.Code>`_,
	// and the error message.
	// Defaults to the Status with the RPC Code “UNAVAILABLE“ and empty message.
	//
	// To identify gRPC requests, Envoy checks that the “Content-Type“ header is
	// “application/grpc“, or one of the various “application/grpc+“ values.
	//
	// .. note::
	//
	//	The HTTP code for a gRPC response is always 200.
	GrpcStatus *status.Status `protobuf:"bytes,3,opt,name=grpc_status,json=grpcStatus,proto3" json:"grpc_status,omitempty"`
	// Specifies a list of HTTP headers that should be added to each response for requests that
	// have been rate limited. Applies both to plain HTTP, and gRPC requests.
	// The headers are added even when the rate limit quota was not enforced.
	ResponseHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,4,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"`
	// contains filtered or unexported fields
}

Customize the deny response to the requests over the rate limit.

func (*RateLimitQuotaBucketSettings_DenyResponseSettings) Descriptor deprecated

Deprecated: Use RateLimitQuotaBucketSettings_DenyResponseSettings.ProtoReflect.Descriptor instead.

func (*RateLimitQuotaBucketSettings_DenyResponseSettings) GetGrpcStatus

func (*RateLimitQuotaBucketSettings_DenyResponseSettings) GetHttpBody

func (*RateLimitQuotaBucketSettings_DenyResponseSettings) GetHttpStatus

func (*RateLimitQuotaBucketSettings_DenyResponseSettings) GetResponseHeadersToAdd

func (*RateLimitQuotaBucketSettings_DenyResponseSettings) ProtoMessage

func (*RateLimitQuotaBucketSettings_DenyResponseSettings) ProtoReflect

func (*RateLimitQuotaBucketSettings_DenyResponseSettings) Reset

func (*RateLimitQuotaBucketSettings_DenyResponseSettings) String

type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior

type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior struct {

	// Limit the time :ref:`ExpiredAssignmentBehavior
	// <envoy_v3_api_msg_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior>`
	// is applied. If the server doesn't respond within this duration:
	//
	//  1. Selected “ExpiredAssignmentBehavior“ is no longer applied.
	//  2. The bucket is abandoned. The process of abandoning the bucket is described in the
	//     :ref:`AbandonAction <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
	//     message.
	//  3. If a new request is matched into the bucket that has become abandoned,
	//     the data plane restarts the subscription to the bucket. The process of restarting the
	//     subscription is described in the :ref:`AbandonAction
	//     <envoy_v3_api_msg_service.rate_limit_quota.v3.RateLimitQuotaResponse.BucketAction.AbandonAction>`
	//     message.
	//
	// If not set, defaults to zero, and the bucket is abandoned immediately.
	ExpiredAssignmentBehaviorTimeout *durationpb.Duration `` /* 161-byte string literal not displayed */
	// Types that are assignable to ExpiredAssignmentBehavior:
	//
	//	*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_FallbackRateLimit
	//	*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_
	ExpiredAssignmentBehavior isRateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ExpiredAssignmentBehavior `protobuf_oneof:"expired_assignment_behavior"`
	// contains filtered or unexported fields
}

Specifies the behavior when the bucket's assignment has expired, and cannot be refreshed for any reason.

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) Descriptor deprecated

Deprecated: Use RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior.ProtoReflect.Descriptor instead.

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehavior

func (m *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehavior() isRateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ExpiredAssignmentBehavior

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehaviorTimeout

func (x *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetExpiredAssignmentBehaviorTimeout() *durationpb.Duration

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetFallbackRateLimit

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) GetReuseLastAssignment

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ProtoMessage

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) ProtoReflect

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) Reset

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior) String

type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_FallbackRateLimit

type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_FallbackRateLimit struct {
	// Apply the rate limiting strategy to all requests matched into the bucket until the RLQS
	// server sends a new assignment, or the :ref:`expired_assignment_behavior_timeout
	// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>`
	// runs out.
	FallbackRateLimit *v32.RateLimitStrategy `protobuf:"bytes,2,opt,name=fallback_rate_limit,json=fallbackRateLimit,proto3,oneof"`
}

type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment

type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment struct {
	// contains filtered or unexported fields
}

Reuse the last known quota assignment, effectively extending it for the duration specified in the :ref:`expired_assignment_behavior_timeout <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>` field.

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) Descriptor deprecated

Deprecated: Use RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment.ProtoReflect.Descriptor instead.

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) ProtoMessage

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) ProtoReflect

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) Reset

func (*RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment) String

type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_

type RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment_ struct {
	// Reuse the last “active“ assignment until the RLQS server sends a new assignment, or the
	// :ref:`expired_assignment_behavior_timeout
	// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings.ExpiredAssignmentBehavior.expired_assignment_behavior_timeout>`
	// runs out.
	ReuseLastAssignment *RateLimitQuotaBucketSettings_ExpiredAssignmentBehavior_ReuseLastAssignment `protobuf:"bytes,3,opt,name=reuse_last_assignment,json=reuseLastAssignment,proto3,oneof"`
}

type RateLimitQuotaBucketSettings_NoAssignmentBehavior

type RateLimitQuotaBucketSettings_NoAssignmentBehavior struct {

	// Types that are assignable to NoAssignmentBehavior:
	//
	//	*RateLimitQuotaBucketSettings_NoAssignmentBehavior_FallbackRateLimit
	NoAssignmentBehavior isRateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior `protobuf_oneof:"no_assignment_behavior"`
	// contains filtered or unexported fields
}

Configures the behavior after the first request has been matched to the bucket, and before the the RLQS server returns the first quota assignment.

func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) Descriptor deprecated

Deprecated: Use RateLimitQuotaBucketSettings_NoAssignmentBehavior.ProtoReflect.Descriptor instead.

func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) GetFallbackRateLimit

func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) GetNoAssignmentBehavior

func (m *RateLimitQuotaBucketSettings_NoAssignmentBehavior) GetNoAssignmentBehavior() isRateLimitQuotaBucketSettings_NoAssignmentBehavior_NoAssignmentBehavior

func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) ProtoMessage

func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) ProtoReflect

func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) Reset

func (*RateLimitQuotaBucketSettings_NoAssignmentBehavior) String

type RateLimitQuotaBucketSettings_NoAssignmentBehavior_FallbackRateLimit

type RateLimitQuotaBucketSettings_NoAssignmentBehavior_FallbackRateLimit struct {
	// Apply pre-configured rate limiting strategy until the server sends the first assignment.
	FallbackRateLimit *v32.RateLimitStrategy `protobuf:"bytes,1,opt,name=fallback_rate_limit,json=fallbackRateLimit,proto3,oneof"`
}

type RateLimitQuotaFilterConfig

type RateLimitQuotaFilterConfig struct {

	// Configures the gRPC Rate Limit Quota Service (RLQS) RateLimitQuotaService.
	RlqsServer *v3.GrpcService `protobuf:"bytes,1,opt,name=rlqs_server,json=rlqsServer,proto3" json:"rlqs_server,omitempty"`
	// The application domain to use when calling the service. This enables sharing the quota
	// server between different applications without fear of overlap.
	// E.g., "envoy".
	Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`
	// The match tree to use for grouping incoming requests into buckets.
	//
	// Example:
	//
	// .. validated-code-block:: yaml
	//
	//	:type-name: xds.type.matcher.v3.Matcher
	//
	//	matcher_list:
	//	  matchers:
	//	  # Assign requests with header['env'] set to 'staging' to the bucket { name: 'staging' }
	//	  - predicate:
	//	      single_predicate:
	//	        input:
	//	          typed_config:
	//	            '@type': type.googleapis.com/envoy.type.matcher.v3.HttpRequestHeaderMatchInput
	//	            header_name: env
	//	        value_match:
	//	          exact: staging
	//	    on_match:
	//	      action:
	//	        typed_config:
	//	          '@type': type.googleapis.com/envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings
	//	          bucket_id_builder:
	//	            bucket_id_builder:
	//	              name:
	//	                string_value: staging
	//
	//	  # Assign requests with header['user_group'] set to 'admin' to the bucket { acl: 'admin_users' }
	//	  - predicate:
	//	      single_predicate:
	//	        input:
	//	          typed_config:
	//	            '@type': type.googleapis.com/xds.type.matcher.v3.HttpAttributesCelMatchInput
	//	        custom_match:
	//	          typed_config:
	//	            '@type': type.googleapis.com/xds.type.matcher.v3.CelMatcher
	//	            expr_match:
	//	              # Shortened for illustration purposes. Here should be parsed CEL expression:
	//	              # request.headers['user_group'] == 'admin'
	//	              parsed_expr: {}
	//	    on_match:
	//	      action:
	//	        typed_config:
	//	          '@type': type.googleapis.com/envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings
	//	          bucket_id_builder:
	//	            bucket_id_builder:
	//	              acl:
	//	                string_value: admin_users
	//
	//	# Catch-all clause for the requests not matched by any of the matchers.
	//	# In this example, deny all requests.
	//	on_no_match:
	//	  action:
	//	    typed_config:
	//	      '@type': type.googleapis.com/envoy.extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaBucketSettings
	//	      no_assignment_behavior:
	//	        fallback_rate_limit:
	//	          blanket_rule: DENY_ALL
	//
	// .. attention::
	//
	//	The first matched group wins. Once the request is matched into a bucket, matcher
	//	evaluation ends.
	//
	// Use “on_no_match“ field to assign the catch-all bucket. If a request is not matched
	// into any bucket, and there's no  “on_no_match“ field configured, the request will be
	// ALLOWED by default. It will NOT be reported to the RLQS server.
	//
	// Refer to :ref:`Unified Matcher API <envoy_v3_api_msg_.xds.type.matcher.v3.Matcher>`
	// documentation for more information on the matcher trees.
	BucketMatchers *v31.Matcher `protobuf:"bytes,3,opt,name=bucket_matchers,json=bucketMatchers,proto3" json:"bucket_matchers,omitempty"`
	// If set, this will enable -- but not necessarily enforce -- the rate limit for the given
	// fraction of requests.
	//
	// Defaults to 100% of requests.
	FilterEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,4,opt,name=filter_enabled,json=filterEnabled,proto3" json:"filter_enabled,omitempty"`
	// If set, this will enforce the rate limit decisions for the given fraction of requests.
	// For requests that are not enforced the filter will still obtain the quota and include it
	// in the load computation, however the request will always be allowed regardless of the outcome
	// of quota application. This allows validation or testing of the rate limiting service
	// infrastructure without disrupting existing traffic.
	//
	// Note: this only applies to the fraction of enabled requests.
	//
	// Defaults to 100% of requests.
	FilterEnforced *v3.RuntimeFractionalPercent `protobuf:"bytes,5,opt,name=filter_enforced,json=filterEnforced,proto3" json:"filter_enforced,omitempty"`
	// Specifies a list of HTTP headers that should be added to each request that
	// has been rate limited and is also forwarded upstream. This can only occur when the
	// filter is enabled but not enforced.
	RequestHeadersToAddWhenNotEnforced []*v3.HeaderValueOption `` /* 173-byte string literal not displayed */
	// contains filtered or unexported fields
}

Configures the Rate Limit Quota filter.

Can be overridden in the per-route and per-host configurations. The more specific definition completely overrides the less specific definition. [#next-free-field: 7]

func (*RateLimitQuotaFilterConfig) Descriptor deprecated

func (*RateLimitQuotaFilterConfig) Descriptor() ([]byte, []int)

Deprecated: Use RateLimitQuotaFilterConfig.ProtoReflect.Descriptor instead.

func (*RateLimitQuotaFilterConfig) GetBucketMatchers

func (x *RateLimitQuotaFilterConfig) GetBucketMatchers() *v31.Matcher

func (*RateLimitQuotaFilterConfig) GetDomain

func (x *RateLimitQuotaFilterConfig) GetDomain() string

func (*RateLimitQuotaFilterConfig) GetFilterEnabled

func (*RateLimitQuotaFilterConfig) GetFilterEnforced

func (x *RateLimitQuotaFilterConfig) GetFilterEnforced() *v3.RuntimeFractionalPercent

func (*RateLimitQuotaFilterConfig) GetRequestHeadersToAddWhenNotEnforced

func (x *RateLimitQuotaFilterConfig) GetRequestHeadersToAddWhenNotEnforced() []*v3.HeaderValueOption

func (*RateLimitQuotaFilterConfig) GetRlqsServer

func (x *RateLimitQuotaFilterConfig) GetRlqsServer() *v3.GrpcService

func (*RateLimitQuotaFilterConfig) ProtoMessage

func (*RateLimitQuotaFilterConfig) ProtoMessage()

func (*RateLimitQuotaFilterConfig) ProtoReflect

func (*RateLimitQuotaFilterConfig) Reset

func (x *RateLimitQuotaFilterConfig) Reset()

func (*RateLimitQuotaFilterConfig) String

func (x *RateLimitQuotaFilterConfig) String() string

type RateLimitQuotaOverride

type RateLimitQuotaOverride struct {

	// The application domain to use when calling the service. This enables sharing the quota
	// server between different applications without fear of overlap.
	// E.g., "envoy".
	//
	// If empty, inherits the value from the less specific definition.
	Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"`
	// The match tree to use for grouping incoming requests into buckets.
	//
	// If set, fully overrides the bucket matchers provided on the less specific definition.
	// If not set, inherits the value from the less specific definition.
	//
	// See usage example: :ref:`RateLimitQuotaFilterConfig.bucket_matchers
	// <envoy_v3_api_field_extensions.filters.http.rate_limit_quota.v3.RateLimitQuotaFilterConfig.bucket_matchers>`.
	BucketMatchers *v31.Matcher `protobuf:"bytes,2,opt,name=bucket_matchers,json=bucketMatchers,proto3" json:"bucket_matchers,omitempty"`
	// contains filtered or unexported fields
}

Per-route and per-host configuration overrides. The more specific definition completely overrides the less specific definition.

func (*RateLimitQuotaOverride) Descriptor deprecated

func (*RateLimitQuotaOverride) Descriptor() ([]byte, []int)

Deprecated: Use RateLimitQuotaOverride.ProtoReflect.Descriptor instead.

func (*RateLimitQuotaOverride) GetBucketMatchers

func (x *RateLimitQuotaOverride) GetBucketMatchers() *v31.Matcher

func (*RateLimitQuotaOverride) GetDomain

func (x *RateLimitQuotaOverride) GetDomain() string

func (*RateLimitQuotaOverride) ProtoMessage

func (*RateLimitQuotaOverride) ProtoMessage()

func (*RateLimitQuotaOverride) ProtoReflect

func (x *RateLimitQuotaOverride) ProtoReflect() protoreflect.Message

func (*RateLimitQuotaOverride) Reset

func (x *RateLimitQuotaOverride) Reset()

func (*RateLimitQuotaOverride) String

func (x *RateLimitQuotaOverride) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL