diff --git a/api/v1alpha1/loadbalancer_types.go b/api/v1alpha1/loadbalancer_types.go
index d4d0925d61..a148832e5e 100644
--- a/api/v1alpha1/loadbalancer_types.go
+++ b/api/v1alpha1/loadbalancer_types.go
@@ -12,6 +12,7 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
//
// +kubebuilder:validation:XValidation:rule="self.type == 'ConsistentHash' ? has(self.consistentHash) : !has(self.consistentHash)",message="If LoadBalancer type is consistentHash, consistentHash field needs to be set."
// +kubebuilder:validation:XValidation:rule="self.type in ['Random', 'ConsistentHash'] ? !has(self.slowStart) : true ",message="Currently SlowStart is only supported for RoundRobin and LeastRequest load balancers."
+// +kubebuilder:validation:XValidation:rule="self.type == 'ConsistentHash' ? !has(self.zoneAware) : true ",message="Currently ZoneAware is only supported for LeastRequest, Random, and RoundRobin load balancers."
type LoadBalancer struct {
// Type decides the type of Load Balancer policy.
// Valid LoadBalancerType values are
@@ -34,6 +35,12 @@ type LoadBalancer struct {
//
// +optional
SlowStart *SlowStart `json:"slowStart,omitempty"`
+
+ // ZoneAware defines the configuration related to the distribution of requests between locality zones.
+ //
+ // +optional
+ // +notImplementedHide
+ ZoneAware *ZoneAware `json:"zoneAware,omitempty"`
}
// LoadBalancerType specifies the types of LoadBalancer.
@@ -135,3 +142,39 @@ type SlowStart struct {
Window *metav1.Duration `json:"window"`
// TODO: Add support for non-linear traffic increases based on user usage.
}
+
+// ZoneAware defines the configuration related to the distribution of requests between locality zones.
+type ZoneAware struct {
+ // PreferLocalZone configures zone-aware routing to prefer sending traffic to the local locality zone.
+ //
+ // +optional
+ // +notImplementedHide
+ PreferLocal *PreferLocalZone `json:"preferLocal,omitempty"`
+}
+
+// PreferLocalZone configures zone-aware routing to prefer sending traffic to the local locality zone.
+type PreferLocalZone struct {
+ // ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ // which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ //
+ // +optional
+ // +notImplementedHide
+ Force *ForceLocalZone `json:"force,omitempty"`
+
+ // MinEndpointsThreshold is the minimum number of total upstream endpoints across all zones required to enable zone-aware routing.
+ //
+ // +optional
+ // +notImplementedHide
+ MinEndpointsThreshold *uint64 `json:"minEndpointsCount,omitempty"`
+}
+
+// ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+// which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+type ForceLocalZone struct {
+ // MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ // override. This is useful for protecting zones with fewer endpoints.
+ //
+ // +optional
+ // +notImplementedHide
+ MinEndpointsInZoneThreshold *uint32 `json:"minEndpointsInZoneThreshold,omitempty"`
+}
diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go
index fe790712a4..46e3fdb29f 100644
--- a/api/v1alpha1/zz_generated.deepcopy.go
+++ b/api/v1alpha1/zz_generated.deepcopy.go
@@ -2882,6 +2882,26 @@ func (in *FilterPosition) DeepCopy() *FilterPosition {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ForceLocalZone) DeepCopyInto(out *ForceLocalZone) {
+ *out = *in
+ if in.MinEndpointsInZoneThreshold != nil {
+ in, out := &in.MinEndpointsInZoneThreshold, &out.MinEndpointsInZoneThreshold
+ *out = new(uint32)
+ **out = **in
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ForceLocalZone.
+func (in *ForceLocalZone) DeepCopy() *ForceLocalZone {
+ if in == nil {
+ return nil
+ }
+ out := new(ForceLocalZone)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *GRPCActiveHealthChecker) DeepCopyInto(out *GRPCActiveHealthChecker) {
*out = *in
@@ -4405,6 +4425,11 @@ func (in *LoadBalancer) DeepCopyInto(out *LoadBalancer) {
*out = new(SlowStart)
(*in).DeepCopyInto(*out)
}
+ if in.ZoneAware != nil {
+ in, out := &in.ZoneAware, &out.ZoneAware
+ *out = new(ZoneAware)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancer.
@@ -4887,6 +4912,31 @@ func (in *PolicyTargetReferences) DeepCopy() *PolicyTargetReferences {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *PreferLocalZone) DeepCopyInto(out *PreferLocalZone) {
+ *out = *in
+ if in.Force != nil {
+ in, out := &in.Force, &out.Force
+ *out = new(ForceLocalZone)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.MinEndpointsThreshold != nil {
+ in, out := &in.MinEndpointsThreshold, &out.MinEndpointsThreshold
+ *out = new(uint64)
+ **out = **in
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PreferLocalZone.
+func (in *PreferLocalZone) DeepCopy() *PreferLocalZone {
+ if in == nil {
+ return nil
+ }
+ out := new(PreferLocalZone)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Principal) DeepCopyInto(out *Principal) {
*out = *in
@@ -6649,3 +6699,23 @@ func (in *ZipkinTracingProvider) DeepCopy() *ZipkinTracingProvider {
in.DeepCopyInto(out)
return out
}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ZoneAware) DeepCopyInto(out *ZoneAware) {
+ *out = *in
+ if in.PreferLocal != nil {
+ in, out := &in.PreferLocal, &out.PreferLocal
+ *out = new(PreferLocalZone)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZoneAware.
+func (in *ZoneAware) DeepCopy() *ZoneAware {
+ if in == nil {
+ return nil
+ }
+ out := new(ZoneAware)
+ in.DeepCopyInto(out)
+ return out
+}
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 67814955a0..3c652ac044 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
@@ -691,6 +691,34 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related to the
+ distribution of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware routing
+ to prefer sending traffic to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the minimum number
+ of total upstream endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -703,6 +731,10 @@ spec:
LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash''] ? !has(self.slowStart)
: true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware) :
+ true '
mergeType:
description: |-
MergeType determines how this configuration is merged with existing BackendTrafficPolicy
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 3513591318..c91a2fd0ca 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
@@ -769,6 +769,35 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the minimum
+ number of total upstream endpoints across
+ all zones required to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -781,6 +810,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash''] ?
!has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol when
communicating with the backend.
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 bfafe4985b..41b8e303ed 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
@@ -11361,6 +11361,39 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the
+ configuration related to the distribution
+ of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer
+ sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of
+ total upstream endpoints
+ across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -11374,6 +11407,11 @@ spec:
load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only
+ supported for LeastRequest, Random,
+ and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash''
+ ? !has(self.zoneAware) : true '
proxyProtocol:
description: ProxyProtocol enables the
Proxy Protocol when communicating with
@@ -12395,6 +12433,39 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the
+ configuration related to the distribution
+ of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer
+ sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of
+ total upstream endpoints
+ across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -12408,6 +12479,11 @@ spec:
load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only
+ supported for LeastRequest, Random,
+ and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash''
+ ? !has(self.zoneAware) : true '
proxyProtocol:
description: ProxyProtocol enables the
Proxy Protocol when communicating with
@@ -13514,6 +13590,38 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests
+ between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer sending
+ traffic to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of total
+ upstream endpoints across all
+ zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -13526,6 +13634,11 @@ spec:
for RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported
+ for LeastRequest, Random, and RoundRobin
+ load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy
Protocol when communicating with the backend.
@@ -14552,6 +14665,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests between
+ locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the
+ local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is
+ the minimum number of total upstream
+ endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -14564,6 +14708,10 @@ spec:
RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for
+ LeastRequest, Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
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 1fd41c1afc..681ac85e0e 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
@@ -1268,6 +1268,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -1280,6 +1311,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -2200,6 +2235,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -2212,6 +2278,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -3338,6 +3408,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests between
+ locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer sending traffic
+ to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is
+ the minimum number of total upstream
+ endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -3350,6 +3451,11 @@ spec:
for RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported
+ for LeastRequest, Random, and RoundRobin load
+ balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -4464,6 +4570,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -4476,6 +4613,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
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 f177f55e64..73e551f531 100644
--- a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml
+++ b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml
@@ -690,6 +690,34 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related to the
+ distribution of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware routing
+ to prefer sending traffic to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the minimum number
+ of total upstream endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -702,6 +730,10 @@ spec:
LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash''] ? !has(self.slowStart)
: true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware) :
+ true '
mergeType:
description: |-
MergeType determines how this configuration is merged with existing BackendTrafficPolicy
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 e825e8284e..511913c576 100644
--- a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml
+++ b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml
@@ -768,6 +768,35 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the minimum
+ number of total upstream endpoints across
+ all zones required to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -780,6 +809,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash''] ?
!has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol when
communicating with the backend.
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 b352b9e369..7790869abd 100644
--- a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml
+++ b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml
@@ -11360,6 +11360,39 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the
+ configuration related to the distribution
+ of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer
+ sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of
+ total upstream endpoints
+ across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -11373,6 +11406,11 @@ spec:
load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only
+ supported for LeastRequest, Random,
+ and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash''
+ ? !has(self.zoneAware) : true '
proxyProtocol:
description: ProxyProtocol enables the
Proxy Protocol when communicating with
@@ -12394,6 +12432,39 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the
+ configuration related to the distribution
+ of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer
+ sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of
+ total upstream endpoints
+ across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -12407,6 +12478,11 @@ spec:
load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only
+ supported for LeastRequest, Random,
+ and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash''
+ ? !has(self.zoneAware) : true '
proxyProtocol:
description: ProxyProtocol enables the
Proxy Protocol when communicating with
@@ -13513,6 +13589,38 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests
+ between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer sending
+ traffic to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of total
+ upstream endpoints across all
+ zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -13525,6 +13633,11 @@ spec:
for RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported
+ for LeastRequest, Random, and RoundRobin
+ load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy
Protocol when communicating with the backend.
@@ -14551,6 +14664,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests between
+ locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the
+ local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is
+ the minimum number of total upstream
+ endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -14563,6 +14707,10 @@ spec:
RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for
+ LeastRequest, Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
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 6467cbfde4..58fe239465 100644
--- a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml
+++ b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml
@@ -1267,6 +1267,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -1279,6 +1310,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -2199,6 +2234,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -2211,6 +2277,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -3337,6 +3407,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests between
+ locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer sending traffic
+ to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is
+ the minimum number of total upstream
+ endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -3349,6 +3450,11 @@ spec:
for RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported
+ for LeastRequest, Random, and RoundRobin load
+ balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -4463,6 +4569,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -4475,6 +4612,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
diff --git a/site/content/en/latest/api/extension_types.md b/site/content/en/latest/api/extension_types.md
index e2025a0da8..e5aa9a8b09 100644
--- a/site/content/en/latest/api/extension_types.md
+++ b/site/content/en/latest/api/extension_types.md
@@ -1969,6 +1969,20 @@ _Appears in:_
| `after` | _[EnvoyFilter](#envoyfilter)_ | true | | After defines the filter that should come after the filter.
Only one of Before or After must be set. |
+#### ForceLocalZone
+
+
+
+ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+
+_Appears in:_
+- [PreferLocalZone](#preferlocalzone)
+
+| Field | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+
+
#### GRPCActiveHealthChecker
@@ -3447,6 +3461,19 @@ _Appears in:_
| `targetSelectors` | _[TargetSelector](#targetselector) array_ | true | | TargetSelectors allow targeting resources for this policy based on labels |
+#### PreferLocalZone
+
+
+
+PreferLocalZone configures zone-aware routing to prefer sending traffic to the local locality zone.
+
+_Appears in:_
+- [ZoneAware](#zoneaware)
+
+| Field | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+
+
#### Principal
@@ -5056,3 +5083,16 @@ _Appears in:_
| `disableSharedSpanContext` | _boolean_ | false | | DisableSharedSpanContext determines whether the default Envoy behaviour of
client and server spans sharing the same span context should be disabled. |
+#### ZoneAware
+
+
+
+ZoneAware defines the configuration related to the distribution of requests between locality zones.
+
+_Appears in:_
+- [LoadBalancer](#loadbalancer)
+
+| Field | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+
+
diff --git a/test/cel-validation/backendtrafficpolicy_test.go b/test/cel-validation/backendtrafficpolicy_test.go
index 4a966b877b..5770b378d9 100644
--- a/test/cel-validation/backendtrafficpolicy_test.go
+++ b/test/cel-validation/backendtrafficpolicy_test.go
@@ -342,7 +342,34 @@ func TestBackendTrafficPolicyTarget(t *testing.T) {
"spec.loadBalancer.consistentHash: Invalid value: \"object\": If consistent hash type is cookie, the cookie field must be set",
},
},
-
+ {
+ desc: "consistentHash lb with zoneAware",
+ mutate: func(btp *egv1a1.BackendTrafficPolicy) {
+ btp.Spec = egv1a1.BackendTrafficPolicySpec{
+ PolicyTargetReferences: egv1a1.PolicyTargetReferences{
+ TargetRef: &gwapiv1a2.LocalPolicyTargetReferenceWithSectionName{
+ LocalPolicyTargetReference: gwapiv1a2.LocalPolicyTargetReference{
+ Group: gwapiv1a2.Group("gateway.networking.k8s.io"),
+ Kind: gwapiv1a2.Kind("Gateway"),
+ Name: gwapiv1a2.ObjectName("eg"),
+ },
+ },
+ },
+ ClusterSettings: egv1a1.ClusterSettings{
+ LoadBalancer: &egv1a1.LoadBalancer{
+ Type: egv1a1.ConsistentHashLoadBalancerType,
+ ConsistentHash: &egv1a1.ConsistentHash{
+ Type: "SourceIP",
+ },
+ ZoneAware: &egv1a1.ZoneAware{},
+ },
+ },
+ }
+ },
+ wantErrors: []string{
+ "spec.loadBalancer: Invalid value: \"object\": Currently ZoneAware is only supported for LeastRequest, Random, and RoundRobin load balancers",
+ },
+ },
{
desc: "leastRequest with ConsistentHash nil",
mutate: func(btp *egv1a1.BackendTrafficPolicy) {
@@ -365,6 +392,29 @@ func TestBackendTrafficPolicyTarget(t *testing.T) {
},
wantErrors: []string{},
},
+ {
+ desc: "leastRequest with ZoneAware set",
+ mutate: func(btp *egv1a1.BackendTrafficPolicy) {
+ btp.Spec = egv1a1.BackendTrafficPolicySpec{
+ PolicyTargetReferences: egv1a1.PolicyTargetReferences{
+ TargetRef: &gwapiv1a2.LocalPolicyTargetReferenceWithSectionName{
+ LocalPolicyTargetReference: gwapiv1a2.LocalPolicyTargetReference{
+ Group: gwapiv1a2.Group("gateway.networking.k8s.io"),
+ Kind: gwapiv1a2.Kind("Gateway"),
+ Name: gwapiv1a2.ObjectName("eg"),
+ },
+ },
+ },
+ ClusterSettings: egv1a1.ClusterSettings{
+ LoadBalancer: &egv1a1.LoadBalancer{
+ Type: egv1a1.LeastRequestLoadBalancerType,
+ ZoneAware: &egv1a1.ZoneAware{},
+ },
+ },
+ }
+ },
+ wantErrors: []string{},
+ },
{
desc: "leastRequest with SlowStar is set",
mutate: func(btp *egv1a1.BackendTrafficPolicy) {
diff --git a/test/helm/gateway-crds-helm/all.out.yaml b/test/helm/gateway-crds-helm/all.out.yaml
index 784cd04012..4fbcd8f1b3 100644
--- a/test/helm/gateway-crds-helm/all.out.yaml
+++ b/test/helm/gateway-crds-helm/all.out.yaml
@@ -18330,6 +18330,34 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related to the
+ distribution of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware routing
+ to prefer sending traffic to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the minimum number
+ of total upstream endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -18342,6 +18370,10 @@ spec:
LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash''] ? !has(self.slowStart)
: true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware) :
+ true '
mergeType:
description: |-
MergeType determines how this configuration is merged with existing BackendTrafficPolicy
@@ -21949,6 +21981,35 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the minimum
+ number of total upstream endpoints across
+ all zones required to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -21961,6 +22022,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash''] ?
!has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol when
communicating with the backend.
@@ -34942,6 +35007,39 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the
+ configuration related to the distribution
+ of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer
+ sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of
+ total upstream endpoints
+ across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -34955,6 +35053,11 @@ spec:
load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only
+ supported for LeastRequest, Random,
+ and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash''
+ ? !has(self.zoneAware) : true '
proxyProtocol:
description: ProxyProtocol enables the
Proxy Protocol when communicating with
@@ -35976,6 +36079,39 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the
+ configuration related to the distribution
+ of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer
+ sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of
+ total upstream endpoints
+ across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -35989,6 +36125,11 @@ spec:
load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only
+ supported for LeastRequest, Random,
+ and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash''
+ ? !has(self.zoneAware) : true '
proxyProtocol:
description: ProxyProtocol enables the
Proxy Protocol when communicating with
@@ -37095,6 +37236,38 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests
+ between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer sending
+ traffic to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of total
+ upstream endpoints across all
+ zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -37107,6 +37280,11 @@ spec:
for RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported
+ for LeastRequest, Random, and RoundRobin
+ load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy
Protocol when communicating with the backend.
@@ -38133,6 +38311,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests between
+ locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the
+ local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is
+ the minimum number of total upstream
+ endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -38145,6 +38354,10 @@ spec:
RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for
+ LeastRequest, Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -39984,6 +40197,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -39996,6 +40240,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -40916,6 +41164,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -40928,6 +41207,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -42054,6 +42337,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests between
+ locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer sending traffic
+ to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is
+ the minimum number of total upstream
+ endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -42066,6 +42380,11 @@ spec:
for RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported
+ for LeastRequest, Random, and RoundRobin load
+ balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -43180,6 +43499,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -43192,6 +43542,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
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 a5c4a590c6..56549ef0fa 100644
--- a/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml
+++ b/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml
@@ -1018,6 +1018,34 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related to the
+ distribution of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware routing
+ to prefer sending traffic to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the minimum number
+ of total upstream endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -1030,6 +1058,10 @@ spec:
LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash''] ? !has(self.slowStart)
: true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware) :
+ true '
mergeType:
description: |-
MergeType determines how this configuration is merged with existing BackendTrafficPolicy
@@ -4637,6 +4669,35 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the minimum
+ number of total upstream endpoints across
+ all zones required to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -4649,6 +4710,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash''] ?
!has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol when
communicating with the backend.
@@ -17630,6 +17695,39 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the
+ configuration related to the distribution
+ of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer
+ sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of
+ total upstream endpoints
+ across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -17643,6 +17741,11 @@ spec:
load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only
+ supported for LeastRequest, Random,
+ and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash''
+ ? !has(self.zoneAware) : true '
proxyProtocol:
description: ProxyProtocol enables the
Proxy Protocol when communicating with
@@ -18664,6 +18767,39 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the
+ configuration related to the distribution
+ of requests between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer
+ sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of
+ total upstream endpoints
+ across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -18677,6 +18813,11 @@ spec:
load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only
+ supported for LeastRequest, Random,
+ and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash''
+ ? !has(self.zoneAware) : true '
proxyProtocol:
description: ProxyProtocol enables the
Proxy Protocol when communicating with
@@ -19783,6 +19924,38 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests
+ between locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer sending
+ traffic to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold
+ is the minimum number of total
+ upstream endpoints across all
+ zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -19795,6 +19968,11 @@ spec:
for RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported
+ for LeastRequest, Random, and RoundRobin
+ load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy
Protocol when communicating with the backend.
@@ -20821,6 +20999,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests between
+ locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the
+ local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is
+ the minimum number of total upstream
+ endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -20833,6 +21042,10 @@ spec:
RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for
+ LeastRequest, Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -22672,6 +22885,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -22684,6 +22928,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -23604,6 +23852,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -23616,6 +23895,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -24742,6 +25025,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration
+ related to the distribution of requests between
+ locality zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures
+ zone-aware routing to prefer sending traffic
+ to the local locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is
+ the minimum number of total upstream
+ endpoints across all zones required
+ to enable zone-aware routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -24754,6 +25068,11 @@ spec:
for RoundRobin and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported
+ for LeastRequest, Random, and RoundRobin load
+ balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.
@@ -25868,6 +26187,37 @@ spec:
- Random
- RoundRobin
type: string
+ zoneAware:
+ description: ZoneAware defines the configuration related
+ to the distribution of requests between locality
+ zones.
+ properties:
+ preferLocal:
+ description: PreferLocalZone configures zone-aware
+ routing to prefer sending traffic to the local
+ locality zone.
+ properties:
+ force:
+ description: |-
+ ForceLocalZone defines override configuration for forcing all traffic to stay within the local zone instead of the default behavior
+ which maintains equal distribution among upstream endpoints while sending as much traffic as possible locally.
+ properties:
+ minEndpointsInZoneThreshold:
+ description: |-
+ MinEndpointsInZoneThreshold is the minimum number of upstream endpoints in the local zone required to honor the forceLocalZone
+ override. This is useful for protecting zones with fewer endpoints.
+ format: int32
+ type: integer
+ type: object
+ minEndpointsCount:
+ description: MinEndpointsThreshold is the
+ minimum number of total upstream endpoints
+ across all zones required to enable zone-aware
+ routing.
+ format: int64
+ type: integer
+ type: object
+ type: object
required:
- type
type: object
@@ -25880,6 +26230,10 @@ spec:
and LeastRequest load balancers.
rule: 'self.type in [''Random'', ''ConsistentHash'']
? !has(self.slowStart) : true '
+ - message: Currently ZoneAware is only supported for LeastRequest,
+ Random, and RoundRobin load balancers.
+ rule: 'self.type == ''ConsistentHash'' ? !has(self.zoneAware)
+ : true '
proxyProtocol:
description: ProxyProtocol enables the Proxy Protocol
when communicating with the backend.