extproc

package
v1.16.18 Latest Latest
Warning

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

Go to latest
Published: Jul 15, 2024 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var File_github_com_solo_io_gloo_projects_gloo_api_v1_enterprise_options_extproc_extproc_proto protoreflect.FileDescriptor

Functions

This section is empty.

Types

type GrpcService

type GrpcService struct {

	// A reference to the Upstream representing the external processor gRPC server.
	// See https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto
	// for details.
	ExtProcServerRef *core.ResourceRef `protobuf:"bytes,1,opt,name=ext_proc_server_ref,json=extProcServerRef,proto3" json:"ext_proc_server_ref,omitempty"`
	// The `:authority` header in the grpc request. If this field is not set, the authority header value will be the
	// cluster name.
	// Note that this authority does not override the SNI. The SNI is provided by the transport socket of the cluster.
	Authority *wrappers.StringValue `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"`
	// Indicates the retry policy for re-establishing the gRPC stream
	// This field is optional. If max interval is not provided, it will be set to ten times the provided base interval.
	// Currently only supported for xDS gRPC streams.
	// If not set, xDS gRPC streams default base interval:500ms, maximum interval:30s will be applied.
	RetryPolicy *v32.RetryPolicy `protobuf:"bytes,3,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"`
	// The timeout for the gRPC request. This is the timeout for a specific request.
	Timeout *duration.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// Additional metadata to include in streams initiated to the GrpcService. This can be used for
	// scenarios in which additional ad hoc authorization headers (e.g. `x-foo-bar: baz-key`) are to
	// be injected. For more information, including details on header value syntax, see the
	// documentation on [custom request headers](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#config-http-conn-man-headers-custom-request-headers).
	InitialMetadata []*v32.HeaderValue `protobuf:"bytes,5,rep,name=initial_metadata,json=initialMetadata,proto3" json:"initial_metadata,omitempty"`
	// contains filtered or unexported fields
}

func (*GrpcService) Clone

func (m *GrpcService) Clone() proto.Message

Clone function

func (*GrpcService) Descriptor deprecated

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

Deprecated: Use GrpcService.ProtoReflect.Descriptor instead.

func (*GrpcService) Equal

func (m *GrpcService) Equal(that interface{}) bool

Equal function

func (*GrpcService) GetAuthority

func (x *GrpcService) GetAuthority() *wrappers.StringValue

func (*GrpcService) GetExtProcServerRef

func (x *GrpcService) GetExtProcServerRef() *core.ResourceRef

func (*GrpcService) GetInitialMetadata

func (x *GrpcService) GetInitialMetadata() []*v32.HeaderValue

func (*GrpcService) GetRetryPolicy

func (x *GrpcService) GetRetryPolicy() *v32.RetryPolicy

func (*GrpcService) GetTimeout

func (x *GrpcService) GetTimeout() *duration.Duration

func (*GrpcService) Hash

func (m *GrpcService) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*GrpcService) ProtoMessage

func (*GrpcService) ProtoMessage()

func (*GrpcService) ProtoReflect

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

func (*GrpcService) Reset

func (x *GrpcService) Reset()

func (*GrpcService) String

func (x *GrpcService) String() string

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.
	// NOT CURRENTLY IMPLEMENTED.
	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. See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_proc/v3/ext_proc.proto#extensions-filters-http-ext-proc-v3-headerforwardingrules for details.

func (*HeaderForwardingRules) Clone

func (m *HeaderForwardingRules) Clone() proto.Message

Clone function

func (*HeaderForwardingRules) Descriptor deprecated

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

Deprecated: Use HeaderForwardingRules.ProtoReflect.Descriptor instead.

func (*HeaderForwardingRules) Equal

func (m *HeaderForwardingRules) Equal(that interface{}) bool

Equal function

func (*HeaderForwardingRules) GetAllowedHeaders

func (x *HeaderForwardingRules) GetAllowedHeaders() *v33.ListStringMatcher

func (*HeaderForwardingRules) GetDisallowedHeaders

func (x *HeaderForwardingRules) GetDisallowedHeaders() *v33.ListStringMatcher

func (*HeaderForwardingRules) Hash

func (m *HeaderForwardingRules) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*HeaderForwardingRules) ProtoMessage

func (*HeaderForwardingRules) ProtoMessage()

func (*HeaderForwardingRules) ProtoReflect

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

func (*HeaderForwardingRules) Reset

func (x *HeaderForwardingRules) Reset()

func (*HeaderForwardingRules) String

func (x *HeaderForwardingRules) String() string

type Overrides

