@@ -69,6 +69,7 @@ type ExtProcProcessingMode struct {
6969// +kubebuilder:validation:XValidation:message="BackendRefs only supports Service, ServiceImport, and Backend kind.",rule="has(self.backendRefs) ? self.backendRefs.all(f, f.kind == 'Service' || f.kind == 'ServiceImport' || f.kind == 'Backend') : true"
7070// +kubebuilder:validation:XValidation:message="BackendRefs only supports Core, multicluster.x-k8s.io, and gateway.envoyproxy.io groups.",rule="has(self.backendRefs) ? (self.backendRefs.all(f, f.group == \"\" || f.group == 'multicluster.x-k8s.io' || f.group == 'gateway.envoyproxy.io')) : true"
7171// +kubebuilder:validation:XValidation:message="If FullDuplexStreamed body processing mode is used, FailOpen must be false.",rule="!(has(self.failOpen) && self.failOpen == true && has(self.processingMode) && ((has(self.processingMode.request) && has(self.processingMode.request.body) && self.processingMode.request.body == 'FullDuplexStreamed') || (has(self.processingMode.response) && has(self.processingMode.response.body) && self.processingMode.response.body == 'FullDuplexStreamed')))"
72+ // +kubebuilder:validation:XValidation:message="If shadowMode is enabled, body processing mode must be Streamed or unset.",rule="!(has(self.shadowMode) && self.shadowMode == true && has(self.processingMode) && ((has(self.processingMode.request) && has(self.processingMode.request.body) && self.processingMode.request.body != 'Streamed') || (has(self.processingMode.response) && has(self.processingMode.response.body) && self.processingMode.response.body != 'Streamed')))"
7273type ExtProc struct {
7374 BackendCluster `json:",inline"`
7475
@@ -97,6 +98,15 @@ type ExtProc struct {
9798 // +optional
9899 ProcessingMode * ExtProcProcessingMode `json:"processingMode,omitempty"`
99100
101+ // ShadowMode sets if envoy gateway should treat this external processor as "send and go".
102+ // When enabled, Envoy forwards request/response data to the external processor but does
103+ // not wait for or apply any response from it. This maps to Envoy's `observability_mode`
104+ // on the ext_proc filter.
105+ // Defaults to false.
106+ //
107+ // +optional
108+ ShadowMode * bool `json:"shadowMode,omitempty"`
109+
100110 // Metadata defines options related to the sending and receiving of dynamic metadata.
101111 // These options define which metadata namespaces would be sent to the processor and which dynamic metadata
102112 // namespaces the processor would be permitted to emit metadata to.
0 commit comments