Documentation
¶
Index ¶
- Constants
- Variables
- type ExtProcHttpService
- func (x *ExtProcHttpService) ClearHttpService()
- func (x *ExtProcHttpService) GetHttpService() *v3.HttpService
- func (x *ExtProcHttpService) HasHttpService() bool
- func (*ExtProcHttpService) ProtoMessage()
- func (x *ExtProcHttpService) ProtoReflect() protoreflect.Message
- func (x *ExtProcHttpService) Reset()
- func (x *ExtProcHttpService) SetHttpService(v *v3.HttpService)
- func (x *ExtProcHttpService) String() string
- type ExtProcHttpService_builder
- type ExtProcOverrides
- func (x *ExtProcOverrides) ClearFailureModeAllow()
- func (x *ExtProcOverrides) ClearGrpcService()
- func (x *ExtProcOverrides) ClearMetadataOptions()
- func (x *ExtProcOverrides) ClearProcessingMode()
- func (x *ExtProcOverrides) ClearProcessingRequestModifier()
- func (x *ExtProcOverrides) GetAsyncMode() booldeprecated
- func (x *ExtProcOverrides) GetFailureModeAllow() *wrapperspb.BoolValue
- func (x *ExtProcOverrides) GetGrpcInitialMetadata() []*v3.HeaderValue
- func (x *ExtProcOverrides) GetGrpcService() *v3.GrpcService
- func (x *ExtProcOverrides) GetMetadataOptions() *MetadataOptions
- func (x *ExtProcOverrides) GetProcessingMode() *ProcessingMode
- func (x *ExtProcOverrides) GetProcessingRequestModifier() *v3.TypedExtensionConfig
- func (x *ExtProcOverrides) GetRequestAttributes() []string
- func (x *ExtProcOverrides) GetResponseAttributes() []string
- func (x *ExtProcOverrides) HasFailureModeAllow() bool
- func (x *ExtProcOverrides) HasGrpcService() bool
- func (x *ExtProcOverrides) HasMetadataOptions() bool
- func (x *ExtProcOverrides) HasProcessingMode() bool
- func (x *ExtProcOverrides) HasProcessingRequestModifier() bool
- func (*ExtProcOverrides) ProtoMessage()
- func (x *ExtProcOverrides) ProtoReflect() protoreflect.Message
- func (x *ExtProcOverrides) Reset()
- func (x *ExtProcOverrides) SetAsyncMode(v bool)deprecated
- func (x *ExtProcOverrides) SetFailureModeAllow(v *wrapperspb.BoolValue)
- func (x *ExtProcOverrides) SetGrpcInitialMetadata(v []*v3.HeaderValue)
- func (x *ExtProcOverrides) SetGrpcService(v *v3.GrpcService)
- func (x *ExtProcOverrides) SetMetadataOptions(v *MetadataOptions)
- func (x *ExtProcOverrides) SetProcessingMode(v *ProcessingMode)
- func (x *ExtProcOverrides) SetProcessingRequestModifier(v *v3.TypedExtensionConfig)
- func (x *ExtProcOverrides) SetRequestAttributes(v []string)
- func (x *ExtProcOverrides) SetResponseAttributes(v []string)
- func (x *ExtProcOverrides) String() string
- type ExtProcOverrides_builder
- type ExtProcPerRoute
- func (x *ExtProcPerRoute) ClearDisabled()
- func (x *ExtProcPerRoute) ClearOverride()
- func (x *ExtProcPerRoute) ClearOverrides()
- func (x *ExtProcPerRoute) GetDisabled() bool
- func (x *ExtProcPerRoute) GetOverride() isExtProcPerRoute_Override
- func (x *ExtProcPerRoute) GetOverrides() *ExtProcOverrides
- func (x *ExtProcPerRoute) HasDisabled() bool
- func (x *ExtProcPerRoute) HasOverride() bool
- func (x *ExtProcPerRoute) HasOverrides() bool
- func (*ExtProcPerRoute) ProtoMessage()
- func (x *ExtProcPerRoute) ProtoReflect() protoreflect.Message
- func (x *ExtProcPerRoute) Reset()
- func (x *ExtProcPerRoute) SetDisabled(v bool)
- func (x *ExtProcPerRoute) SetOverrides(v *ExtProcOverrides)
- func (x *ExtProcPerRoute) String() string
- func (x *ExtProcPerRoute) WhichOverride() case_ExtProcPerRoute_Override
- type ExtProcPerRoute_Disabled
- type ExtProcPerRoute_Overrides
- type ExtProcPerRoute_builder
- type ExternalProcessor
- func (x *ExternalProcessor) ClearDeferredCloseTimeout()
- func (x *ExternalProcessor) ClearFilterMetadata()
- func (x *ExternalProcessor) ClearForwardRules()
- func (x *ExternalProcessor) ClearGrpcService()
- func (x *ExternalProcessor) ClearHttpService()
- func (x *ExternalProcessor) ClearMaxMessageTimeout()
- func (x *ExternalProcessor) ClearMessageTimeout()
- func (x *ExternalProcessor) ClearMetadataOptions()
- func (x *ExternalProcessor) ClearMutationRules()
- func (x *ExternalProcessor) ClearOnProcessingResponse()
- func (x *ExternalProcessor) ClearProcessingMode()
- func (x *ExternalProcessor) ClearProcessingRequestModifier()
- func (x *ExternalProcessor) ClearStatusOnError()
- func (x *ExternalProcessor) GetAllowContentLengthHeader() bool
- func (x *ExternalProcessor) GetAllowModeOverride() bool
- func (x *ExternalProcessor) GetAllowedOverrideModes() []*ProcessingMode
- func (x *ExternalProcessor) GetDeferredCloseTimeout() *durationpb.Duration
- func (x *ExternalProcessor) GetDisableClearRouteCache() bool
- func (x *ExternalProcessor) GetDisableImmediateResponse() bool
- func (x *ExternalProcessor) GetFailureModeAllow() bool
- func (x *ExternalProcessor) GetFilterMetadata() *structpb.Struct
- func (x *ExternalProcessor) GetForwardRules() *HeaderForwardingRules
- func (x *ExternalProcessor) GetGrpcService() *v3.GrpcService
- func (x *ExternalProcessor) GetHttpService() *ExtProcHttpService
- func (x *ExternalProcessor) GetMaxMessageTimeout() *durationpb.Duration
- func (x *ExternalProcessor) GetMessageTimeout() *durationpb.Duration
- func (x *ExternalProcessor) GetMetadataOptions() *MetadataOptions
- func (x *ExternalProcessor) GetMutationRules() *v31.HeaderMutationRules
- func (x *ExternalProcessor) GetObservabilityMode() bool
- func (x *ExternalProcessor) GetOnProcessingResponse() *v3.TypedExtensionConfig
- func (x *ExternalProcessor) GetProcessingMode() *ProcessingMode
- func (x *ExternalProcessor) GetProcessingRequestModifier() *v3.TypedExtensionConfig
- func (x *ExternalProcessor) GetRequestAttributes() []string
- func (x *ExternalProcessor) GetResponseAttributes() []string
- func (x *ExternalProcessor) GetRouteCacheAction() ExternalProcessor_RouteCacheAction
- func (x *ExternalProcessor) GetSendBodyWithoutWaitingForHeaderResponse() bool
- func (x *ExternalProcessor) GetStatPrefix() string
- func (x *ExternalProcessor) GetStatusOnError() *v32.HttpStatus
- func (x *ExternalProcessor) HasDeferredCloseTimeout() bool
- func (x *ExternalProcessor) HasFilterMetadata() bool
- func (x *ExternalProcessor) HasForwardRules() bool
- func (x *ExternalProcessor) HasGrpcService() bool
- func (x *ExternalProcessor) HasHttpService() bool
- func (x *ExternalProcessor) HasMaxMessageTimeout() bool
- func (x *ExternalProcessor) HasMessageTimeout() bool
- func (x *ExternalProcessor) HasMetadataOptions() bool
- func (x *ExternalProcessor) HasMutationRules() bool
- func (x *ExternalProcessor) HasOnProcessingResponse() bool
- func (x *ExternalProcessor) HasProcessingMode() bool
- func (x *ExternalProcessor) HasProcessingRequestModifier() bool
- func (x *ExternalProcessor) HasStatusOnError() bool
- func (*ExternalProcessor) ProtoMessage()
- func (x *ExternalProcessor) ProtoReflect() protoreflect.Message
- func (x *ExternalProcessor) Reset()
- func (x *ExternalProcessor) SetAllowContentLengthHeader(v bool)
- func (x *ExternalProcessor) SetAllowModeOverride(v bool)
- func (x *ExternalProcessor) SetAllowedOverrideModes(v []*ProcessingMode)
- func (x *ExternalProcessor) SetDeferredCloseTimeout(v *durationpb.Duration)
- func (x *ExternalProcessor) SetDisableClearRouteCache(v bool)
- func (x *ExternalProcessor) SetDisableImmediateResponse(v bool)
- func (x *ExternalProcessor) SetFailureModeAllow(v bool)
- func (x *ExternalProcessor) SetFilterMetadata(v *structpb.Struct)
- func (x *ExternalProcessor) SetForwardRules(v *HeaderForwardingRules)
- func (x *ExternalProcessor) SetGrpcService(v *v3.GrpcService)
- func (x *ExternalProcessor) SetHttpService(v *ExtProcHttpService)
- func (x *ExternalProcessor) SetMaxMessageTimeout(v *durationpb.Duration)
- func (x *ExternalProcessor) SetMessageTimeout(v *durationpb.Duration)
- func (x *ExternalProcessor) SetMetadataOptions(v *MetadataOptions)
- func (x *ExternalProcessor) SetMutationRules(v *v31.HeaderMutationRules)
- func (x *ExternalProcessor) SetObservabilityMode(v bool)
- func (x *ExternalProcessor) SetOnProcessingResponse(v *v3.TypedExtensionConfig)
- func (x *ExternalProcessor) SetProcessingMode(v *ProcessingMode)
- func (x *ExternalProcessor) SetProcessingRequestModifier(v *v3.TypedExtensionConfig)
- func (x *ExternalProcessor) SetRequestAttributes(v []string)
- func (x *ExternalProcessor) SetResponseAttributes(v []string)
- func (x *ExternalProcessor) SetRouteCacheAction(v ExternalProcessor_RouteCacheAction)
- func (x *ExternalProcessor) SetSendBodyWithoutWaitingForHeaderResponse(v bool)
- func (x *ExternalProcessor) SetStatPrefix(v string)
- func (x *ExternalProcessor) SetStatusOnError(v *v32.HttpStatus)
- func (x *ExternalProcessor) String() string
- type ExternalProcessor_RouteCacheAction
- func (ExternalProcessor_RouteCacheAction) Descriptor() protoreflect.EnumDescriptor
- func (x ExternalProcessor_RouteCacheAction) Enum() *ExternalProcessor_RouteCacheAction
- func (x ExternalProcessor_RouteCacheAction) Number() protoreflect.EnumNumber
- func (x ExternalProcessor_RouteCacheAction) String() string
- func (ExternalProcessor_RouteCacheAction) Type() protoreflect.EnumType
- type ExternalProcessor_builder
- type HeaderForwardingRules
- func (x *HeaderForwardingRules) ClearAllowedHeaders()
- func (x *HeaderForwardingRules) ClearDisallowedHeaders()
- func (x *HeaderForwardingRules) GetAllowedHeaders() *v33.ListStringMatcher
- func (x *HeaderForwardingRules) GetDisallowedHeaders() *v33.ListStringMatcher
- func (x *HeaderForwardingRules) HasAllowedHeaders() bool
- func (x *HeaderForwardingRules) HasDisallowedHeaders() bool
- func (*HeaderForwardingRules) ProtoMessage()
- func (x *HeaderForwardingRules) ProtoReflect() protoreflect.Message
- func (x *HeaderForwardingRules) Reset()
- func (x *HeaderForwardingRules) SetAllowedHeaders(v *v33.ListStringMatcher)
- func (x *HeaderForwardingRules) SetDisallowedHeaders(v *v33.ListStringMatcher)
- func (x *HeaderForwardingRules) String() string
- type HeaderForwardingRules_builder
- type MetadataOptions
- func (x *MetadataOptions) ClearClusterMetadataForwardingNamespaces()
- func (x *MetadataOptions) ClearForwardingNamespaces()
- func (x *MetadataOptions) ClearReceivingNamespaces()
- func (x *MetadataOptions) GetClusterMetadataForwardingNamespaces() *MetadataOptions_MetadataNamespaces
- func (x *MetadataOptions) GetForwardingNamespaces() *MetadataOptions_MetadataNamespaces
- func (x *MetadataOptions) GetReceivingNamespaces() *MetadataOptions_MetadataNamespaces
- func (x *MetadataOptions) HasClusterMetadataForwardingNamespaces() bool
- func (x *MetadataOptions) HasForwardingNamespaces() bool
- func (x *MetadataOptions) HasReceivingNamespaces() bool
- func (*MetadataOptions) ProtoMessage()
- func (x *MetadataOptions) ProtoReflect() protoreflect.Message
- func (x *MetadataOptions) Reset()
- func (x *MetadataOptions) SetClusterMetadataForwardingNamespaces(v *MetadataOptions_MetadataNamespaces)
- func (x *MetadataOptions) SetForwardingNamespaces(v *MetadataOptions_MetadataNamespaces)
- func (x *MetadataOptions) SetReceivingNamespaces(v *MetadataOptions_MetadataNamespaces)
- func (x *MetadataOptions) String() string
- type MetadataOptions_MetadataNamespaces
- func (x *MetadataOptions_MetadataNamespaces) GetTyped() []string
- func (x *MetadataOptions_MetadataNamespaces) GetUntyped() []string
- func (*MetadataOptions_MetadataNamespaces) ProtoMessage()
- func (x *MetadataOptions_MetadataNamespaces) ProtoReflect() protoreflect.Message
- func (x *MetadataOptions_MetadataNamespaces) Reset()
- func (x *MetadataOptions_MetadataNamespaces) SetTyped(v []string)
- func (x *MetadataOptions_MetadataNamespaces) SetUntyped(v []string)
- func (x *MetadataOptions_MetadataNamespaces) String() string
- type MetadataOptions_MetadataNamespaces_builder
- type MetadataOptions_builder
- type ProcessingMode
- func (x *ProcessingMode) GetRequestBodyMode() ProcessingMode_BodySendMode
- func (x *ProcessingMode) GetRequestHeaderMode() ProcessingMode_HeaderSendMode
- func (x *ProcessingMode) GetRequestTrailerMode() ProcessingMode_HeaderSendMode
- func (x *ProcessingMode) GetResponseBodyMode() ProcessingMode_BodySendMode
- func (x *ProcessingMode) GetResponseHeaderMode() ProcessingMode_HeaderSendMode
- func (x *ProcessingMode) GetResponseTrailerMode() ProcessingMode_HeaderSendMode
- func (*ProcessingMode) ProtoMessage()
- func (x *ProcessingMode) ProtoReflect() protoreflect.Message
- func (x *ProcessingMode) Reset()
- func (x *ProcessingMode) SetRequestBodyMode(v ProcessingMode_BodySendMode)
- func (x *ProcessingMode) SetRequestHeaderMode(v ProcessingMode_HeaderSendMode)
- func (x *ProcessingMode) SetRequestTrailerMode(v ProcessingMode_HeaderSendMode)
- func (x *ProcessingMode) SetResponseBodyMode(v ProcessingMode_BodySendMode)
- func (x *ProcessingMode) SetResponseHeaderMode(v ProcessingMode_HeaderSendMode)
- func (x *ProcessingMode) SetResponseTrailerMode(v ProcessingMode_HeaderSendMode)
- func (x *ProcessingMode) String() string
- type ProcessingMode_BodySendMode
- func (ProcessingMode_BodySendMode) Descriptor() protoreflect.EnumDescriptor
- func (x ProcessingMode_BodySendMode) Enum() *ProcessingMode_BodySendMode
- func (x ProcessingMode_BodySendMode) Number() protoreflect.EnumNumber
- func (x ProcessingMode_BodySendMode) String() string
- func (ProcessingMode_BodySendMode) Type() protoreflect.EnumType
- type ProcessingMode_HeaderSendMode
- func (ProcessingMode_HeaderSendMode) Descriptor() protoreflect.EnumDescriptor
- func (x ProcessingMode_HeaderSendMode) Enum() *ProcessingMode_HeaderSendMode
- func (x ProcessingMode_HeaderSendMode) Number() protoreflect.EnumNumber
- func (x ProcessingMode_HeaderSendMode) String() string
- func (ProcessingMode_HeaderSendMode) Type() protoreflect.EnumType
- type ProcessingMode_builder
Constants ¶
const ExtProcPerRoute_Disabled_case case_ExtProcPerRoute_Override = 1
const ExtProcPerRoute_Override_not_set_case case_ExtProcPerRoute_Override = 0
const ExtProcPerRoute_Overrides_case case_ExtProcPerRoute_Override = 2
Variables ¶
var ( ExternalProcessor_RouteCacheAction_name = map[int32]string{ 0: "DEFAULT", 1: "CLEAR", 2: "RETAIN", } ExternalProcessor_RouteCacheAction_value = map[string]int32{ "DEFAULT": 0, "CLEAR": 1, "RETAIN": 2, } )
Enum value maps for ExternalProcessor_RouteCacheAction.
var ( ProcessingMode_HeaderSendMode_name = map[int32]string{ 0: "DEFAULT", 1: "SEND", 2: "SKIP", } ProcessingMode_HeaderSendMode_value = map[string]int32{ "DEFAULT": 0, "SEND": 1, "SKIP": 2, } )
Enum value maps for ProcessingMode_HeaderSendMode.
var ( ProcessingMode_BodySendMode_name = map[int32]string{ 0: "NONE", 1: "STREAMED", 2: "BUFFERED", 3: "BUFFERED_PARTIAL", 4: "FULL_DUPLEX_STREAMED", 5: "GRPC", } ProcessingMode_BodySendMode_value = map[string]int32{ "NONE": 0, "STREAMED": 1, "BUFFERED": 2, "BUFFERED_PARTIAL": 3, "FULL_DUPLEX_STREAMED": 4, "GRPC": 5, } )
Enum value maps for ProcessingMode_BodySendMode.
var File_envoy_extensions_filters_http_ext_proc_v3_ext_proc_proto protoreflect.FileDescriptor
var File_envoy_extensions_filters_http_ext_proc_v3_processing_mode_proto protoreflect.FileDescriptor
Functions ¶
This section is empty.
Types ¶
type ExtProcHttpService ¶
type ExtProcHttpService struct {
// Sets the HTTP service which the external processing requests must be sent to.
HttpService *v3.HttpService `protobuf:"bytes,1,opt,name=http_service,json=httpService,proto3" json:"http_service,omitempty"`
// contains filtered or unexported fields
}
ExtProcHttpService is used for HTTP communication between the filter and the external processing service.
func (*ExtProcHttpService) ClearHttpService ¶
func (x *ExtProcHttpService) ClearHttpService()
func (*ExtProcHttpService) GetHttpService ¶
func (x *ExtProcHttpService) GetHttpService() *v3.HttpService
func (*ExtProcHttpService) HasHttpService ¶
func (x *ExtProcHttpService) HasHttpService() bool
func (*ExtProcHttpService) ProtoMessage ¶
func (*ExtProcHttpService) ProtoMessage()
func (*ExtProcHttpService) ProtoReflect ¶
func (x *ExtProcHttpService) ProtoReflect() protoreflect.Message
func (*ExtProcHttpService) Reset ¶
func (x *ExtProcHttpService) Reset()
func (*ExtProcHttpService) SetHttpService ¶
func (x *ExtProcHttpService) SetHttpService(v *v3.HttpService)
func (*ExtProcHttpService) String ¶
func (x *ExtProcHttpService) String() string
type ExtProcHttpService_builder ¶
type ExtProcHttpService_builder struct {
// Sets the HTTP service which the external processing requests must be sent to.
HttpService *v3.HttpService
// contains filtered or unexported fields
}
func (ExtProcHttpService_builder) Build ¶
func (b0 ExtProcHttpService_builder) Build() *ExtProcHttpService
type ExtProcOverrides ¶
type ExtProcOverrides struct {
// Set a different processing mode for this route than the default.
ProcessingMode *ProcessingMode `protobuf:"bytes,1,opt,name=processing_mode,json=processingMode,proto3" json:"processing_mode,omitempty"`
// [#not-implemented-hide:]
// Set a different asynchronous processing option than the default.
// Deprecated and not implemented.
//
// Deprecated: Marked as deprecated in envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto.
AsyncMode bool `protobuf:"varint,2,opt,name=async_mode,json=asyncMode,proto3" json:"async_mode,omitempty"`
// [#not-implemented-hide:]
// Set different optional attributes than the default setting of the
// “request_attributes“ field.
RequestAttributes []string `protobuf:"bytes,3,rep,name=request_attributes,json=requestAttributes,proto3" json:"request_attributes,omitempty"`
// [#not-implemented-hide:]
// Set different optional properties than the default setting of the
// “response_attributes“ field.
ResponseAttributes []string `protobuf:"bytes,4,rep,name=response_attributes,json=responseAttributes,proto3" json:"response_attributes,omitempty"`
// Set a different gRPC service for this route than the default.
GrpcService *v3.GrpcService `protobuf:"bytes,5,opt,name=grpc_service,json=grpcService,proto3" json:"grpc_service,omitempty"`
// Options related to the sending and receiving of dynamic metadata.
// Lists of forwarding and receiving namespaces will be overridden in their entirety,
// meaning the most-specific config that specifies this override will be the final
// config used. It is the prerogative of the control plane to ensure this
// most-specific config contains the correct final overrides.
MetadataOptions *MetadataOptions `protobuf:"bytes,6,opt,name=metadata_options,json=metadataOptions,proto3" json:"metadata_options,omitempty"`
// Additional metadata to include into streams initiated to the “ext_proc“ gRPC
// service. This can be used for scenarios in which additional ad hoc
// authorization headers (e.g. “x-foo-bar: baz-key“) are to be injected or
// when a route needs to partially override inherited metadata.
GrpcInitialMetadata []*v3.HeaderValue `protobuf:"bytes,7,rep,name=grpc_initial_metadata,json=grpcInitialMetadata,proto3" json:"grpc_initial_metadata,omitempty"`
// If true, the filter will not fail closed if the gRPC stream is prematurely closed
// or could not be opened. This field is the per-route override of
// :ref:`failure_mode_allow <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.failure_mode_allow>`.
FailureModeAllow *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=failure_mode_allow,json=failureModeAllow,proto3" json:"failure_mode_allow,omitempty"`
// Decorator to introduce custom logic that runs after the “ProcessingRequest“ is constructed, but
// before it is sent to the External Processor. The “ProcessingRequest“ may be modified.
// This is a per-route override of
// :ref:`processing_request_modifier <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_request_modifier>`.
ProcessingRequestModifier *v3.TypedExtensionConfig `` /* 138-byte string literal not displayed */
// contains filtered or unexported fields
}
Overrides that may be set on a per-route basis [#next-free-field: 10]
func (*ExtProcOverrides) ClearFailureModeAllow ¶
func (x *ExtProcOverrides) ClearFailureModeAllow()
func (*ExtProcOverrides) ClearGrpcService ¶
func (x *ExtProcOverrides) ClearGrpcService()
func (*ExtProcOverrides) ClearMetadataOptions ¶
func (x *ExtProcOverrides) ClearMetadataOptions()
func (*ExtProcOverrides) ClearProcessingMode ¶
func (x *ExtProcOverrides) ClearProcessingMode()
func (*ExtProcOverrides) ClearProcessingRequestModifier ¶
func (x *ExtProcOverrides) ClearProcessingRequestModifier()
func (*ExtProcOverrides) GetAsyncMode
deprecated
func (x *ExtProcOverrides) GetAsyncMode() bool
Deprecated: Marked as deprecated in envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto.
func (*ExtProcOverrides) GetFailureModeAllow ¶
func (x *ExtProcOverrides) GetFailureModeAllow() *wrapperspb.BoolValue
func (*ExtProcOverrides) GetGrpcInitialMetadata ¶
func (x *ExtProcOverrides) GetGrpcInitialMetadata() []*v3.HeaderValue
func (*ExtProcOverrides) GetGrpcService ¶
func (x *ExtProcOverrides) GetGrpcService() *v3.GrpcService
func (*ExtProcOverrides) GetMetadataOptions ¶
func (x *ExtProcOverrides) GetMetadataOptions() *MetadataOptions
func (*ExtProcOverrides) GetProcessingMode ¶
func (x *ExtProcOverrides) GetProcessingMode() *ProcessingMode
func (*ExtProcOverrides) GetProcessingRequestModifier ¶
func (x *ExtProcOverrides) GetProcessingRequestModifier() *v3.TypedExtensionConfig
func (*ExtProcOverrides) GetRequestAttributes ¶
func (x *ExtProcOverrides) GetRequestAttributes() []string
func (*ExtProcOverrides) GetResponseAttributes ¶
func (x *ExtProcOverrides) GetResponseAttributes() []string
func (*ExtProcOverrides) HasFailureModeAllow ¶
func (x *ExtProcOverrides) HasFailureModeAllow() bool
func (*ExtProcOverrides) HasGrpcService ¶
func (x *ExtProcOverrides) HasGrpcService() bool
func (*ExtProcOverrides) HasMetadataOptions ¶
func (x *ExtProcOverrides) HasMetadataOptions() bool
func (*ExtProcOverrides) HasProcessingMode ¶
func (x *ExtProcOverrides) HasProcessingMode() bool
func (*ExtProcOverrides) HasProcessingRequestModifier ¶
func (x *ExtProcOverrides) HasProcessingRequestModifier() bool
func (*ExtProcOverrides) ProtoMessage ¶
func (*ExtProcOverrides) ProtoMessage()
func (*ExtProcOverrides) ProtoReflect ¶
func (x *ExtProcOverrides) ProtoReflect() protoreflect.Message
func (*ExtProcOverrides) Reset ¶
func (x *ExtProcOverrides) Reset()
func (*ExtProcOverrides) SetAsyncMode
deprecated
func (x *ExtProcOverrides) SetAsyncMode(v bool)
Deprecated: Marked as deprecated in envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto.
func (*ExtProcOverrides) SetFailureModeAllow ¶
func (x *ExtProcOverrides) SetFailureModeAllow(v *wrapperspb.BoolValue)
func (*ExtProcOverrides) SetGrpcInitialMetadata ¶
func (x *ExtProcOverrides) SetGrpcInitialMetadata(v []*v3.HeaderValue)
func (*ExtProcOverrides) SetGrpcService ¶
func (x *ExtProcOverrides) SetGrpcService(v *v3.GrpcService)
func (*ExtProcOverrides) SetMetadataOptions ¶
func (x *ExtProcOverrides) SetMetadataOptions(v *MetadataOptions)
func (*ExtProcOverrides) SetProcessingMode ¶
func (x *ExtProcOverrides) SetProcessingMode(v *ProcessingMode)
func (*ExtProcOverrides) SetProcessingRequestModifier ¶
func (x *ExtProcOverrides) SetProcessingRequestModifier(v *v3.TypedExtensionConfig)
func (*ExtProcOverrides) SetRequestAttributes ¶
func (x *ExtProcOverrides) SetRequestAttributes(v []string)
func (*ExtProcOverrides) SetResponseAttributes ¶
func (x *ExtProcOverrides) SetResponseAttributes(v []string)
func (*ExtProcOverrides) String ¶
func (x *ExtProcOverrides) String() string
type ExtProcOverrides_builder ¶
type ExtProcOverrides_builder struct {
// Set a different processing mode for this route than the default.
ProcessingMode *ProcessingMode
// [#not-implemented-hide:]
// Set a different asynchronous processing option than the default.
// Deprecated and not implemented.
//
// Deprecated: Marked as deprecated in envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto.
AsyncMode bool
// [#not-implemented-hide:]
// Set different optional attributes than the default setting of the
// “request_attributes“ field.
RequestAttributes []string
// [#not-implemented-hide:]
// Set different optional properties than the default setting of the
// “response_attributes“ field.
ResponseAttributes []string
// Set a different gRPC service for this route than the default.
GrpcService *v3.GrpcService
// Options related to the sending and receiving of dynamic metadata.
// Lists of forwarding and receiving namespaces will be overridden in their entirety,
// meaning the most-specific config that specifies this override will be the final
// config used. It is the prerogative of the control plane to ensure this
// most-specific config contains the correct final overrides.
MetadataOptions *MetadataOptions
// Additional metadata to include into streams initiated to the “ext_proc“ gRPC
// service. This can be used for scenarios in which additional ad hoc
// authorization headers (e.g. “x-foo-bar: baz-key“) are to be injected or
// when a route needs to partially override inherited metadata.
GrpcInitialMetadata []*v3.HeaderValue
// If true, the filter will not fail closed if the gRPC stream is prematurely closed
// or could not be opened. This field is the per-route override of
// :ref:`failure_mode_allow <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.failure_mode_allow>`.
FailureModeAllow *wrapperspb.BoolValue
// Decorator to introduce custom logic that runs after the “ProcessingRequest“ is constructed, but
// before it is sent to the External Processor. The “ProcessingRequest“ may be modified.
// This is a per-route override of
// :ref:`processing_request_modifier <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_request_modifier>`.
ProcessingRequestModifier *v3.TypedExtensionConfig
// contains filtered or unexported fields
}
func (ExtProcOverrides_builder) Build ¶
func (b0 ExtProcOverrides_builder) Build() *ExtProcOverrides
type ExtProcPerRoute ¶
type ExtProcPerRoute struct {
// Types that are valid to be assigned to Override:
//
// *ExtProcPerRoute_Disabled
// *ExtProcPerRoute_Overrides
Override isExtProcPerRoute_Override `protobuf_oneof:"override"`
// contains filtered or unexported fields
}
Extra settings that may be added to per-route configuration for a virtual host or cluster.
func (*ExtProcPerRoute) ClearDisabled ¶
func (x *ExtProcPerRoute) ClearDisabled()
func (*ExtProcPerRoute) ClearOverride ¶
func (x *ExtProcPerRoute) ClearOverride()
func (*ExtProcPerRoute) ClearOverrides ¶
func (x *ExtProcPerRoute) ClearOverrides()
func (*ExtProcPerRoute) GetDisabled ¶
func (x *ExtProcPerRoute) GetDisabled() bool
func (*ExtProcPerRoute) GetOverride ¶
func (x *ExtProcPerRoute) GetOverride() isExtProcPerRoute_Override
func (*ExtProcPerRoute) GetOverrides ¶
func (x *ExtProcPerRoute) GetOverrides() *ExtProcOverrides
func (*ExtProcPerRoute) HasDisabled ¶
func (x *ExtProcPerRoute) HasDisabled() bool
func (*ExtProcPerRoute) HasOverride ¶
func (x *ExtProcPerRoute) HasOverride() bool
func (*ExtProcPerRoute) HasOverrides ¶
func (x *ExtProcPerRoute) HasOverrides() bool
func (*ExtProcPerRoute) ProtoMessage ¶
func (*ExtProcPerRoute) ProtoMessage()
func (*ExtProcPerRoute) ProtoReflect ¶
func (x *ExtProcPerRoute) ProtoReflect() protoreflect.Message
func (*ExtProcPerRoute) Reset ¶
func (x *ExtProcPerRoute) Reset()
func (*ExtProcPerRoute) SetDisabled ¶
func (x *ExtProcPerRoute) SetDisabled(v bool)
func (*ExtProcPerRoute) SetOverrides ¶
func (x *ExtProcPerRoute) SetOverrides(v *ExtProcOverrides)
func (*ExtProcPerRoute) String ¶
func (x *ExtProcPerRoute) String() string
func (*ExtProcPerRoute) WhichOverride ¶
func (x *ExtProcPerRoute) WhichOverride() case_ExtProcPerRoute_Override
type ExtProcPerRoute_Disabled ¶
type ExtProcPerRoute_Disabled struct {
// Disable the filter for this particular vhost or route.
// If disabled is specified in multiple per-filter-configs, the most specific one will be used.
Disabled bool `protobuf:"varint,1,opt,name=disabled,proto3,oneof"`
}
type ExtProcPerRoute_Overrides ¶
type ExtProcPerRoute_Overrides struct {
// Override aspects of the configuration for this route. A set of
// overrides in a more specific configuration will override a "disabled"
// flag set in a less-specific one.
Overrides *ExtProcOverrides `protobuf:"bytes,2,opt,name=overrides,proto3,oneof"`
}
type ExtProcPerRoute_builder ¶
type ExtProcPerRoute_builder struct {
// Fields of oneof Override:
// Disable the filter for this particular vhost or route.
// If disabled is specified in multiple per-filter-configs, the most specific one will be used.
Disabled *bool
// Override aspects of the configuration for this route. A set of
// overrides in a more specific configuration will override a "disabled"
// flag set in a less-specific one.
Overrides *ExtProcOverrides
// contains filtered or unexported fields
}
func (ExtProcPerRoute_builder) Build ¶
func (b0 ExtProcPerRoute_builder) Build() *ExtProcPerRoute
type ExternalProcessor ¶
type ExternalProcessor struct {
// Configuration for the gRPC service that the filter will communicate with.
// Only one of “grpc_service“ or “http_service“ can be set.
// It is required that one of them must be set.
GrpcService *v3.GrpcService `protobuf:"bytes,1,opt,name=grpc_service,json=grpcService,proto3" json:"grpc_service,omitempty"`
// Configuration for the HTTP service that the filter will communicate with.
// Only one of “http_service“ or
// :ref:`grpc_service <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.grpc_service>`
// can be set. It is required that one of them must be set.
//
// If “http_service“ is set, the
// :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
// cannot be configured to send any body or trailers. i.e., “http_service“ only supports
// sending request or response headers to the side stream server.
//
// With this configuration, the data plane behavior is:
//
// 1. The headers are first put in a proto message
// :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`.
//
// 2. This proto message is then transcoded into a JSON text.
//
// 3. The data plane then sends an HTTP POST message with content-type as "application/json",
// and this JSON text as body to the side stream server.
//
// After the side-stream receives this HTTP request message, it is expected to do as follows:
//
// 1. It converts the body, which is a JSON string, into a “ProcessingRequest“
// proto message to examine and mutate the headers.
//
// 2. It then sets the mutated headers into a new proto message
// :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.
//
// 3. It converts the “ProcessingResponse“ proto message into a JSON text.
//
// 4. It then sends an HTTP response back to the data plane with status code as “"200"“,
// “content-type“ as “"application/json"“ and sets the JSON text as the body.
HttpService *ExtProcHttpService `protobuf:"bytes,20,opt,name=http_service,json=httpService,proto3" json:"http_service,omitempty"`
// By default, if in the following cases:
//
// 1. The gRPC stream cannot be established.
//
// 2. The gRPC stream is closed prematurely with an error.
//
// 3. The external processing timeouts.
//
// 4. The ext_proc server sends back spurious response messages.
//
// The filter will fail and a local reply with error code
// 504(for timeout case) or 500(for all other cases), will be sent to the downstream.
//
// However, with this parameter set to true and if the above cases happen, the processing
// continues without error.
FailureModeAllow bool `protobuf:"varint,2,opt,name=failure_mode_allow,json=failureModeAllow,proto3" json:"failure_mode_allow,omitempty"`
// Specifies default options for how HTTP headers, trailers, and bodies are
// sent. See “ProcessingMode“ for details.
ProcessingMode *ProcessingMode `protobuf:"bytes,3,opt,name=processing_mode,json=processingMode,proto3" json:"processing_mode,omitempty"`
// The data plane provides a number of :ref:`attributes <arch_overview_attributes>`
// for expressive policies. Each attribute name provided in this field will be
// matched against that list and populated in the
// :ref:`ProcessingRequest.attributes <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.attributes>` field.
// See the :ref:`attribute documentation <arch_overview_request_attributes>`
// for the list of supported attributes and their types.
RequestAttributes []string `protobuf:"bytes,5,rep,name=request_attributes,json=requestAttributes,proto3" json:"request_attributes,omitempty"`
// The data plane provides a number of :ref:`attributes <arch_overview_attributes>`
// for expressive policies. Each attribute name provided in this field will be
// matched against that list and populated in the
// :ref:`ProcessingRequest.attributes <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.attributes>` field.
// See the :ref:`attribute documentation <arch_overview_attributes>`
// for the list of supported attributes and their types.
ResponseAttributes []string `protobuf:"bytes,6,rep,name=response_attributes,json=responseAttributes,proto3" json:"response_attributes,omitempty"`
// Specifies the timeout for each individual message sent on the stream.
// Whenever the data plane sends a message on the stream that requires a
// response, it will reset this timer, and will stop processing and return
// an error (subject to the processing mode) if the timer expires before a
// matching response is received. There is no timeout when the filter is
// running in observability mode or when the body send mode is
// “FULL_DUPLEX_STREAMED“ or “GRPC“. Zero is a valid config which means
// the timer will be triggered immediately. If not configured, default is
// 200 milliseconds.
MessageTimeout *durationpb.Duration `protobuf:"bytes,7,opt,name=message_timeout,json=messageTimeout,proto3" json:"message_timeout,omitempty"`
// Optional additional prefix to use when emitting statistics. This allows to distinguish
// emitted statistics between configured “ext_proc“ filters in an HTTP filter chain.
StatPrefix string `protobuf:"bytes,8,opt,name=stat_prefix,json=statPrefix,proto3" json:"stat_prefix,omitempty"`
// Rules that determine what modifications an external processing server may
// make to message headers. If not set, all headers may be modified except
// for "host", ":authority", ":scheme", ":method", and headers that start
// with the header prefix set via
// :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`
// (which is usually "x-envoy").
// Note that changing headers such as "host" or ":authority" may not in itself
// change the data plane's routing decision, as routes can be cached. To also force the
// route to be recomputed, set the
// :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
// field to true in the same response.
MutationRules *v31.HeaderMutationRules `protobuf:"bytes,9,opt,name=mutation_rules,json=mutationRules,proto3" json:"mutation_rules,omitempty"`
// Specify the upper bound of
// :ref:`override_message_timeout <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.override_message_timeout>`
// If not specified, by default it is 0, which will effectively disable the “override_message_timeout“ API.
MaxMessageTimeout *durationpb.Duration `protobuf:"bytes,10,opt,name=max_message_timeout,json=maxMessageTimeout,proto3" json:"max_message_timeout,omitempty"`
// Allow headers matching the “forward_rules“ to be forwarded to the external processing server.
// If not set, all headers are forwarded to the external processing server.
ForwardRules *HeaderForwardingRules `protobuf:"bytes,12,opt,name=forward_rules,json=forwardRules,proto3" json:"forward_rules,omitempty"`
// Additional metadata to be added to the filter state for logging purposes. The metadata
// will be added to StreamInfo's filter state under the namespace corresponding to the
// ext_proc filter name.
FilterMetadata *structpb.Struct `protobuf:"bytes,13,opt,name=filter_metadata,json=filterMetadata,proto3" json:"filter_metadata,omitempty"`
// If “allow_mode_override“ is set to true, the filter config :ref:`processing_mode
// <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
// can be overridden by the response message from the external processing server
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`.
// If not set, “mode_override“ API in the response message will be ignored.
// Mode override is not supported if the body send mode is “FULL_DUPLEX_STREAMED“.
AllowModeOverride bool `protobuf:"varint,14,opt,name=allow_mode_override,json=allowModeOverride,proto3" json:"allow_mode_override,omitempty"`
// If set to true, ignore the
// :ref:`immediate_response <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.immediate_response>`
// message in an external processor response. In such case, no local reply will be sent.
// Instead, the stream to the external processor will be closed. There will be no
// more external processing for this stream from now on.
DisableImmediateResponse bool `` /* 137-byte string literal not displayed */
// Options related to the sending and receiving of dynamic metadata.
MetadataOptions *MetadataOptions `protobuf:"bytes,16,opt,name=metadata_options,json=metadataOptions,proto3" json:"metadata_options,omitempty"`
// If true, send each part of the HTTP request or response specified by “ProcessingMode“
// without pausing on filter chain iteration. It is "Send and Go" mode that can be used
// by external processor to observe the request's data and status. In this mode:
//
// 1. Only “STREAMED“, “GRPC“, and “NONE“ body processing modes are supported; for any
// other body processing mode, the body will not be sent.
//
// 2. External processor should not send back processing response, as any responses will be ignored.
// This also means that
// :ref:`message_timeout <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.message_timeout>`
// restriction doesn't apply to this mode.
//
// 3. External processor may still close the stream to indicate that no more messages are needed.
ObservabilityMode bool `protobuf:"varint,17,opt,name=observability_mode,json=observabilityMode,proto3" json:"observability_mode,omitempty"`
// Prevents clearing the route-cache when the
// :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
// field is set in an external processor response.
// Only one of “disable_clear_route_cache“ or “route_cache_action“ can be set.
// It is recommended to set “route_cache_action“ which supersedes “disable_clear_route_cache“.
DisableClearRouteCache bool `` /* 133-byte string literal not displayed */
// Specifies the action to be taken when an external processor response is
// received in response to request headers. It is recommended to set this field rather than set
// :ref:`disable_clear_route_cache <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.disable_clear_route_cache>`.
// Only one of “disable_clear_route_cache“ or “route_cache_action“ can be set.
RouteCacheAction ExternalProcessor_RouteCacheAction `` /* 195-byte string literal not displayed */
// Specifies the deferred closure timeout for gRPC stream that connects to external processor. Currently, the deferred stream closure
// is only used in :ref:`observability_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.observability_mode>`.
// In observability mode, gRPC streams may be held open to the external processor longer than the lifetime of the regular client to
// backend stream lifetime. In this case, the data plane will eventually timeout the external processor stream according to this time limit.
// The default value is 5000 milliseconds (5 seconds) if not specified.
DeferredCloseTimeout *durationpb.Duration `protobuf:"bytes,19,opt,name=deferred_close_timeout,json=deferredCloseTimeout,proto3" json:"deferred_close_timeout,omitempty"`
// Send body to the side stream server once it arrives without waiting for the header response from that server.
// It only works for “STREAMED“ body processing mode. For any other body
// processing modes, it is ignored.
// The server has two options upon receiving a header request:
//
// 1. Instant Response: send the header response as soon as the header request is received.
//
// 2. Delayed Response: wait for the body before sending any response.
//
// In all scenarios, the header-body ordering must always be maintained.
//
// If enabled the data plane will ignore the
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`
// value that the server sends in the header response. This is because the data plane may have already
// sent the body to the server, prior to processing the header response.
SendBodyWithoutWaitingForHeaderResponse bool `` /* 190-byte string literal not displayed */
// When :ref:`allow_mode_override
// <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and
// “allowed_override_modes“ is configured, the filter config :ref:`processing_mode
// <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
// can only be overridden by the response message from the external processing server iff the
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by
// the “allowed_override_modes“ allow-list below.
// Since “request_header_mode“ is not applicable in any way, it's ignored in comparison.
AllowedOverrideModes []*ProcessingMode `protobuf:"bytes,22,rep,name=allowed_override_modes,json=allowedOverrideModes,proto3" json:"allowed_override_modes,omitempty"`
// Decorator to introduce custom logic that runs after the “ProcessingRequest“ is constructed, but
// before it is sent to the External Processor. The “ProcessingRequest“ may be modified.
//
// .. note::
//
// Processing request modifiers are currently in alpha.
//
// [#extension-category: envoy.http.ext_proc.processing_request_modifiers]
ProcessingRequestModifier *v3.TypedExtensionConfig `` /* 139-byte string literal not displayed */
// Decorator to introduce custom logic that runs after a message received from
// the External Processor is processed, but before continuing filter chain iteration.
//
// .. note::
//
// Response processors are currently in alpha.
//
// [#extension-category: envoy.http.ext_proc.response_processors]
OnProcessingResponse *v3.TypedExtensionConfig `protobuf:"bytes,23,opt,name=on_processing_response,json=onProcessingResponse,proto3" json:"on_processing_response,omitempty"`
// Sets the HTTP status code that is returned to the client when the external processing server returns
// an error, fails to respond, or cannot be reached.
//
// The default status is “HTTP 500 Internal Server Error“.
StatusOnError *v32.HttpStatus `protobuf:"bytes,24,opt,name=status_on_error,json=statusOnError,proto3" json:"status_on_error,omitempty"`
// If true, the filter will not remove the “content-length“ header from the request/response after external processing.
// It is typically used in
// :ref:`FULL_DUPLEX_STREAMED <envoy_v3_api_enum_value_extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode.FULL_DUPLEX_STREAMED>`
// mode. If the original body has been modified, the external processing server needs to set the correct content-length header in HeaderMutation
// that matches the modified body length.
//
// .. warning::
//
// This configuration should only be used if you are sure that the content length matches
// the body length after external processing. Otherwise, it may cause vulnerability issues such as
// request smuggling. Thus, please use your own discretion when enabling this feature.
AllowContentLengthHeader bool `` /* 139-byte string literal not displayed */
// contains filtered or unexported fields
}
The filter communicates with an external gRPC service called an "external processor" that can do a variety of things with the request and response:
* Access and modify the HTTP headers on the request, response, or both. * Access and modify the HTTP request and response bodies. * Access and modify the dynamic stream metadata. * Immediately send an HTTP response downstream and terminate other processing.
The filter communicates with the server using a gRPC bidirectional stream. After the initial request, the external server is in control over what additional data is sent to it and how it should be processed.
By implementing the protocol specified by the stream, the external server can choose:
* Whether it receives the response message at all. * Whether it receives the message body at all, in separate chunks, or as a single buffer. * To modify request or response trailers if they already exist.
The filter supports up to six different processing steps. Each is represented by a gRPC stream message that is sent to the external processor. For each message, the processor must send a matching response.
- Request headers: Contains the headers from the original HTTP request.
- Request body: If the body is present, the behavior depends on the body send mode. In “BUFFERED“ or “BUFFERED_PARTIAL“ mode, the body is sent to the external processor in a single message. In “STREAMED“ or “FULL_DUPLEX_STREAMED“ mode, the body will be split across multiple messages sent to the external processor. In “GRPC“ mode, as each gRPC message arrives, it will be sent to the external processor (there will be exactly one gRPC message in each message sent to the external processor). In “NONE“ mode, the body will not be sent to the external processor.
- Request trailers: Delivered if they are present and if the trailer mode is set to “SEND“.
- Response headers: Contains the headers from the HTTP response. Keep in mind that if the upstream system sends them before processing the request body that this message may arrive before the complete body.
- Response body: Sent according to the processing mode like the request body.
- Response trailers: Delivered according to the processing mode like the request trailers.
By default, the processor sends only the request and response headers messages. This may be changed to include any of the six steps by changing the “processing_mode“ setting of the filter configuration, or by setting the “mode_override“ of any response from the external processor. The latter is only enabled if “allow_mode_override“ is set to true. This way, a processor may, for example, use information in the request header to determine whether the message body must be examined, or whether the data plane should simply stream it straight through.
All of this together allows a server to process the filter traffic in fairly sophisticated ways. For example:
- A server may choose to examine all or part of the HTTP message bodies depending on the content of the headers.
- A server may choose to immediately reject some messages based on their HTTP headers (or other dynamic metadata) and more carefully examine others.
The protocol itself is based on a bidirectional gRPC stream. The data plane will send the server :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>` messages, and the server must reply with :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.
Stats about each gRPC call are recorded in a :ref:`dynamic filter state <arch_overview_advanced_filter_state_sharing>` object in a namespace matching the filter name.
[#next-free-field: 27]
func (*ExternalProcessor) ClearDeferredCloseTimeout ¶
func (x *ExternalProcessor) ClearDeferredCloseTimeout()
func (*ExternalProcessor) ClearFilterMetadata ¶
func (x *ExternalProcessor) ClearFilterMetadata()
func (*ExternalProcessor) ClearForwardRules ¶
func (x *ExternalProcessor) ClearForwardRules()
func (*ExternalProcessor) ClearGrpcService ¶
func (x *ExternalProcessor) ClearGrpcService()
func (*ExternalProcessor) ClearHttpService ¶
func (x *ExternalProcessor) ClearHttpService()
func (*ExternalProcessor) ClearMaxMessageTimeout ¶
func (x *ExternalProcessor) ClearMaxMessageTimeout()
func (*ExternalProcessor) ClearMessageTimeout ¶
func (x *ExternalProcessor) ClearMessageTimeout()
func (*ExternalProcessor) ClearMetadataOptions ¶
func (x *ExternalProcessor) ClearMetadataOptions()
func (*ExternalProcessor) ClearMutationRules ¶
func (x *ExternalProcessor) ClearMutationRules()
func (*ExternalProcessor) ClearOnProcessingResponse ¶
func (x *ExternalProcessor) ClearOnProcessingResponse()
func (*ExternalProcessor) ClearProcessingMode ¶
func (x *ExternalProcessor) ClearProcessingMode()
func (*ExternalProcessor) ClearProcessingRequestModifier ¶
func (x *ExternalProcessor) ClearProcessingRequestModifier()
func (*ExternalProcessor) ClearStatusOnError ¶
func (x *ExternalProcessor) ClearStatusOnError()
func (*ExternalProcessor) GetAllowContentLengthHeader ¶
func (x *ExternalProcessor) GetAllowContentLengthHeader() bool
func (*ExternalProcessor) GetAllowModeOverride ¶
func (x *ExternalProcessor) GetAllowModeOverride() bool
func (*ExternalProcessor) GetAllowedOverrideModes ¶
func (x *ExternalProcessor) GetAllowedOverrideModes() []*ProcessingMode
func (*ExternalProcessor) GetDeferredCloseTimeout ¶
func (x *ExternalProcessor) GetDeferredCloseTimeout() *durationpb.Duration
func (*ExternalProcessor) GetDisableClearRouteCache ¶
func (x *ExternalProcessor) GetDisableClearRouteCache() bool
func (*ExternalProcessor) GetDisableImmediateResponse ¶
func (x *ExternalProcessor) GetDisableImmediateResponse() bool
func (*ExternalProcessor) GetFailureModeAllow ¶
func (x *ExternalProcessor) GetFailureModeAllow() bool
func (*ExternalProcessor) GetFilterMetadata ¶
func (x *ExternalProcessor) GetFilterMetadata() *structpb.Struct
func (*ExternalProcessor) GetForwardRules ¶
func (x *ExternalProcessor) GetForwardRules() *HeaderForwardingRules
func (*ExternalProcessor) GetGrpcService ¶
func (x *ExternalProcessor) GetGrpcService() *v3.GrpcService
func (*ExternalProcessor) GetHttpService ¶
func (x *ExternalProcessor) GetHttpService() *ExtProcHttpService
func (*ExternalProcessor) GetMaxMessageTimeout ¶
func (x *ExternalProcessor) GetMaxMessageTimeout() *durationpb.Duration
func (*ExternalProcessor) GetMessageTimeout ¶
func (x *ExternalProcessor) GetMessageTimeout() *durationpb.Duration
func (*ExternalProcessor) GetMetadataOptions ¶
func (x *ExternalProcessor) GetMetadataOptions() *MetadataOptions
func (*ExternalProcessor) GetMutationRules ¶
func (x *ExternalProcessor) GetMutationRules() *v31.HeaderMutationRules
func (*ExternalProcessor) GetObservabilityMode ¶
func (x *ExternalProcessor) GetObservabilityMode() bool
func (*ExternalProcessor) GetOnProcessingResponse ¶
func (x *ExternalProcessor) GetOnProcessingResponse() *v3.TypedExtensionConfig
func (*ExternalProcessor) GetProcessingMode ¶
func (x *ExternalProcessor) GetProcessingMode() *ProcessingMode
func (*ExternalProcessor) GetProcessingRequestModifier ¶
func (x *ExternalProcessor) GetProcessingRequestModifier() *v3.TypedExtensionConfig
func (*ExternalProcessor) GetRequestAttributes ¶
func (x *ExternalProcessor) GetRequestAttributes() []string
func (*ExternalProcessor) GetResponseAttributes ¶
func (x *ExternalProcessor) GetResponseAttributes() []string
func (*ExternalProcessor) GetRouteCacheAction ¶
func (x *ExternalProcessor) GetRouteCacheAction() ExternalProcessor_RouteCacheAction
func (*ExternalProcessor) GetSendBodyWithoutWaitingForHeaderResponse ¶
func (x *ExternalProcessor) GetSendBodyWithoutWaitingForHeaderResponse() bool
func (*ExternalProcessor) GetStatPrefix ¶
func (x *ExternalProcessor) GetStatPrefix() string
func (*ExternalProcessor) GetStatusOnError ¶
func (x *ExternalProcessor) GetStatusOnError() *v32.HttpStatus
func (*ExternalProcessor) HasDeferredCloseTimeout ¶
func (x *ExternalProcessor) HasDeferredCloseTimeout() bool
func (*ExternalProcessor) HasFilterMetadata ¶
func (x *ExternalProcessor) HasFilterMetadata() bool
func (*ExternalProcessor) HasForwardRules ¶
func (x *ExternalProcessor) HasForwardRules() bool
func (*ExternalProcessor) HasGrpcService ¶
func (x *ExternalProcessor) HasGrpcService() bool
func (*ExternalProcessor) HasHttpService ¶
func (x *ExternalProcessor) HasHttpService() bool
func (*ExternalProcessor) HasMaxMessageTimeout ¶
func (x *ExternalProcessor) HasMaxMessageTimeout() bool
func (*ExternalProcessor) HasMessageTimeout ¶
func (x *ExternalProcessor) HasMessageTimeout() bool
func (*ExternalProcessor) HasMetadataOptions ¶
func (x *ExternalProcessor) HasMetadataOptions() bool
func (*ExternalProcessor) HasMutationRules ¶
func (x *ExternalProcessor) HasMutationRules() bool
func (*ExternalProcessor) HasOnProcessingResponse ¶
func (x *ExternalProcessor) HasOnProcessingResponse() bool
func (*ExternalProcessor) HasProcessingMode ¶
func (x *ExternalProcessor) HasProcessingMode() bool
func (*ExternalProcessor) HasProcessingRequestModifier ¶
func (x *ExternalProcessor) HasProcessingRequestModifier() bool
func (*ExternalProcessor) HasStatusOnError ¶
func (x *ExternalProcessor) HasStatusOnError() bool
func (*ExternalProcessor) ProtoMessage ¶
func (*ExternalProcessor) ProtoMessage()
func (*ExternalProcessor) ProtoReflect ¶
func (x *ExternalProcessor) ProtoReflect() protoreflect.Message
func (*ExternalProcessor) Reset ¶
func (x *ExternalProcessor) Reset()
func (*ExternalProcessor) SetAllowContentLengthHeader ¶
func (x *ExternalProcessor) SetAllowContentLengthHeader(v bool)
func (*ExternalProcessor) SetAllowModeOverride ¶
func (x *ExternalProcessor) SetAllowModeOverride(v bool)
func (*ExternalProcessor) SetAllowedOverrideModes ¶
func (x *ExternalProcessor) SetAllowedOverrideModes(v []*ProcessingMode)
func (*ExternalProcessor) SetDeferredCloseTimeout ¶
func (x *ExternalProcessor) SetDeferredCloseTimeout(v *durationpb.Duration)
func (*ExternalProcessor) SetDisableClearRouteCache ¶
func (x *ExternalProcessor) SetDisableClearRouteCache(v bool)
func (*ExternalProcessor) SetDisableImmediateResponse ¶
func (x *ExternalProcessor) SetDisableImmediateResponse(v bool)
func (*ExternalProcessor) SetFailureModeAllow ¶
func (x *ExternalProcessor) SetFailureModeAllow(v bool)
func (*ExternalProcessor) SetFilterMetadata ¶
func (x *ExternalProcessor) SetFilterMetadata(v *structpb.Struct)
func (*ExternalProcessor) SetForwardRules ¶
func (x *ExternalProcessor) SetForwardRules(v *HeaderForwardingRules)
func (*ExternalProcessor) SetGrpcService ¶
func (x *ExternalProcessor) SetGrpcService(v *v3.GrpcService)
func (*ExternalProcessor) SetHttpService ¶
func (x *ExternalProcessor) SetHttpService(v *ExtProcHttpService)
func (*ExternalProcessor) SetMaxMessageTimeout ¶
func (x *ExternalProcessor) SetMaxMessageTimeout(v *durationpb.Duration)
func (*ExternalProcessor) SetMessageTimeout ¶
func (x *ExternalProcessor) SetMessageTimeout(v *durationpb.Duration)
func (*ExternalProcessor) SetMetadataOptions ¶
func (x *ExternalProcessor) SetMetadataOptions(v *MetadataOptions)
func (*ExternalProcessor) SetMutationRules ¶
func (x *ExternalProcessor) SetMutationRules(v *v31.HeaderMutationRules)
func (*ExternalProcessor) SetObservabilityMode ¶
func (x *ExternalProcessor) SetObservabilityMode(v bool)
func (*ExternalProcessor) SetOnProcessingResponse ¶
func (x *ExternalProcessor) SetOnProcessingResponse(v *v3.TypedExtensionConfig)
func (*ExternalProcessor) SetProcessingMode ¶
func (x *ExternalProcessor) SetProcessingMode(v *ProcessingMode)
func (*ExternalProcessor) SetProcessingRequestModifier ¶
func (x *ExternalProcessor) SetProcessingRequestModifier(v *v3.TypedExtensionConfig)
func (*ExternalProcessor) SetRequestAttributes ¶
func (x *ExternalProcessor) SetRequestAttributes(v []string)
func (*ExternalProcessor) SetResponseAttributes ¶
func (x *ExternalProcessor) SetResponseAttributes(v []string)
func (*ExternalProcessor) SetRouteCacheAction ¶
func (x *ExternalProcessor) SetRouteCacheAction(v ExternalProcessor_RouteCacheAction)
func (*ExternalProcessor) SetSendBodyWithoutWaitingForHeaderResponse ¶
func (x *ExternalProcessor) SetSendBodyWithoutWaitingForHeaderResponse(v bool)
func (*ExternalProcessor) SetStatPrefix ¶
func (x *ExternalProcessor) SetStatPrefix(v string)
func (*ExternalProcessor) SetStatusOnError ¶
func (x *ExternalProcessor) SetStatusOnError(v *v32.HttpStatus)
func (*ExternalProcessor) String ¶
func (x *ExternalProcessor) String() string
type ExternalProcessor_RouteCacheAction ¶
type ExternalProcessor_RouteCacheAction int32
Describes the route cache action to be taken when an external processor response is received in response to request headers.
const ( // The default behavior is to clear the route cache only when the // :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>` // field is set in an external processor response. ExternalProcessor_DEFAULT ExternalProcessor_RouteCacheAction = 0 // Always clear the route cache irrespective of the “clear_route_cache“ bit in // the external processor response. ExternalProcessor_CLEAR ExternalProcessor_RouteCacheAction = 1 // Do not clear the route cache irrespective of the “clear_route_cache“ bit in // the external processor response. Setting to “RETAIN“ is equivalent to setting the // :ref:`disable_clear_route_cache <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.disable_clear_route_cache>` // to true. ExternalProcessor_RETAIN ExternalProcessor_RouteCacheAction = 2 )
func (ExternalProcessor_RouteCacheAction) Descriptor ¶
func (ExternalProcessor_RouteCacheAction) Descriptor() protoreflect.EnumDescriptor
func (ExternalProcessor_RouteCacheAction) Enum ¶
func (x ExternalProcessor_RouteCacheAction) Enum() *ExternalProcessor_RouteCacheAction
func (ExternalProcessor_RouteCacheAction) Number ¶
func (x ExternalProcessor_RouteCacheAction) Number() protoreflect.EnumNumber
func (ExternalProcessor_RouteCacheAction) String ¶
func (x ExternalProcessor_RouteCacheAction) String() string
func (ExternalProcessor_RouteCacheAction) Type ¶
func (ExternalProcessor_RouteCacheAction) Type() protoreflect.EnumType
type ExternalProcessor_builder ¶
type ExternalProcessor_builder struct {
// Configuration for the gRPC service that the filter will communicate with.
// Only one of “grpc_service“ or “http_service“ can be set.
// It is required that one of them must be set.
GrpcService *v3.GrpcService
// Configuration for the HTTP service that the filter will communicate with.
// Only one of “http_service“ or
// :ref:`grpc_service <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.grpc_service>`
// can be set. It is required that one of them must be set.
//
// If “http_service“ is set, the
// :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
// cannot be configured to send any body or trailers. i.e., “http_service“ only supports
// sending request or response headers to the side stream server.
//
// With this configuration, the data plane behavior is:
//
// 1. The headers are first put in a proto message
// :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`.
//
// 2. This proto message is then transcoded into a JSON text.
//
// 3. The data plane then sends an HTTP POST message with content-type as "application/json",
// and this JSON text as body to the side stream server.
//
// After the side-stream receives this HTTP request message, it is expected to do as follows:
//
// 1. It converts the body, which is a JSON string, into a “ProcessingRequest“
// proto message to examine and mutate the headers.
//
// 2. It then sets the mutated headers into a new proto message
// :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.
//
// 3. It converts the “ProcessingResponse“ proto message into a JSON text.
//
// 4. It then sends an HTTP response back to the data plane with status code as “"200"“,
// “content-type“ as “"application/json"“ and sets the JSON text as the body.
HttpService *ExtProcHttpService
// By default, if in the following cases:
//
// 1. The gRPC stream cannot be established.
//
// 2. The gRPC stream is closed prematurely with an error.
//
// 3. The external processing timeouts.
//
// 4. The ext_proc server sends back spurious response messages.
//
// The filter will fail and a local reply with error code
// 504(for timeout case) or 500(for all other cases), will be sent to the downstream.
//
// However, with this parameter set to true and if the above cases happen, the processing
// continues without error.
FailureModeAllow bool
// Specifies default options for how HTTP headers, trailers, and bodies are
// sent. See “ProcessingMode“ for details.
ProcessingMode *ProcessingMode
// The data plane provides a number of :ref:`attributes <arch_overview_attributes>`
// for expressive policies. Each attribute name provided in this field will be
// matched against that list and populated in the
// :ref:`ProcessingRequest.attributes <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.attributes>` field.
// See the :ref:`attribute documentation <arch_overview_request_attributes>`
// for the list of supported attributes and their types.
RequestAttributes []string
// The data plane provides a number of :ref:`attributes <arch_overview_attributes>`
// for expressive policies. Each attribute name provided in this field will be
// matched against that list and populated in the
// :ref:`ProcessingRequest.attributes <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.attributes>` field.
// See the :ref:`attribute documentation <arch_overview_attributes>`
// for the list of supported attributes and their types.
ResponseAttributes []string
// Specifies the timeout for each individual message sent on the stream.
// Whenever the data plane sends a message on the stream that requires a
// response, it will reset this timer, and will stop processing and return
// an error (subject to the processing mode) if the timer expires before a
// matching response is received. There is no timeout when the filter is
// running in observability mode or when the body send mode is
// “FULL_DUPLEX_STREAMED“ or “GRPC“. Zero is a valid config which means
// the timer will be triggered immediately. If not configured, default is
// 200 milliseconds.
MessageTimeout *durationpb.Duration
// Optional additional prefix to use when emitting statistics. This allows to distinguish
// emitted statistics between configured “ext_proc“ filters in an HTTP filter chain.
StatPrefix string
// Rules that determine what modifications an external processing server may
// make to message headers. If not set, all headers may be modified except
// for "host", ":authority", ":scheme", ":method", and headers that start
// with the header prefix set via
// :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`
// (which is usually "x-envoy").
// Note that changing headers such as "host" or ":authority" may not in itself
// change the data plane's routing decision, as routes can be cached. To also force the
// route to be recomputed, set the
// :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
// field to true in the same response.
MutationRules *v31.HeaderMutationRules
// Specify the upper bound of
// :ref:`override_message_timeout <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.override_message_timeout>`
// If not specified, by default it is 0, which will effectively disable the “override_message_timeout“ API.
MaxMessageTimeout *durationpb.Duration
// Allow headers matching the “forward_rules“ to be forwarded to the external processing server.
// If not set, all headers are forwarded to the external processing server.
ForwardRules *HeaderForwardingRules
// Additional metadata to be added to the filter state for logging purposes. The metadata
// will be added to StreamInfo's filter state under the namespace corresponding to the
// ext_proc filter name.
FilterMetadata *structpb.Struct
// If “allow_mode_override“ is set to true, the filter config :ref:`processing_mode
// <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
// can be overridden by the response message from the external processing server
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`.
// If not set, “mode_override“ API in the response message will be ignored.
// Mode override is not supported if the body send mode is “FULL_DUPLEX_STREAMED“.
AllowModeOverride bool
// If set to true, ignore the
// :ref:`immediate_response <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.immediate_response>`
// message in an external processor response. In such case, no local reply will be sent.
// Instead, the stream to the external processor will be closed. There will be no
// more external processing for this stream from now on.
DisableImmediateResponse bool
// Options related to the sending and receiving of dynamic metadata.
MetadataOptions *MetadataOptions
// If true, send each part of the HTTP request or response specified by “ProcessingMode“
// without pausing on filter chain iteration. It is "Send and Go" mode that can be used
// by external processor to observe the request's data and status. In this mode:
//
// 1. Only “STREAMED“, “GRPC“, and “NONE“ body processing modes are supported; for any
// other body processing mode, the body will not be sent.
//
// 2. External processor should not send back processing response, as any responses will be ignored.
// This also means that
// :ref:`message_timeout <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.message_timeout>`
// restriction doesn't apply to this mode.
//
// 3. External processor may still close the stream to indicate that no more messages are needed.
ObservabilityMode bool
// Prevents clearing the route-cache when the
// :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
// field is set in an external processor response.
// Only one of “disable_clear_route_cache“ or “route_cache_action“ can be set.
// It is recommended to set “route_cache_action“ which supersedes “disable_clear_route_cache“.
DisableClearRouteCache bool
// Specifies the action to be taken when an external processor response is
// received in response to request headers. It is recommended to set this field rather than set
// :ref:`disable_clear_route_cache <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.disable_clear_route_cache>`.
// Only one of “disable_clear_route_cache“ or “route_cache_action“ can be set.
RouteCacheAction ExternalProcessor_RouteCacheAction
// Specifies the deferred closure timeout for gRPC stream that connects to external processor. Currently, the deferred stream closure
// is only used in :ref:`observability_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.observability_mode>`.
// In observability mode, gRPC streams may be held open to the external processor longer than the lifetime of the regular client to
// backend stream lifetime. In this case, the data plane will eventually timeout the external processor stream according to this time limit.
// The default value is 5000 milliseconds (5 seconds) if not specified.
DeferredCloseTimeout *durationpb.Duration
// Send body to the side stream server once it arrives without waiting for the header response from that server.
// It only works for “STREAMED“ body processing mode. For any other body
// processing modes, it is ignored.
// The server has two options upon receiving a header request:
//
// 1. Instant Response: send the header response as soon as the header request is received.
//
// 2. Delayed Response: wait for the body before sending any response.
//
// In all scenarios, the header-body ordering must always be maintained.
//
// If enabled the data plane will ignore the
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`
// value that the server sends in the header response. This is because the data plane may have already
// sent the body to the server, prior to processing the header response.
SendBodyWithoutWaitingForHeaderResponse bool
// When :ref:`allow_mode_override
// <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and
// “allowed_override_modes“ is configured, the filter config :ref:`processing_mode
// <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
// can only be overridden by the response message from the external processing server iff the
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by
// the “allowed_override_modes“ allow-list below.
// Since “request_header_mode“ is not applicable in any way, it's ignored in comparison.
AllowedOverrideModes []*ProcessingMode
// Decorator to introduce custom logic that runs after the “ProcessingRequest“ is constructed, but
// before it is sent to the External Processor. The “ProcessingRequest“ may be modified.
//
// .. note::
//
// Processing request modifiers are currently in alpha.
//
// [#extension-category: envoy.http.ext_proc.processing_request_modifiers]
ProcessingRequestModifier *v3.TypedExtensionConfig
// Decorator to introduce custom logic that runs after a message received from
// the External Processor is processed, but before continuing filter chain iteration.
//
// .. note::
//
// Response processors are currently in alpha.
//
// [#extension-category: envoy.http.ext_proc.response_processors]
OnProcessingResponse *v3.TypedExtensionConfig
// Sets the HTTP status code that is returned to the client when the external processing server returns
// an error, fails to respond, or cannot be reached.
//
// The default status is “HTTP 500 Internal Server Error“.
StatusOnError *v32.HttpStatus
// If true, the filter will not remove the “content-length“ header from the request/response after external processing.
// It is typically used in
// :ref:`FULL_DUPLEX_STREAMED <envoy_v3_api_enum_value_extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode.FULL_DUPLEX_STREAMED>`
// mode. If the original body has been modified, the external processing server needs to set the correct content-length header in HeaderMutation
// that matches the modified body length.
//
// .. warning::
//
// This configuration should only be used if you are sure that the content length matches
// the body length after external processing. Otherwise, it may cause vulnerability issues such as
// request smuggling. Thus, please use your own discretion when enabling this feature.
AllowContentLengthHeader bool
// contains filtered or unexported fields
}
func (ExternalProcessor_builder) Build ¶
func (b0 ExternalProcessor_builder) Build() *ExternalProcessor
type HeaderForwardingRules ¶
type HeaderForwardingRules struct {
// If set, specifically allow any header in this list to be forwarded to the external
// processing server. This can be overridden by the below “disallowed_headers“.
AllowedHeaders *v33.ListStringMatcher `protobuf:"bytes,1,opt,name=allowed_headers,json=allowedHeaders,proto3" json:"allowed_headers,omitempty"`
// If set, specifically disallow any header in this list to be forwarded to the external
// processing server. This overrides the above “allowed_headers“ if a header matches both.
DisallowedHeaders *v33.ListStringMatcher `protobuf:"bytes,2,opt,name=disallowed_headers,json=disallowedHeaders,proto3" json:"disallowed_headers,omitempty"`
// contains filtered or unexported fields
}
The HeaderForwardingRules structure specifies what headers are allowed to be forwarded to the external processing server.
This works as below:
- If neither “allowed_headers“ nor “disallowed_headers“ is set, all headers are forwarded.
- If both “allowed_headers“ and “disallowed_headers“ are set, only headers in the “allowed_headers“ but not in the “disallowed_headers“ are forwarded.
- If “allowed_headers“ is set, and “disallowed_headers“ is not set, only headers in the “allowed_headers“ are forwarded.
- If “disallowed_headers“ is set, and “allowed_headers“ is not set, all headers except headers in the “disallowed_headers“ are forwarded.
func (*HeaderForwardingRules) ClearAllowedHeaders ¶
func (x *HeaderForwardingRules) ClearAllowedHeaders()
func (*HeaderForwardingRules) ClearDisallowedHeaders ¶
func (x *HeaderForwardingRules) ClearDisallowedHeaders()
func (*HeaderForwardingRules) GetAllowedHeaders ¶
func (x *HeaderForwardingRules) GetAllowedHeaders() *v33.ListStringMatcher
func (*HeaderForwardingRules) GetDisallowedHeaders ¶
func (x *HeaderForwardingRules) GetDisallowedHeaders() *v33.ListStringMatcher
func (*HeaderForwardingRules) HasAllowedHeaders ¶
func (x *HeaderForwardingRules) HasAllowedHeaders() bool
func (*HeaderForwardingRules) HasDisallowedHeaders ¶
func (x *HeaderForwardingRules) HasDisallowedHeaders() bool
func (*HeaderForwardingRules) ProtoMessage ¶
func (*HeaderForwardingRules) ProtoMessage()
func (*HeaderForwardingRules) ProtoReflect ¶
func (x *HeaderForwardingRules) ProtoReflect() protoreflect.Message
func (*HeaderForwardingRules) Reset ¶
func (x *HeaderForwardingRules) Reset()
func (*HeaderForwardingRules) SetAllowedHeaders ¶
func (x *HeaderForwardingRules) SetAllowedHeaders(v *v33.ListStringMatcher)
func (*HeaderForwardingRules) SetDisallowedHeaders ¶
func (x *HeaderForwardingRules) SetDisallowedHeaders(v *v33.ListStringMatcher)
func (*HeaderForwardingRules) String ¶
func (x *HeaderForwardingRules) String() string
type HeaderForwardingRules_builder ¶
type HeaderForwardingRules_builder struct {
// If set, specifically allow any header in this list to be forwarded to the external
// processing server. This can be overridden by the below “disallowed_headers“.
AllowedHeaders *v33.ListStringMatcher
// If set, specifically disallow any header in this list to be forwarded to the external
// processing server. This overrides the above “allowed_headers“ if a header matches both.
DisallowedHeaders *v33.ListStringMatcher
// contains filtered or unexported fields
}
func (HeaderForwardingRules_builder) Build ¶
func (b0 HeaderForwardingRules_builder) Build() *HeaderForwardingRules
type MetadataOptions ¶
type MetadataOptions struct {
// Describes which typed or untyped filter dynamic metadata namespaces to forward to
// the external processing server.
ForwardingNamespaces *MetadataOptions_MetadataNamespaces `protobuf:"bytes,1,opt,name=forwarding_namespaces,json=forwardingNamespaces,proto3" json:"forwarding_namespaces,omitempty"`
// Describes which typed or untyped filter dynamic metadata namespaces to accept from
// the external processing server. Set to empty or leave unset to disallow writing
// any received dynamic metadata. Receiving of typed metadata is not supported.
ReceivingNamespaces *MetadataOptions_MetadataNamespaces `protobuf:"bytes,2,opt,name=receiving_namespaces,json=receivingNamespaces,proto3" json:"receiving_namespaces,omitempty"`
// Describes which cluster metadata namespaces to forward to
// the external processing server.
// .. note::
// This is the least specific metadata. Should there be any namespace collision,
// cluster level metadata can be overridden by filter metadata.
ClusterMetadataForwardingNamespaces *MetadataOptions_MetadataNamespaces `` /* 170-byte string literal not displayed */
// contains filtered or unexported fields
}
The MetadataOptions structure defines options for the sending and receiving of dynamic metadata. Specifically, which namespaces to send to the server, whether metadata returned by the server may be written, and how that metadata may be written.
func (*MetadataOptions) ClearClusterMetadataForwardingNamespaces ¶
func (x *MetadataOptions) ClearClusterMetadataForwardingNamespaces()
func (*MetadataOptions) ClearForwardingNamespaces ¶
func (x *MetadataOptions) ClearForwardingNamespaces()
func (*MetadataOptions) ClearReceivingNamespaces ¶
func (x *MetadataOptions) ClearReceivingNamespaces()
func (*MetadataOptions) GetClusterMetadataForwardingNamespaces ¶
func (x *MetadataOptions) GetClusterMetadataForwardingNamespaces() *MetadataOptions_MetadataNamespaces
func (*MetadataOptions) GetForwardingNamespaces ¶
func (x *MetadataOptions) GetForwardingNamespaces() *MetadataOptions_MetadataNamespaces
func (*MetadataOptions) GetReceivingNamespaces ¶
func (x *MetadataOptions) GetReceivingNamespaces() *MetadataOptions_MetadataNamespaces
func (*MetadataOptions) HasClusterMetadataForwardingNamespaces ¶
func (x *MetadataOptions) HasClusterMetadataForwardingNamespaces() bool
func (*MetadataOptions) HasForwardingNamespaces ¶
func (x *MetadataOptions) HasForwardingNamespaces() bool
func (*MetadataOptions) HasReceivingNamespaces ¶
func (x *MetadataOptions) HasReceivingNamespaces() bool
func (*MetadataOptions) ProtoMessage ¶
func (*MetadataOptions) ProtoMessage()
func (*MetadataOptions) ProtoReflect ¶
func (x *MetadataOptions) ProtoReflect() protoreflect.Message
func (*MetadataOptions) Reset ¶
func (x *MetadataOptions) Reset()
func (*MetadataOptions) SetClusterMetadataForwardingNamespaces ¶
func (x *MetadataOptions) SetClusterMetadataForwardingNamespaces(v *MetadataOptions_MetadataNamespaces)
func (*MetadataOptions) SetForwardingNamespaces ¶
func (x *MetadataOptions) SetForwardingNamespaces(v *MetadataOptions_MetadataNamespaces)
func (*MetadataOptions) SetReceivingNamespaces ¶
func (x *MetadataOptions) SetReceivingNamespaces(v *MetadataOptions_MetadataNamespaces)
func (*MetadataOptions) String ¶
func (x *MetadataOptions) String() string
type MetadataOptions_MetadataNamespaces ¶
type MetadataOptions_MetadataNamespaces struct {
// Specifies a list of metadata namespaces whose values, if present,
// will be passed to the “ext_proc“ service as an opaque “protobuf::Struct“.
Untyped []string `protobuf:"bytes,1,rep,name=untyped,proto3" json:"untyped,omitempty"`
// Specifies a list of metadata namespaces whose values, if present,
// will be passed to the “ext_proc“ service as a “protobuf::Any“. This allows
// envoy and the external processing server to share the protobuf message
// definition for safe parsing.
Typed []string `protobuf:"bytes,2,rep,name=typed,proto3" json:"typed,omitempty"`
// contains filtered or unexported fields
}
func (*MetadataOptions_MetadataNamespaces) GetTyped ¶
func (x *MetadataOptions_MetadataNamespaces) GetTyped() []string
func (*MetadataOptions_MetadataNamespaces) GetUntyped ¶
func (x *MetadataOptions_MetadataNamespaces) GetUntyped() []string
func (*MetadataOptions_MetadataNamespaces) ProtoMessage ¶
func (*MetadataOptions_MetadataNamespaces) ProtoMessage()
func (*MetadataOptions_MetadataNamespaces) ProtoReflect ¶
func (x *MetadataOptions_MetadataNamespaces) ProtoReflect() protoreflect.Message
func (*MetadataOptions_MetadataNamespaces) Reset ¶
func (x *MetadataOptions_MetadataNamespaces) Reset()
func (*MetadataOptions_MetadataNamespaces) SetTyped ¶
func (x *MetadataOptions_MetadataNamespaces) SetTyped(v []string)
func (*MetadataOptions_MetadataNamespaces) SetUntyped ¶
func (x *MetadataOptions_MetadataNamespaces) SetUntyped(v []string)
func (*MetadataOptions_MetadataNamespaces) String ¶
func (x *MetadataOptions_MetadataNamespaces) String() string
type MetadataOptions_MetadataNamespaces_builder ¶
type MetadataOptions_MetadataNamespaces_builder struct {
// Specifies a list of metadata namespaces whose values, if present,
// will be passed to the “ext_proc“ service as an opaque “protobuf::Struct“.
Untyped []string
// Specifies a list of metadata namespaces whose values, if present,
// will be passed to the “ext_proc“ service as a “protobuf::Any“. This allows
// envoy and the external processing server to share the protobuf message
// definition for safe parsing.
Typed []string
// contains filtered or unexported fields
}
func (MetadataOptions_MetadataNamespaces_builder) Build ¶
func (b0 MetadataOptions_MetadataNamespaces_builder) Build() *MetadataOptions_MetadataNamespaces
type MetadataOptions_builder ¶
type MetadataOptions_builder struct {
// Describes which typed or untyped filter dynamic metadata namespaces to forward to
// the external processing server.
ForwardingNamespaces *MetadataOptions_MetadataNamespaces
// Describes which typed or untyped filter dynamic metadata namespaces to accept from
// the external processing server. Set to empty or leave unset to disallow writing
// any received dynamic metadata. Receiving of typed metadata is not supported.
ReceivingNamespaces *MetadataOptions_MetadataNamespaces
// Describes which cluster metadata namespaces to forward to
// the external processing server.
// .. note::
// This is the least specific metadata. Should there be any namespace collision,
// cluster level metadata can be overridden by filter metadata.
ClusterMetadataForwardingNamespaces *MetadataOptions_MetadataNamespaces
// contains filtered or unexported fields
}
func (MetadataOptions_builder) Build ¶
func (b0 MetadataOptions_builder) Build() *MetadataOptions
type ProcessingMode ¶
type ProcessingMode struct {
// How to handle the request header.
//
// .. note::
//
// This field is ignored in
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`,
// since mode overrides can only affect messages exchanged after the request header is
// processed.
//
// Defaults to “SEND“.
RequestHeaderMode ProcessingMode_HeaderSendMode `` /* 192-byte string literal not displayed */
// How to handle the response header.
//
// Defaults to “SEND“.
ResponseHeaderMode ProcessingMode_HeaderSendMode `` /* 195-byte string literal not displayed */
// How to handle the request body.
//
// Defaults to “NONE“.
RequestBodyMode ProcessingMode_BodySendMode `` /* 184-byte string literal not displayed */
// How to handle the response body.
//
// Defaults to “NONE“.
ResponseBodyMode ProcessingMode_BodySendMode `` /* 187-byte string literal not displayed */
// How to handle the request trailers.
//
// Defaults to “SKIP“.
RequestTrailerMode ProcessingMode_HeaderSendMode `` /* 195-byte string literal not displayed */
// How to handle the response trailers.
//
// Defaults to “SKIP“.
ResponseTrailerMode ProcessingMode_HeaderSendMode `` /* 198-byte string literal not displayed */
// contains filtered or unexported fields
}
[#next-free-field: 7]
func (*ProcessingMode) GetRequestBodyMode ¶
func (x *ProcessingMode) GetRequestBodyMode() ProcessingMode_BodySendMode
func (*ProcessingMode) GetRequestHeaderMode ¶
func (x *ProcessingMode) GetRequestHeaderMode() ProcessingMode_HeaderSendMode
func (*ProcessingMode) GetRequestTrailerMode ¶
func (x *ProcessingMode) GetRequestTrailerMode() ProcessingMode_HeaderSendMode
func (*ProcessingMode) GetResponseBodyMode ¶
func (x *ProcessingMode) GetResponseBodyMode() ProcessingMode_BodySendMode
func (*ProcessingMode) GetResponseHeaderMode ¶
func (x *ProcessingMode) GetResponseHeaderMode() ProcessingMode_HeaderSendMode
func (*ProcessingMode) GetResponseTrailerMode ¶
func (x *ProcessingMode) GetResponseTrailerMode() ProcessingMode_HeaderSendMode
func (*ProcessingMode) ProtoMessage ¶
func (*ProcessingMode) ProtoMessage()
func (*ProcessingMode) ProtoReflect ¶
func (x *ProcessingMode) ProtoReflect() protoreflect.Message
func (*ProcessingMode) Reset ¶
func (x *ProcessingMode) Reset()
func (*ProcessingMode) SetRequestBodyMode ¶
func (x *ProcessingMode) SetRequestBodyMode(v ProcessingMode_BodySendMode)
func (*ProcessingMode) SetRequestHeaderMode ¶
func (x *ProcessingMode) SetRequestHeaderMode(v ProcessingMode_HeaderSendMode)
func (*ProcessingMode) SetRequestTrailerMode ¶
func (x *ProcessingMode) SetRequestTrailerMode(v ProcessingMode_HeaderSendMode)
func (*ProcessingMode) SetResponseBodyMode ¶
func (x *ProcessingMode) SetResponseBodyMode(v ProcessingMode_BodySendMode)
func (*ProcessingMode) SetResponseHeaderMode ¶
func (x *ProcessingMode) SetResponseHeaderMode(v ProcessingMode_HeaderSendMode)
func (*ProcessingMode) SetResponseTrailerMode ¶
func (x *ProcessingMode) SetResponseTrailerMode(v ProcessingMode_HeaderSendMode)
func (*ProcessingMode) String ¶
func (x *ProcessingMode) String() string
type ProcessingMode_BodySendMode ¶
type ProcessingMode_BodySendMode int32
Control how the request and response bodies are handled.
When body mutation by the external processor is enabled, the ext_proc filter will always remove the content length header in the following four cases, unless :ref:`allow_content_length_header <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_content_length_header>` is enabled. This is because the content length cannot be guaranteed to be set correctly:
1) “STREAMED“ BodySendMode: header processing completes before body mutation comes back. 2) “BUFFERED_PARTIAL“ BodySendMode: body is buffered and could be injected in different phases. 3) “BUFFERED“ BodySendMode + “SKIP“ HeaderSendMode: header processing (e.g., update content-length) is skipped. 4) “FULL_DUPLEX_STREAMED“ BodySendMode: header processing completes before body mutation comes back.
In Envoy's HTTP/1 codec implementation, removing content length will enable chunked transfer encoding whenever feasible. The recipient (either client or server) must be able to parse and decode the chunked transfer coding (see `details in RFC9112 <https://tools.ietf.org/html/rfc9112#section-7.1>`_).
In “BUFFERED“ BodySendMode + “SEND“ HeaderSendMode, content length header is allowed but it is the external processor's responsibility to set the content length correctly matched to the length of the mutated body. If they don't match, the corresponding body mutation will be rejected and a local reply will be sent with an error message.
const ( // Do not send the body at all. This is the default. ProcessingMode_NONE ProcessingMode_BodySendMode = 0 // Stream the body to the server in pieces as they are seen. ProcessingMode_STREAMED ProcessingMode_BodySendMode = 1 // Buffer the message body in memory and send the entire body at once. // If the body exceeds the configured buffer limit, then the // downstream system will receive an error. ProcessingMode_BUFFERED ProcessingMode_BodySendMode = 2 // Buffer the message body in memory and send the entire body in one // chunk. If the body exceeds the configured buffer limit, then the body contents // up to the buffer limit will be sent. ProcessingMode_BUFFERED_PARTIAL ProcessingMode_BodySendMode = 3 // The ext_proc client (the data plane) streams the body to the server in pieces as they arrive. // // 1. The server may choose to buffer any number of chunks of data before processing them. // After it finishes buffering, the server processes the buffered data. Then it splits the // processed data into any number of chunks, and streams them back to the ext_proc client one // by one. The server may continuously do so until the complete body is processed. The // individual response chunk size is recommended to be no greater than 64K bytes, or // :ref:`max_receive_message_length <envoy_v3_api_field_config.core.v3.GrpcService.EnvoyGrpc.max_receive_message_length>` // if EnvoyGrpc is used. // // 2. The server may also choose to buffer the entire message, including the headers (if header // mode is “SEND“), the entire body, and the trailers (if present), before sending back any // response. The server response has to maintain the headers-body-trailers ordering. // // 3. Note that the server might also choose not to buffer data. That is, upon receiving a body // request, it could process the data and send back a body response immediately. // // In this body mode: // // - The corresponding trailer mode has to be set to “SEND“. // - The client will send body and trailers (if present) to the server as they arrive. Sending // the trailers (if present) is to inform the server that the complete body has arrived. In // case there are no trailers, then the client will set // :ref:`end_of_stream <envoy_v3_api_field_service.ext_proc.v3.HttpBody.end_of_stream>` // to “true“ as part of the last body chunk request to notify the server that no other data // is to be sent. // - The server needs to send // :ref:`StreamedBodyResponse <envoy_v3_api_msg_service.ext_proc.v3.StreamedBodyResponse>` // to the client in the body response. // - The client will stream the body chunks in the responses from the server to the // upstream/downstream as they arrive. ProcessingMode_FULL_DUPLEX_STREAMED ProcessingMode_BodySendMode = 4 // [#not-implemented-hide:] // A mode for gRPC traffic. This is similar to “FULL_DUPLEX_STREAMED“, except that instead of // sending raw chunks of the HTTP/2 DATA frames, the ext_proc client will de-frame the // individual gRPC messages inside the HTTP/2 DATA frames, and as each message is de-framed, it // will be sent to the ext_proc server as a // :ref:`request_body <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.request_body>` // or // :ref:`response_body <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.response_body>`. // The ext_proc server will stream back individual gRPC messages in the // :ref:`StreamedBodyResponse <envoy_v3_api_msg_service.ext_proc.v3.StreamedBodyResponse>` // field, but the number of messages sent by the ext_proc server does not need to equal the // number of messages sent by the data plane. This allows the ext_proc server to change the // number of messages sent on the stream. In this mode, the client will send body and trailers // to the server as they arrive. ProcessingMode_GRPC ProcessingMode_BodySendMode = 5 )
func (ProcessingMode_BodySendMode) Descriptor ¶
func (ProcessingMode_BodySendMode) Descriptor() protoreflect.EnumDescriptor
func (ProcessingMode_BodySendMode) Enum ¶
func (x ProcessingMode_BodySendMode) Enum() *ProcessingMode_BodySendMode
func (ProcessingMode_BodySendMode) Number ¶
func (x ProcessingMode_BodySendMode) Number() protoreflect.EnumNumber
func (ProcessingMode_BodySendMode) String ¶
func (x ProcessingMode_BodySendMode) String() string
func (ProcessingMode_BodySendMode) Type ¶
func (ProcessingMode_BodySendMode) Type() protoreflect.EnumType
type ProcessingMode_HeaderSendMode ¶
type ProcessingMode_HeaderSendMode int32
Control how headers and trailers are handled.
const ( // When used to configure the ext_proc filter // :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`, // the default “HeaderSendMode“ depends on which part of the message is being processed. By // default, request and response headers are sent, while trailers are skipped. // // When used in // :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` // or // :ref:`allowed_override_modes <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allowed_override_modes>`, // a value of “DEFAULT“ indicates that there is no change from the behavior that is configured // for the filter in // :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`. ProcessingMode_DEFAULT ProcessingMode_HeaderSendMode = 0 // Send the header or trailer. ProcessingMode_SEND ProcessingMode_HeaderSendMode = 1 // Do not send the header or trailer. ProcessingMode_SKIP ProcessingMode_HeaderSendMode = 2 )
func (ProcessingMode_HeaderSendMode) Descriptor ¶
func (ProcessingMode_HeaderSendMode) Descriptor() protoreflect.EnumDescriptor
func (ProcessingMode_HeaderSendMode) Enum ¶
func (x ProcessingMode_HeaderSendMode) Enum() *ProcessingMode_HeaderSendMode
func (ProcessingMode_HeaderSendMode) Number ¶
func (x ProcessingMode_HeaderSendMode) Number() protoreflect.EnumNumber
func (ProcessingMode_HeaderSendMode) String ¶
func (x ProcessingMode_HeaderSendMode) String() string
func (ProcessingMode_HeaderSendMode) Type ¶
func (ProcessingMode_HeaderSendMode) Type() protoreflect.EnumType
type ProcessingMode_builder ¶
type ProcessingMode_builder struct {
// How to handle the request header.
//
// .. note::
//
// This field is ignored in
// :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`,
// since mode overrides can only affect messages exchanged after the request header is
// processed.
//
// Defaults to “SEND“.
RequestHeaderMode ProcessingMode_HeaderSendMode
// How to handle the response header.
//
// Defaults to “SEND“.
ResponseHeaderMode ProcessingMode_HeaderSendMode
// How to handle the request body.
//
// Defaults to “NONE“.
RequestBodyMode ProcessingMode_BodySendMode
// How to handle the response body.
//
// Defaults to “NONE“.
ResponseBodyMode ProcessingMode_BodySendMode
// How to handle the request trailers.
//
// Defaults to “SKIP“.
RequestTrailerMode ProcessingMode_HeaderSendMode
// How to handle the response trailers.
//
// Defaults to “SKIP“.
ResponseTrailerMode ProcessingMode_HeaderSendMode
// contains filtered or unexported fields
}
func (ProcessingMode_builder) Build ¶
func (b0 ProcessingMode_builder) Build() *ProcessingMode
Source Files
¶
- ext_proc.pb.go
- processing_mode.pb.go