type Overrides struct {

	// Set a different processing mode for this virtual host or route than the default.
	ProcessingMode *v3.ProcessingMode `protobuf:"bytes,1,opt,name=processing_mode,json=processingMode,proto3" json:"processing_mode,omitempty"`
	// NOT CURRENTLY IMPLEMENTED.
	// Set a different asynchronous processing option than the default.
	AsyncMode *wrappers.BoolValue `protobuf:"bytes,2,opt,name=async_mode,json=asyncMode,proto3" json:"async_mode,omitempty"`
	// NOT FINALIZED UPSTREAM use at your own upgrade risk
	// 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 FINALIZED UPSTREAM use at your own upgrade risk
	// 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 virtual host or route than the default.
	GrpcService *GrpcService `protobuf:"bytes,5,opt,name=grpc_service,json=grpcService,proto3" json:"grpc_service,omitempty"`
	// Specifies a list of metadata namespaces whose values, if present, will be passed to the
	// ext_proc service as an opaque *protobuf::Struct*.
	MetadataContextNamespaces []string `` /* 138-byte string literal not displayed */
	// Specifies a list of metadata namespaces whose values, if present, will be passed to the
	// ext_proc service. :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>` is passed as an “protobuf::Any“.
	//
	// It works in a way similar to “metadata_context_namespaces“ but allows envoy and external processing server to share the protobuf message definition
	// in order to do a safe parsing.
	TypedMetadataContextNamespaces []string `` /* 155-byte string literal not displayed */
	// contains filtered or unexported fields
}

func (*Overrides) Clone

func (m *Overrides) Clone() proto.Message

Clone function

func (*Overrides) Descriptor deprecated

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

Deprecated: Use Overrides.ProtoReflect.Descriptor instead.

func (*Overrides) Equal

func (m *Overrides) Equal(that interface{}) bool

Equal function

func (*Overrides) GetAsyncMode

func (x *Overrides) GetAsyncMode() *wrappers.BoolValue

func (*Overrides) GetGrpcService

func (x *Overrides) GetGrpcService() *GrpcService

func (*Overrides) GetMetadataContextNamespaces added in v1.15.5

func (x *Overrides) GetMetadataContextNamespaces() []string

func (*Overrides) GetProcessingMode

func (x *Overrides) GetProcessingMode() *v3.ProcessingMode

func (*Overrides) GetRequestAttributes

func (x *Overrides) GetRequestAttributes() []string

func (*Overrides) GetResponseAttributes

func (x *Overrides) GetResponseAttributes() []string

func (*Overrides) GetTypedMetadataContextNamespaces added in v1.15.5

func (x *Overrides) GetTypedMetadataContextNamespaces() []string

func (*Overrides) Hash

func (m *Overrides) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Overrides) ProtoMessage

func (*Overrides) ProtoMessage()

func (*Overrides) ProtoReflect

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

func (*Overrides) Reset

func (x *Overrides) Reset()

func (*Overrides) String

func (x *Overrides) String() string

type RouteSettings

type RouteSettings struct {

	// Types that are assignable to Override:
	//
	//	*RouteSettings_Disabled
	//	*RouteSettings_Overrides
	Override isRouteSettings_Override `protobuf_oneof:"override"`
	// contains filtered or unexported fields
}

External processor settings that can be configured on a virtual host or route.

func (*RouteSettings) Clone

func (m *RouteSettings) Clone() proto.Message

Clone function

func (*RouteSettings) Descriptor deprecated

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

Deprecated: Use RouteSettings.ProtoReflect.Descriptor instead.

func (*RouteSettings) Equal

func (m *RouteSettings) Equal(that interface{}) bool

Equal function

func (*RouteSettings) GetDisabled

func (x *RouteSettings) GetDisabled() *wrappers.BoolValue

func (*RouteSettings) GetOverride

func (m *RouteSettings) GetOverride() isRouteSettings_Override

func (*RouteSettings) GetOverrides

func (x *RouteSettings) GetOverrides() *Overrides

func (*RouteSettings) Hash

func (m *RouteSettings) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*RouteSettings) ProtoMessage

func (*RouteSettings) ProtoMessage()

func (*RouteSettings) ProtoReflect

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

func (*RouteSettings) Reset

func (x *RouteSettings) Reset()

func (*RouteSettings) String

func (x *RouteSettings) String() string

type RouteSettings_Disabled

type RouteSettings_Disabled struct {
	// Set to true to disable the External Processing filter for this virtual host or route.
	// Setting this value to false is not supported.
	Disabled *wrappers.BoolValue `protobuf:"bytes,1,opt,name=disabled,proto3,oneof"`
}

