Skip to content

Commit 1c24edb

Browse files
committed
change observabilityMode to shadowMode
Signed-off-by: Jake Oliver <jake@truelayer.com>
1 parent 8889d4b commit 1c24edb

12 files changed

Lines changed: 54 additions & 41 deletions

File tree

api/v1alpha1/ext_proc_types.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +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 observabilityMode is enabled, body processing mode must be Streamed or unset.",rule="!(has(self.observabilityMode) && self.observabilityMode == 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')))"
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')))"
7373
type ExtProc struct {
7474
BackendCluster `json:",inline"`
7575

@@ -98,10 +98,14 @@ type ExtProc struct {
9898
// +optional
9999
ProcessingMode *ExtProcProcessingMode `json:"processingMode,omitempty"`
100100

101-
// ObservabilityMode sets if envoy gateway should treat this external processor as "send and go"
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.
102106
//
103107
// +optional
104-
ObservabilityMode *bool `json:"observabilityMode,omitempty"`
108+
ShadowMode *bool `json:"shadowMode,omitempty"`
105109

106110
// Metadata defines options related to the sending and receiving of dynamic metadata.
107111
// These options define which metadata namespaces would be sent to the processor and which dynamic metadata

api/v1alpha1/zz_generated.deepcopy.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1462,10 +1462,6 @@ spec:
14621462
Envoy HTTP filter namespaces
14631463
rule: self.all(f, !f.startsWith('envoy.filters.http'))
14641464
type: object
1465-
observabilityMode:
1466-
description: ObservabilityMode sets if envoy gateway should
1467-
treat this external processor as "send and go"
1468-
type: boolean
14691465
processingMode:
14701466
description: |-
14711467
ProcessingMode defines how request and response body is processed
@@ -1525,6 +1521,14 @@ spec:
15251521
type: string
15261522
type: object
15271523
type: object
1524+
shadowMode:
1525+
description: |-
1526+
ShadowMode sets if envoy gateway should treat this external processor as "send and go".
1527+
When enabled, Envoy forwards request/response data to the external processor but does
1528+
not wait for or apply any response from it. This maps to Envoy's `observability_mode`
1529+
on the ext_proc filter.
1530+
Defaults to false.
1531+
type: boolean
15281532
type: object
15291533
x-kubernetes-validations:
15301534
- message: BackendRefs must be used, backendRef is not supported.
@@ -1546,13 +1550,13 @@ spec:
15461550
&& self.processingMode.request.body == ''FullDuplexStreamed'')
15471551
|| (has(self.processingMode.response) && has(self.processingMode.response.body)
15481552
&& self.processingMode.response.body == ''FullDuplexStreamed'')))'
1549-
- message: If observabilityMode is enabled, body processing mode
1550-
must be Streamed or unset.
1551-
rule: '!(has(self.observabilityMode) && self.observabilityMode
1552-
== true && has(self.processingMode) && ((has(self.processingMode.request)
1553-
&& has(self.processingMode.request.body) && self.processingMode.request.body
1554-
!= ''Streamed'') || (has(self.processingMode.response) && has(self.processingMode.response.body)
1555-
&& self.processingMode.response.body != ''Streamed'')))'
1553+
- message: If shadowMode is enabled, body processing mode must be
1554+
Streamed or unset.
1555+
rule: '!(has(self.shadowMode) && self.shadowMode == true && has(self.processingMode)
1556+
&& ((has(self.processingMode.request) && has(self.processingMode.request.body)
1557+
&& self.processingMode.request.body != ''Streamed'') || (has(self.processingMode.response)
1558+
&& has(self.processingMode.response.body) && self.processingMode.response.body
1559+
!= ''Streamed'')))'
15561560
maxItems: 16
15571561
type: array
15581562
lua:

charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,10 +1461,6 @@ spec:
14611461
Envoy HTTP filter namespaces
14621462
rule: self.all(f, !f.startsWith('envoy.filters.http'))
14631463
type: object
1464-
observabilityMode:
1465-
description: ObservabilityMode sets if envoy gateway should
1466-
treat this external processor as "send and go"
1467-
type: boolean
14681464
processingMode:
14691465
description: |-
14701466
ProcessingMode defines how request and response body is processed
@@ -1524,6 +1520,14 @@ spec:
15241520
type: string
15251521
type: object
15261522
type: object
1523+
shadowMode:
1524+
description: |-
1525+
ShadowMode sets if envoy gateway should treat this external processor as "send and go".
1526+
When enabled, Envoy forwards request/response data to the external processor but does
1527+
not wait for or apply any response from it. This maps to Envoy's `observability_mode`
1528+
on the ext_proc filter.
1529+
Defaults to false.
1530+
type: boolean
15271531
type: object
15281532
x-kubernetes-validations:
15291533
- message: BackendRefs must be used, backendRef is not supported.
@@ -1545,13 +1549,13 @@ spec:
15451549
&& self.processingMode.request.body == ''FullDuplexStreamed'')
15461550
|| (has(self.processingMode.response) && has(self.processingMode.response.body)
15471551
&& self.processingMode.response.body == ''FullDuplexStreamed'')))'
1548-
- message: If observabilityMode is enabled, body processing mode
1549-
must be Streamed or unset.
1550-
rule: '!(has(self.observabilityMode) && self.observabilityMode
1551-
== true && has(self.processingMode) && ((has(self.processingMode.request)
1552-
&& has(self.processingMode.request.body) && self.processingMode.request.body
1553-
!= ''Streamed'') || (has(self.processingMode.response) && has(self.processingMode.response.body)
1554-
&& self.processingMode.response.body != ''Streamed'')))'
1552+
- message: If shadowMode is enabled, body processing mode must be
1553+
Streamed or unset.
1554+
rule: '!(has(self.shadowMode) && self.shadowMode == true && has(self.processingMode)
1555+
&& ((has(self.processingMode.request) && has(self.processingMode.request.body)
1556+
&& self.processingMode.request.body != ''Streamed'') || (has(self.processingMode.response)
1557+
&& has(self.processingMode.response.body) && self.processingMode.response.body
1558+
!= ''Streamed'')))'
15551559
maxItems: 16
15561560
type: array
15571561
lua:

internal/gatewayapi/envoyextensionpolicy.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -851,8 +851,8 @@ func (t *Translator) buildExtProc(
851851
extProcIR.MessageTimeout = ir.MetaV1DurationPtr(d)
852852
}
853853

854-
if extProc.ObservabilityMode != nil {
855-
extProcIR.ObservabilityMode = extProc.ObservabilityMode
854+
if extProc.ShadowMode != nil {
855+
extProcIR.ShadowMode = extProc.ShadowMode
856856
}
857857

858858
if extProc.FailOpen != nil {

internal/gatewayapi/testdata/envoyextensionpolicy-observabilitymode.in.yaml renamed to internal/gatewayapi/testdata/envoyextensionpolicy-shadowmode.in.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ envoyExtensionPolicies:
7777
- backendRefs:
7878
- Name: grpc-backend
7979
Port: 9000
80-
observabilityMode: true
80+
shadowMode: true
8181
processingMode:
8282
request:
8383
body: Streamed

internal/gatewayapi/testdata/envoyextensionpolicy-observabilitymode.out.yaml renamed to internal/gatewayapi/testdata/envoyextensionpolicy-shadowmode.out.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ envoyExtensionPolicies:
99
- backendRefs:
1010
- name: grpc-backend
1111
port: 9000
12-
observabilityMode: true
12+
shadowMode: true
1313
processingMode:
1414
request:
1515
body: Streamed
@@ -220,7 +220,7 @@ xdsIR:
220220
protocol: GRPC
221221
weight: 1
222222
name: envoyextensionpolicy/default/policy-for-http-route/extproc/0
223-
observabilityMode: true
223+
shadowMode: true
224224
requestBodyProcessingMode: Streamed
225225
requestHeaderProcessing: true
226226
responseBodyProcessingMode: Streamed

internal/ir/xds.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3462,8 +3462,9 @@ type ExtProc struct {
34623462
// MessageTimeout is the timeout for a response to be returned from the external processor
34633463
MessageTimeout *metav1.Duration `json:"messageTimeout,omitempty" yaml:"messageTimeout,omitempty"`
34643464

3465-
// ObservabilityMode sets if envoy gateway should treat this external processor as "send and go".
3466-
ObservabilityMode *bool `json:"observabilityMode,omitempty" yaml:"observabilityMode,omitempty"`
3465+
// ShadowMode sets if envoy gateway should treat this external processor as "send and go".
3466+
// Maps to Envoy's `observability_mode` on the ext_proc filter.
3467+
ShadowMode *bool `json:"shadowMode,omitempty" yaml:"shadowMode,omitempty"`
34673468

34683469
// FailOpen defines if requests or responses that cannot be processed due to connectivity to the
34693470
// external processor are terminated or passed-through.

internal/ir/zz_generated.deepcopy.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/xds/translator/extproc.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ func extProcConfig(extProc *ir.ExtProc) (*extprocv3.ExternalProcessor, error) {
106106

107107
config.ProcessingMode = buildProcessingMode(extProc)
108108

109-
if extProc.ObservabilityMode != nil {
110-
config.ObservabilityMode = *extProc.ObservabilityMode
109+
if extProc.ShadowMode != nil {
110+
config.ObservabilityMode = *extProc.ShadowMode
111111
}
112112

113113
if extProc.FailOpen != nil {

0 commit comments

Comments
 (0)