diff --git a/api/v1alpha1/healthcheck_types.go b/api/v1alpha1/healthcheck_types.go
index 7fd1cd6a15..0d6d083deb 100644
--- a/api/v1alpha1/healthcheck_types.go
+++ b/api/v1alpha1/healthcheck_types.go
@@ -81,6 +81,13 @@ type PassiveHealthCheck struct {
// +kubebuilder:validation:Maximum=100
// +optional
FailurePercentageThreshold *uint32 `json:"failurePercentageThreshold,omitempty"`
+
+ // AlwaysEjectOneHost defines whether at least one host should be ejected,
+ // regardless of MaxEjectionPercent.
+ //
+ // +kubebuilder:default=false
+ // +optional
+ AlwaysEjectOneHost *bool `json:"alwaysEjectOneHost,omitempty"`
}
// ActiveHealthCheck defines the active health check configuration.
diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go
index cb7bda9be2..47170a2ee8 100644
--- a/api/v1alpha1/zz_generated.deepcopy.go
+++ b/api/v1alpha1/zz_generated.deepcopy.go
@@ -5489,6 +5489,11 @@ func (in *PassiveHealthCheck) DeepCopyInto(out *PassiveHealthCheck) {
*out = new(uint32)
**out = **in
}
+ if in.AlwaysEjectOneHost != nil {
+ in, out := &in.AlwaysEjectOneHost, &out.AlwaysEjectOneHost
+ *out = new(bool)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PassiveHealthCheck.
diff --git a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml
index 123e89c94a..7c737dda6b 100644
--- a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml
+++ b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml
@@ -577,6 +577,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base duration for
diff --git a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml
index c7847dd52d..839f06d720 100644
--- a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml
+++ b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml
@@ -635,6 +635,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base duration
diff --git a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_envoyproxies.yaml b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_envoyproxies.yaml
index 1236d0d613..1ca190ed79 100644
--- a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_envoyproxies.yaml
+++ b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_envoyproxies.yaml
@@ -11700,6 +11700,12 @@ spec:
description: Passive passive check
configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime
@@ -12952,6 +12958,12 @@ spec:
description: Passive passive check
configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime
@@ -14363,6 +14375,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines
@@ -15689,6 +15707,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the
diff --git a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_securitypolicies.yaml b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_securitypolicies.yaml
index 6d20dad82e..7351a840a1 100644
--- a/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_securitypolicies.yaml
+++ b/charts/gateway-crds-helm/templates/generated/gateway.envoyproxy.io_securitypolicies.yaml
@@ -1253,6 +1253,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
@@ -2393,6 +2399,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
@@ -3743,6 +3755,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the
@@ -5153,6 +5171,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
diff --git a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml
index 0e5b09c8e6..df41a5bc08 100644
--- a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml
+++ b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml
@@ -576,6 +576,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base duration for
diff --git a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml
index f87b1cacfa..d124e56266 100644
--- a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml
+++ b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml
@@ -634,6 +634,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base duration
diff --git a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml
index 66b39ecc0c..77513ddaec 100644
--- a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml
+++ b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml
@@ -11699,6 +11699,12 @@ spec:
description: Passive passive check
configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime
@@ -12951,6 +12957,12 @@ spec:
description: Passive passive check
configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime
@@ -14362,6 +14374,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines
@@ -15688,6 +15706,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the
diff --git a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml
index 684d40a80d..5c8713876b 100644
--- a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml
+++ b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml
@@ -1252,6 +1252,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
@@ -2392,6 +2398,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
@@ -3742,6 +3754,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the
@@ -5152,6 +5170,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
diff --git a/internal/gatewayapi/backendtrafficpolicy_test.go b/internal/gatewayapi/backendtrafficpolicy_test.go
index c9db878cab..c8eba28038 100644
--- a/internal/gatewayapi/backendtrafficpolicy_test.go
+++ b/internal/gatewayapi/backendtrafficpolicy_test.go
@@ -260,6 +260,7 @@ func TestBuildPassiveHealthCheck(t *testing.T) {
BaseEjectionTime: ptr.To(gwapiv1.Duration("30s")),
MaxEjectionPercent: ptr.To[int32](10),
FailurePercentageThreshold: ptr.To[uint32](85),
+ AlwaysEjectOneHost: ptr.To(true),
},
},
expected: &ir.OutlierDetection{
@@ -271,6 +272,7 @@ func TestBuildPassiveHealthCheck(t *testing.T) {
BaseEjectionTime: ptr.To(metav1.Duration{Duration: 30 * time.Second}),
MaxEjectionPercent: ptr.To[int32](10),
FailurePercentageThreshold: ptr.To[uint32](85),
+ AlwaysEjectOneHost: ptr.To(true),
},
},
}
diff --git a/internal/gatewayapi/clustersettings.go b/internal/gatewayapi/clustersettings.go
index 9ce505df26..40519f83c1 100644
--- a/internal/gatewayapi/clustersettings.go
+++ b/internal/gatewayapi/clustersettings.go
@@ -471,6 +471,7 @@ func buildPassiveHealthCheck(policy egv1a1.HealthCheck) *ir.OutlierDetection {
Consecutive5xxErrors: hc.Consecutive5xxErrors,
MaxEjectionPercent: hc.MaxEjectionPercent,
FailurePercentageThreshold: hc.FailurePercentageThreshold,
+ AlwaysEjectOneHost: hc.AlwaysEjectOneHost,
}
if hc.Interval != nil {
diff --git a/internal/ir/xds.go b/internal/ir/xds.go
index 1816f9f417..f32f2036f7 100644
--- a/internal/ir/xds.go
+++ b/internal/ir/xds.go
@@ -2820,6 +2820,8 @@ type OutlierDetection struct {
MaxEjectionPercent *int32 `json:"maxEjectionPercent,omitempty" yaml:"maxEjectionPercent,omitempty"`
// FailurePercentageThreshold sets the failure percentage threshold for outlier detection.
FailurePercentageThreshold *uint32 `json:"failurePercentageThreshold,omitempty" yaml:"failurePercentageThreshold,omitempty"`
+ // AlwaysEjectOneHost defines whether at least one host should be ejected, regardless of MaxEjectionPercent.
+ AlwaysEjectOneHost *bool `json:"alwaysEjectOneHost,omitempty" yaml:"alwaysEjectOneHost,omitempty"`
}
// ActiveHealthCheck defines active health check settings
diff --git a/internal/ir/zz_generated.deepcopy.go b/internal/ir/zz_generated.deepcopy.go
index 4b35cdfe35..dbe6d4a3cd 100644
--- a/internal/ir/zz_generated.deepcopy.go
+++ b/internal/ir/zz_generated.deepcopy.go
@@ -2835,6 +2835,11 @@ func (in *OutlierDetection) DeepCopyInto(out *OutlierDetection) {
*out = new(uint32)
**out = **in
}
+ if in.AlwaysEjectOneHost != nil {
+ in, out := &in.AlwaysEjectOneHost, &out.AlwaysEjectOneHost
+ *out = new(bool)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutlierDetection.
diff --git a/internal/xds/translator/cluster.go b/internal/xds/translator/cluster.go
index 82b41d83bc..477a9fba5e 100644
--- a/internal/xds/translator/cluster.go
+++ b/internal/xds/translator/cluster.go
@@ -645,6 +645,10 @@ func buildXdsOutlierDetection(outlierDetection *ir.OutlierDetection) *clusterv3.
od.EnforcingFailurePercentage = wrapperspb.UInt32(100)
}
+ if outlierDetection.AlwaysEjectOneHost != nil {
+ od.AlwaysEjectOneHost = wrapperspb.Bool(*outlierDetection.AlwaysEjectOneHost)
+ }
+
return od
}
diff --git a/internal/xds/translator/cluster_test.go b/internal/xds/translator/cluster_test.go
index 6127fded2e..251753039a 100644
--- a/internal/xds/translator/cluster_test.go
+++ b/internal/xds/translator/cluster_test.go
@@ -132,6 +132,7 @@ func TestBuildXdsOutlierDetection(t *testing.T) {
BaseEjectionTime: ptr.To(metav1.Duration{Duration: 30 * time.Second}),
MaxEjectionPercent: ptr.To[int32](10),
FailurePercentageThreshold: ptr.To[uint32](85),
+ AlwaysEjectOneHost: ptr.To(true),
},
expected: &clusterv3.OutlierDetection{
SplitExternalLocalOriginErrors: true,
@@ -144,6 +145,7 @@ func TestBuildXdsOutlierDetection(t *testing.T) {
MaxEjectionPercent: wrapperspb.UInt32(10),
FailurePercentageThreshold: wrapperspb.UInt32(85),
EnforcingFailurePercentage: wrapperspb.UInt32(100),
+ AlwaysEjectOneHost: wrapperspb.Bool(true),
},
},
}
diff --git a/internal/xds/translator/testdata/in/xds-ir/passive-failure-percentage.yaml b/internal/xds/translator/testdata/in/xds-ir/passive-failure-percentage.yaml
index 8d698a3ec4..d492a3181e 100644
--- a/internal/xds/translator/testdata/in/xds-ir/passive-failure-percentage.yaml
+++ b/internal/xds/translator/testdata/in/xds-ir/passive-failure-percentage.yaml
@@ -30,3 +30,4 @@ http:
consecutiveLocalOriginFailures: 5
splitExternalLocalOriginErrors: false
failurePercentageThreshold: 90
+ alwaysEjectOneHost: true
diff --git a/internal/xds/translator/testdata/out/xds-ir/passive-failure-percentage.clusters.yaml b/internal/xds/translator/testdata/out/xds-ir/passive-failure-percentage.clusters.yaml
index 9290f1ef5d..188f008334 100644
--- a/internal/xds/translator/testdata/out/xds-ir/passive-failure-percentage.clusters.yaml
+++ b/internal/xds/translator/testdata/out/xds-ir/passive-failure-percentage.clusters.yaml
@@ -21,6 +21,7 @@
localityWeightedLbConfig: {}
name: dest-1
outlierDetection:
+ alwaysEjectOneHost: true
baseEjectionTime: 30s
consecutive5xx: 5
consecutiveGatewayFailure: 0
diff --git a/site/content/en/latest/api/extension_types.md b/site/content/en/latest/api/extension_types.md
index 650c8ac4d8..48391a7ec0 100644
--- a/site/content/en/latest/api/extension_types.md
+++ b/site/content/en/latest/api/extension_types.md
@@ -3830,6 +3830,7 @@ _Appears in:_
| `baseEjectionTime` | _[Duration](https://gateway-api.sigs.k8s.io/reference/1.4/spec/#duration)_ | false | 30s | BaseEjectionTime defines the base duration for which a host will be ejected on consecutive failures. |
| `maxEjectionPercent` | _integer_ | false | 10 | MaxEjectionPercent sets the maximum percentage of hosts in a cluster that can be ejected. |
| `failurePercentageThreshold` | _integer_ | false | | FailurePercentageThreshold sets the failure percentage threshold for outlier detection.
If the failure percentage of a given host is greater than or equal to this value, it will be ejected.
Defaults to 85. |
+| `alwaysEjectOneHost` | _boolean_ | false | false | AlwaysEjectOneHost defines whether at least one host should be ejected,
regardless of MaxEjectionPercent. |
#### PathEscapedSlashAction
diff --git a/test/helm/gateway-crds-helm/all.out.yaml b/test/helm/gateway-crds-helm/all.out.yaml
index 6471a60343..49ab0eaa78 100644
--- a/test/helm/gateway-crds-helm/all.out.yaml
+++ b/test/helm/gateway-crds-helm/all.out.yaml
@@ -21874,6 +21874,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base duration for
@@ -26821,6 +26827,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base duration
@@ -40565,6 +40577,12 @@ spec:
description: Passive passive check
configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime
@@ -41817,6 +41835,12 @@ spec:
description: Passive passive check
configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime
@@ -43228,6 +43252,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines
@@ -44554,6 +44584,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the
@@ -47220,6 +47256,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
@@ -48360,6 +48402,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
@@ -49710,6 +49758,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the
@@ -51120,6 +51174,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
diff --git a/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml b/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml
index 781ff9c646..014afe2da1 100644
--- a/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml
+++ b/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml
@@ -1054,6 +1054,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base duration for
@@ -6001,6 +6007,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base duration
@@ -19745,6 +19757,12 @@ spec:
description: Passive passive check
configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime
@@ -20997,6 +21015,12 @@ spec:
description: Passive passive check
configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime
@@ -22408,6 +22432,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines
@@ -23734,6 +23764,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the
@@ -26400,6 +26436,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
@@ -27540,6 +27582,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base
@@ -28890,6 +28938,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the
@@ -30300,6 +30354,12 @@ spec:
passive:
description: Passive passive check configuration
properties:
+ alwaysEjectOneHost:
+ default: false
+ description: |-
+ AlwaysEjectOneHost defines whether at least one host should be ejected,
+ regardless of MaxEjectionPercent.
+ type: boolean
baseEjectionTime:
default: 30s
description: BaseEjectionTime defines the base