type RouteSettings_Overrides

type RouteSettings_Overrides struct {
	// Override specific configuration for this virtual host or route.
	// If a route specifies overrides, it will override the disabled flag of its parent virtual host.
	Overrides *Overrides `protobuf:"bytes,2,opt,name=overrides,proto3,oneof"`
}

type Settings

type Settings struct {

	// Required. Configuration for the gRPC service that the filter will communicate with.
	GrpcService *GrpcService `protobuf:"bytes,1,opt,name=grpc_service,json=grpcService,proto3" json:"grpc_service,omitempty"`
	// Required. Where in the HTTP filter chain to insert the filter.
	FilterStage *filters.FilterStage `protobuf:"bytes,2,opt,name=filter_stage,json=filterStage,proto3" json:"filter_stage,omitempty"`
	// By default, if the gRPC stream cannot be established, or if it is closed
	// prematurely with an error, the filter will fail. Specifically, if the
	// response headers have not yet been delivered, then it will return a 500
	// error downstream. If they have been delivered, then instead the HTTP stream to the
	// downstream client will be reset.
	// With this parameter set to true, however, then if the gRPC stream is prematurely closed
	// or could not be opened, processing continues without error.
	FailureModeAllow *wrappers.BoolValue `protobuf:"bytes,3,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.
	ProcessingMode *v3.ProcessingMode `protobuf:"bytes,4,opt,name=processing_mode,json=processingMode,proto3" json:"processing_mode,omitempty"`
	// NOT CURRENTLY IMPLEMENTED.
	// If true, send each part of the HTTP request or response specified by ProcessingMode
	// asynchronously -- in other words, send the message on the gRPC stream and then continue
	// filter processing. If false, which is the default, suspend filter execution after
	// each message is sent to the remote service and wait up to "message_timeout"
	// for a reply.
	AsyncMode *wrappers.BoolValue `protobuf:"bytes,5,opt,name=async_mode,json=asyncMode,proto3" json:"async_mode,omitempty"`
	// NOT CURRENTLY IMPLEMENTED.
	// Envoy provides a number of [attributes](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#arch-overview-attributes)
	// for expressive policies. Each attribute name provided in this field will be
	// matched against that list and populated in the request_headers message.
	// See the [request attribute documentation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#request-attributes)
	// for the list of supported attributes and their types.
	RequestAttributes []string `protobuf:"bytes,6,rep,name=request_attributes,json=requestAttributes,proto3" json:"request_attributes,omitempty"`
	// NOT CURRENTLY IMPLEMENTED.
	// Envoy provides a number of [attributes](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#arch-overview-attributes)
	// for expressive policies. Each attribute name provided in this field will be
	// matched against that list and populated in the response_headers message.
	// See the [response attribute documentation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes#response-attributes)
	// for the list of supported attributes and their types.
	ResponseAttributes []string `protobuf:"bytes,7,rep,name=response_attributes,json=responseAttributes,proto3" json:"response_attributes,omitempty"`
	// Specifies the timeout for each individual message sent on the stream
	// when the filter is running in synchronous mode. Whenever the proxy 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 asynchronous mode. Value must be at
	// least 0 seconds, and less than or equal to 3600 seconds. Zero is a valid
	// value which means the timer will be triggered immediately. If not
	// configured, default is 200 milliseconds.
	MessageTimeout *duration.Duration `protobuf:"bytes,8,opt,name=message_timeout,json=messageTimeout,proto3" json:"message_timeout,omitempty"`
	// Optional additional prefix to use when emitting statistics. This allows distinguishing
	// between statistics emitted by multiple *ext_proc* filters in an HTTP filter chain.
	StatPrefix *wrappers.StringValue `protobuf:"bytes,9,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
	// [header_prefix](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/bootstrap/v3/bootstrap.proto#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 Envoy's routing decision, as routes can be cached. To also force the
	// route to be recomputed, set the
	// [clear_route_cache](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-commonresponse-clear-route-cache)
	// field to true in the same response.
	MutationRules *v31.HeaderMutationRules `protobuf:"bytes,10,opt,name=mutation_rules,json=mutationRules,proto3" json:"mutation_rules,omitempty"`
	// Specify the upper bound of
	// [override_message_timeout](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#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.
	// Value must be greater than or equal to the `messageTimeout` and less than or equal to 3600 seconds.
	MaxMessageTimeout *duration.Duration `protobuf:"bytes,11,opt,name=max_message_timeout,json=maxMessageTimeout,proto3" json:"max_message_timeout,omitempty"`
	// Prevents clearing the route-cache when the
	// [clear_route_cache](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-commonresponse-clear-route-cache)
	// field is set in an external processor response.
	DisableClearRouteCache *wrappers.BoolValue `` /* 132-byte string literal not displayed */
	// 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,13,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 *_struct.Struct `protobuf:"bytes,14,opt,name=filter_metadata,json=filterMetadata,proto3" json:"filter_metadata,omitempty"`
	// If `allow_mode_override` is set to true, the filter config [processing_mode](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_proc/v3/ext_proc.proto#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
	// [mode_override](https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/ext_proc/v3/external_processor.proto#envoy-v3-api-field-service-ext-proc-v3-processingresponse-mode-override).
	// If not set, `mode_override` API in the response message will be ignored.
	AllowModeOverride *wrappers.BoolValue `protobuf:"bytes,15,opt,name=allow_mode_override,json=allowModeOverride,proto3" json:"allow_mode_override,omitempty"`
	// Specifies a list of metadata namespaces whose values, if present, will be passed to the
	// ext_proc service as an opaque *protobuf::Struct*.
	MetadataContextNamespaces []string `` /* 139-byte string literal not displayed */
	// Specifies a list of metadata namespaces whose values, if present, will be passed to the
	// ext_proc service. :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>` is passed as an “protobuf::Any“.
	//
	// It works in a way similar to “metadata_context_namespaces“ but allows envoy and external processing server to share the protobuf message definition
	// in order to do a safe parsing.
	TypedMetadataContextNamespaces []string `` /* 156-byte string literal not displayed */
	// contains filtered or unexported fields
}

Enterprise-only: Configuration for Envoy's [External Processing Filter](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/ext_proc_filter). The External Processing filter allows for calling out to an external gRPC service at a specified point within a HTTP filter chain. The external service may access and modify various parts of the request or response, and may terminate processing. Envoy's External Processing Filter is considered a work in progress and has an unknown security posture. Users should take care to understand the risks of using this extension before proceeding.

func (*Settings) Clone

func (m *Settings) Clone() proto.Message

Clone function

func (*Settings) Descriptor deprecated

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

Deprecated: Use Settings.ProtoReflect.Descriptor instead.

func (*Settings) Equal

func (m *Settings) Equal(that interface{}) bool

Equal function

func (*Settings) GetAllowModeOverride

func (x *Settings) GetAllowModeOverride() *wrappers.BoolValue

func (*Settings) GetAsyncMode

func (x *Settings) GetAsyncMode() *wrappers.BoolValue

func (*Settings) GetDisableClearRouteCache

func (x *Settings) GetDisableClearRouteCache() *wrappers.BoolValue

func (*Settings) GetFailureModeAllow

func (x *Settings) GetFailureModeAllow() *wrappers.BoolValue

func (*Settings) GetFilterMetadata

func (x *Settings) GetFilterMetadata() *_struct.Struct

func (*Settings) GetFilterStage

func (x *Settings) GetFilterStage() *filters.FilterStage

func (*Settings) GetForwardRules

func (x *Settings) GetForwardRules() *HeaderForwardingRules

func (*Settings) GetGrpcService

func (x *Settings) GetGrpcService() *GrpcService

func (*Settings) GetMaxMessageTimeout

func (x *Settings) GetMaxMessageTimeout() *duration.Duration

func (*Settings) GetMessageTimeout

func (x *Settings) GetMessageTimeout() *duration.Duration

func (*Settings) GetMetadataContextNamespaces added in v1.15.5

func (x *Settings) GetMetadataContextNamespaces() []string

func (*Settings) GetMutationRules

func (x *Settings) GetMutationRules() *v31.HeaderMutationRules

func (*Settings) GetProcessingMode

func (x *Settings) GetProcessingMode() *v3.ProcessingMode

func (*Settings) GetRequestAttributes

func (x *Settings) GetRequestAttributes() []string

func (*Settings) GetResponseAttributes

func (x *Settings) GetResponseAttributes() []string

func (*Settings) GetStatPrefix

func (x *Settings) GetStatPrefix() *wrappers.StringValue

func (*Settings) GetTypedMetadataContextNamespaces added in v1.15.5

func (x *Settings) GetTypedMetadataContextNamespaces() []string

func (*Settings) Hash

func (m *Settings) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Settings) ProtoMessage

func (*Settings) ProtoMessage()

func (*Settings) ProtoReflect

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

func (*Settings) Reset

func (x *Settings) Reset()

func (*Settings) String

func (x *Settings) String() string

Jump to

Keyboard shortcuts

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