diff --git a/api/v1alpha1/loadbalancer_types.go b/api/v1alpha1/loadbalancer_types.go index 8132e8f38b..06238139f2 100644 --- a/api/v1alpha1/loadbalancer_types.go +++ b/api/v1alpha1/loadbalancer_types.go @@ -287,11 +287,41 @@ const ( type SlowStart struct { // Window defines the duration of the warm up period for newly added host. // During slow start window, traffic sent to the newly added hosts will gradually increase. - // Currently only supports linear growth of traffic. For additional details, + // For additional details, // see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig // +kubebuilder:validation:Required Window *gwapiv1.Duration `json:"window"` - // TODO: Add support for non-linear traffic increases based on user usage. + + // Aggression controls the speed at which the endpoint weight ramps up during the + // slow start window. The endpoint weight is scaled by the time factor raised to + // the power of (1 / aggression). Values greater than 1.0 result in a faster + // initial ramp-up followed by a slower approach to the full weight (exponential), + // while values less than 1.0 result in a slower initial ramp-up followed by a + // faster approach to the full weight (logarithmic). + // + // This is expressed as a percentage-based integer where 100 represents 1.0, + // 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + // unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + // + // For example: + // - 50 => 0.5x + // - 100 => 1.0x + // - 150 => 1.5x + // - 200 => 2.0x + // + // +optional + // +kubebuilder:validation:Minimum=1 + Aggression *uint32 `json:"aggression,omitempty"` + + // MinWeightPercent specifies the minimum percent of origin weight that avoids + // too small new weight when an endpoint is in slow start window. This ensures + // that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + // default of 10%. + // + // +optional + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=100 + MinWeightPercent *uint32 `json:"minWeightPercent,omitempty"` } // ZoneAware defines the configuration related to the distribution of requests between locality zones. diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 3fa446c0c6..d402ce8bc9 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -7725,6 +7725,16 @@ func (in *SlowStart) DeepCopyInto(out *SlowStart) { *out = new(v1.Duration) **out = **in } + if in.Aggression != nil { + in, out := &in.Aggression, &out.Aggression + *out = new(uint32) + **out = **in + } + if in.MinWeightPercent != nil { + in, out := &in.MinWeightPercent, &out.MinWeightPercent + *out = new(uint32) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlowStart. 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 4453989c01..ebd0cafc09 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 @@ -1049,11 +1049,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string 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 2f67685ec6..549f864393 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 @@ -1135,11 +1135,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string 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 3c0748a8ca..24f843ce9e 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 @@ -12452,11 +12452,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -13976,11 +14007,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -15661,11 +15723,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -17255,11 +17348,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string 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 21f522c267..1e5d565151 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 @@ -1768,11 +1768,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -3164,11 +3195,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -4843,11 +4905,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -6533,11 +6626,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string diff --git a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml index 5b04769153..226404388e 100644 --- a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml +++ b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_backendtrafficpolicies.yaml @@ -1048,11 +1048,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string diff --git a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml index 7138e01ad0..3c119adce3 100644 --- a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml +++ b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_envoyextensionpolicies.yaml @@ -1134,11 +1134,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string diff --git a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml index ade6d8979c..daf1c109f2 100644 --- a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml +++ b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml @@ -12451,11 +12451,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -13975,11 +14006,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -15660,11 +15722,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -17254,11 +17347,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string diff --git a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml index 3d839207a6..ed0f9d9507 100644 --- a/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml +++ b/charts/gateway-helm/charts/crds/crds/generated/gateway.envoyproxy.io_securitypolicies.yaml @@ -1767,11 +1767,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -3163,11 +3194,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -4842,11 +4904,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -6532,11 +6625,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string diff --git a/internal/gatewayapi/clustersettings.go b/internal/gatewayapi/clustersettings.go index 21d1b20d05..1a24bca13b 100644 --- a/internal/gatewayapi/clustersettings.go +++ b/internal/gatewayapi/clustersettings.go @@ -331,15 +331,11 @@ func buildLoadBalancer(policy *egv1a1.ClusterSettings) (*ir.LoadBalancer, error) lb = &ir.LoadBalancer{ LeastRequest: &ir.LeastRequest{}, } - if policy.LoadBalancer.SlowStart != nil && policy.LoadBalancer.SlowStart.Window != nil { - d, err := time.ParseDuration(string(*policy.LoadBalancer.SlowStart.Window)) - if err != nil { - return nil, err - } - lb.LeastRequest.SlowStart = &ir.SlowStart{ - Window: ir.MetaV1DurationPtr(d), - } + slowStart, err := buildSlowStart(policy.LoadBalancer.SlowStart) + if err != nil { + return nil, err } + lb.LeastRequest.SlowStart = slowStart case egv1a1.RandomLoadBalancerType: lb = &ir.LoadBalancer{ Random: &ir.Random{}, @@ -348,15 +344,11 @@ func buildLoadBalancer(policy *egv1a1.ClusterSettings) (*ir.LoadBalancer, error) lb = &ir.LoadBalancer{ RoundRobin: &ir.RoundRobin{}, } - if policy.LoadBalancer.SlowStart != nil && policy.LoadBalancer.SlowStart.Window != nil { - d, err := time.ParseDuration(string(*policy.LoadBalancer.SlowStart.Window)) - if err != nil { - return nil, err - } - lb.RoundRobin.SlowStart = &ir.SlowStart{ - Window: ir.MetaV1DurationPtr(d), - } + slowStart, err := buildSlowStart(policy.LoadBalancer.SlowStart) + if err != nil { + return nil, err } + lb.RoundRobin.SlowStart = slowStart case egv1a1.BackendUtilizationLoadBalancerType: lb = &ir.LoadBalancer{ BackendUtilization: &ir.BackendUtilization{}, @@ -392,15 +384,11 @@ func buildLoadBalancer(policy *egv1a1.ClusterSettings) (*ir.LoadBalancer, error) } lb.BackendUtilization.KeepResponseHeaders = new(ptr.Deref(backendUtilization.KeepResponseHeaders, false)) } - if policy.LoadBalancer.SlowStart != nil && policy.LoadBalancer.SlowStart.Window != nil { - d, err := time.ParseDuration(string(*policy.LoadBalancer.SlowStart.Window)) - if err != nil { - return nil, err - } - lb.BackendUtilization.SlowStart = &ir.SlowStart{ - Window: ir.MetaV1DurationPtr(d), - } + slowStart, err := buildSlowStart(policy.LoadBalancer.SlowStart) + if err != nil { + return nil, err } + lb.BackendUtilization.SlowStart = slowStart } // Add ZoneAware loadbalancer settings @@ -436,6 +424,25 @@ func buildLoadBalancer(policy *egv1a1.ClusterSettings) (*ir.LoadBalancer, error) return lb, nil } +func buildSlowStart(slowStart *egv1a1.SlowStart) (*ir.SlowStart, error) { + if slowStart == nil || slowStart.Window == nil { + return nil, nil + } + d, err := time.ParseDuration(string(*slowStart.Window)) + if err != nil { + return nil, err + } + ret := &ir.SlowStart{ + Window: ir.MetaV1DurationPtr(d), + MinWeightPercent: slowStart.MinWeightPercent, + } + if slowStart.Aggression != nil { + aggression := float64(*slowStart.Aggression) / 100 + ret.Aggression = &aggression + } + return ret, nil +} + func buildConsistentHashLoadBalancer(policy egv1a1.LoadBalancer) (*ir.ConsistentHash, error) { consistentHash := &ir.ConsistentHash{} diff --git a/internal/gatewayapi/testdata/backendtrafficpolicy-with-loadbalancer.in.yaml b/internal/gatewayapi/testdata/backendtrafficpolicy-with-loadbalancer.in.yaml index 56b54f786d..c99b46ec06 100644 --- a/internal/gatewayapi/testdata/backendtrafficpolicy-with-loadbalancer.in.yaml +++ b/internal/gatewayapi/testdata/backendtrafficpolicy-with-loadbalancer.in.yaml @@ -200,6 +200,8 @@ backendTrafficPolicies: type: LeastRequest slowStart: window: 300s + aggression: 150 + minWeightPercent: 25 - apiVersion: gateway.envoyproxy.io/v1alpha1 kind: BackendTrafficPolicy metadata: diff --git a/internal/gatewayapi/testdata/backendtrafficpolicy-with-loadbalancer.out.yaml b/internal/gatewayapi/testdata/backendtrafficpolicy-with-loadbalancer.out.yaml index d83171cdf6..045a80c518 100644 --- a/internal/gatewayapi/testdata/backendtrafficpolicy-with-loadbalancer.out.yaml +++ b/internal/gatewayapi/testdata/backendtrafficpolicy-with-loadbalancer.out.yaml @@ -42,6 +42,8 @@ backendTrafficPolicies: spec: loadBalancer: slowStart: + aggression: 150 + minWeightPercent: 25 window: 300s type: LeastRequest targetRef: @@ -755,6 +757,8 @@ xdsIR: loadBalancer: leastRequest: slowStart: + aggression: 1.5 + minWeightPercent: 25 window: 5m0s - destination: metadata: diff --git a/internal/ir/xds.go b/internal/ir/xds.go index 6a80b9129a..02127871f8 100644 --- a/internal/ir/xds.go +++ b/internal/ir/xds.go @@ -2953,6 +2953,12 @@ type ProxyProtocol struct { type SlowStart struct { // Window defines the duration of the warm up period for newly added host. Window *metav1.Duration `json:"window" yaml:"window"` + // Aggression is the parameter that controls the speed of the endpoint weight + // ramp-up during the slow start window. If nil, Envoy's default (1.0) is used. + Aggression *float64 `json:"aggression,omitempty" yaml:"aggression,omitempty"` + // MinWeightPercent is the minimum percent of origin weight used while an + // endpoint is in the slow start window. If nil, Envoy's default (10%) is used. + MinWeightPercent *uint32 `json:"minWeightPercent,omitempty" yaml:"minWeightPercent,omitempty"` } // Backend CircuitBreaker settings for the DEFAULT routing priority diff --git a/internal/ir/zz_generated.deepcopy.go b/internal/ir/zz_generated.deepcopy.go index 8cc3268cbc..1067d236b7 100644 --- a/internal/ir/zz_generated.deepcopy.go +++ b/internal/ir/zz_generated.deepcopy.go @@ -4130,6 +4130,16 @@ func (in *SlowStart) DeepCopyInto(out *SlowStart) { *out = new(metav1.Duration) **out = **in } + if in.Aggression != nil { + in, out := &in.Aggression, &out.Aggression + *out = new(float64) + **out = **in + } + if in.MinWeightPercent != nil { + in, out := &in.MinWeightPercent, &out.MinWeightPercent + *out = new(uint32) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlowStart. diff --git a/internal/xds/translator/cluster.go b/internal/xds/translator/cluster.go index 5e566f80a3..27d70a1814 100644 --- a/internal/xds/translator/cluster.go +++ b/internal/xds/translator/cluster.go @@ -366,9 +366,7 @@ func buildXdsCluster(args *xdsClusterArgs) (*buildClusterResult, error) { LocalityLbConfig: localityLbConfig, } if args.loadBalancer.LeastRequest.SlowStart != nil && args.loadBalancer.LeastRequest.SlowStart.Window != nil { - leastRequest.SlowStartConfig = &commonv3.SlowStartConfig{ - SlowStartWindow: durationpb.New(args.loadBalancer.LeastRequest.SlowStart.Window.Duration), - } + leastRequest.SlowStartConfig = buildSlowStartConfig(args.loadBalancer.LeastRequest.SlowStart) } typedLeastRequest, err := proto.ToAnyWithValidation(leastRequest) if err != nil { @@ -387,9 +385,7 @@ func buildXdsCluster(args *xdsClusterArgs) (*buildClusterResult, error) { LocalityLbConfig: localityLbConfig, } if args.loadBalancer.RoundRobin.SlowStart != nil && args.loadBalancer.RoundRobin.SlowStart.Window != nil { - roundRobin.SlowStartConfig = &commonv3.SlowStartConfig{ - SlowStartWindow: durationpb.New(args.loadBalancer.RoundRobin.SlowStart.Window.Duration), - } + roundRobin.SlowStartConfig = buildSlowStartConfig(args.loadBalancer.RoundRobin.SlowStart) } typedRoundRobin, err := proto.ToAnyWithValidation(roundRobin) if err != nil { @@ -453,9 +449,7 @@ func buildXdsCluster(args *xdsClusterArgs) (*buildClusterResult, error) { cswrr.WeightUpdatePeriod = durationpb.New(v.WeightUpdatePeriod.Duration) } if v.SlowStart != nil && v.SlowStart.Window != nil && v.SlowStart.Window.Duration > 0 { - cswrr.SlowStartConfig = &commonv3.SlowStartConfig{ - SlowStartWindow: durationpb.New(v.SlowStart.Window.Duration), - } + cswrr.SlowStartConfig = buildSlowStartConfig(v.SlowStart) } if v.ErrorUtilizationPenaltyPercent != nil { cswrr.ErrorUtilizationPenalty = wrapperspb.Float(float32(*v.ErrorUtilizationPenaltyPercent) / 100.0) @@ -689,6 +683,26 @@ func buildXdsOutlierDetection(outlierDetection *ir.OutlierDetection) *clusterv3. return od } +// buildSlowStartConfig translates the IR SlowStart configuration into the +// Envoy SlowStartConfig used by round-robin and least-request load balancers. +// Callers must ensure slowStart and slowStart.Window are non-nil. +func buildSlowStartConfig(slowStart *ir.SlowStart) *commonv3.SlowStartConfig { + cfg := &commonv3.SlowStartConfig{ + SlowStartWindow: durationpb.New(slowStart.Window.Duration), + } + if slowStart.Aggression != nil { + cfg.Aggression = &corev3.RuntimeDouble{ + DefaultValue: *slowStart.Aggression, + } + } + if slowStart.MinWeightPercent != nil { + cfg.MinWeightPercent = &xdstype.Percent{ + Value: float64(*slowStart.MinWeightPercent), + } + } + return cfg +} + // buildHTTPStatusRange converts an array of http status to an array of the range of http status. func buildHTTPStatusRange(irStatuses []ir.HTTPStatus) []*xdstype.Int64Range { if len(irStatuses) == 0 { diff --git a/internal/xds/translator/testdata/in/xds-ir/load-balancer.yaml b/internal/xds/translator/testdata/in/xds-ir/load-balancer.yaml index c59f30a804..c7012d0b72 100644 --- a/internal/xds/translator/testdata/in/xds-ir/load-balancer.yaml +++ b/internal/xds/translator/testdata/in/xds-ir/load-balancer.yaml @@ -78,6 +78,8 @@ http: roundRobin: slowStart: window: 300s + aggression: 1.5 + minWeightPercent: 25 destination: name: "sixth-route-dest" settings: @@ -227,6 +229,8 @@ http: weightUpdatePeriod: 10s slowStart: window: 45s + aggression: 2 + minWeightPercent: 15 errorUtilizationPenaltyPercent: 100 metricNamesForComputingUtilization: - "cpu_utilization" diff --git a/internal/xds/translator/testdata/out/xds-ir/load-balancer.clusters.yaml b/internal/xds/translator/testdata/out/xds-ir/load-balancer.clusters.yaml index cdde7a1721..5408a226f5 100644 --- a/internal/xds/translator/testdata/out/xds-ir/load-balancer.clusters.yaml +++ b/internal/xds/translator/testdata/out/xds-ir/load-balancer.clusters.yaml @@ -134,6 +134,10 @@ localityLbConfig: localityWeightedLbConfig: {} slowStartConfig: + aggression: + defaultValue: 1.5 + minWeightPercent: + value: 25 slowStartWindow: 300s name: sixth-route-dest perConnectionBufferLimitBytes: 32768 @@ -375,6 +379,10 @@ metricNamesForComputingUtilization: - cpu_utilization slowStartConfig: + aggression: + defaultValue: 2 + minWeightPercent: + value: 15 slowStartWindow: 45s weightExpirationPeriod: 60s weightUpdatePeriod: 10s diff --git a/release-notes/current.yaml b/release-notes/current.yaml index ce695f50e2..40df2ce337 100644 --- a/release-notes/current.yaml +++ b/release-notes/current.yaml @@ -23,6 +23,7 @@ new features: | Support for configuring weights for locality zones. Added support for settings of gRPC web in ClientTrafficPolicy. Added support for Envoy Dynamic Modules. + Added support for `aggression` and `minWeightPercent` in BackendTrafficPolicy slow start configuration. Added support for weight in BackendRef API to enable traffic splitting for non-x-route resources. Added support for removing headers based on matching criteria (Exact, Prefix, Suffix, RegularExpression) in ClientTrafficPolicy EarlyRequestHeaders and LateResponseHeaders. Added support for priorityClassName in KubernetesPodSpec for Envoy Proxy pods. diff --git a/site/content/en/latest/api/extension_types.md b/site/content/en/latest/api/extension_types.md index 5ef4099805..37c2884557 100644 --- a/site/content/en/latest/api/extension_types.md +++ b/site/content/en/latest/api/extension_types.md @@ -5656,7 +5656,9 @@ _Appears in:_ | Field | Type | Required | Default | Description | | --- | --- | --- | --- | --- | -| `window` | _[Duration](https://gateway-api.sigs.k8s.io/reference/1.5/spec/#duration)_ | true | | Window defines the duration of the warm up period for newly added host.
During slow start window, traffic sent to the newly added hosts will gradually increase.
Currently only supports linear growth of traffic. For additional details,
see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig | +| `window` | _[Duration](https://gateway-api.sigs.k8s.io/reference/1.5/spec/#duration)_ | true | | Window defines the duration of the warm up period for newly added host.
During slow start window, traffic sent to the newly added hosts will gradually increase.
For additional details,
see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig | +| `aggression` | _integer_ | false | | Aggression controls the speed at which the endpoint weight ramps up during the
slow start window. The endpoint weight is scaled by the time factor raised to
the power of (1 / aggression). Values greater than 1.0 result in a faster
initial ramp-up followed by a slower approach to the full weight (exponential),
while values less than 1.0 result in a slower initial ramp-up followed by a
faster approach to the full weight (logarithmic).
This is expressed as a percentage-based integer where 100 represents 1.0,
150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If
unset, Envoy uses its default of 1.0, which produces a linear ramp-up.
For example:
- 50 => 0.5x
- 100 => 1.0x
- 150 => 1.5x
- 200 => 2.0x | +| `minWeightPercent` | _integer_ | false | | MinWeightPercent specifies the minimum percent of origin weight that avoids
too small new weight when an endpoint is in slow start window. This ensures
that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its
default of 10%. | #### SourceMatch diff --git a/test/cel-validation/backendtrafficpolicy_test.go b/test/cel-validation/backendtrafficpolicy_test.go index ff9ea5c259..f17c86b08a 100644 --- a/test/cel-validation/backendtrafficpolicy_test.go +++ b/test/cel-validation/backendtrafficpolicy_test.go @@ -585,7 +585,9 @@ func TestBackendTrafficPolicyTarget(t *testing.T) { LoadBalancer: &egv1a1.LoadBalancer{ Type: egv1a1.RoundRobinLoadBalancerType, SlowStart: &egv1a1.SlowStart{ - Window: new(gwapiv1.Duration("10ms")), + Window: new(gwapiv1.Duration("10ms")), + Aggression: new(uint32(150)), + MinWeightPercent: new(uint32(25)), }, }, }, @@ -593,6 +595,34 @@ func TestBackendTrafficPolicyTarget(t *testing.T) { }, wantErrors: []string{}, }, + { + desc: "roundrobin with zero aggression is rejected", + mutate: func(btp *egv1a1.BackendTrafficPolicy) { + btp.Spec = egv1a1.BackendTrafficPolicySpec{ + PolicyTargetReferences: egv1a1.PolicyTargetReferences{ + TargetRef: &gwapiv1.LocalPolicyTargetReferenceWithSectionName{ + LocalPolicyTargetReference: gwapiv1.LocalPolicyTargetReference{ + Group: gwapiv1.Group("gateway.networking.k8s.io"), + Kind: gwapiv1.Kind("Gateway"), + Name: gwapiv1.ObjectName("eg"), + }, + }, + }, + ClusterSettings: egv1a1.ClusterSettings{ + LoadBalancer: &egv1a1.LoadBalancer{ + Type: egv1a1.RoundRobinLoadBalancerType, + SlowStart: &egv1a1.SlowStart{ + Window: new(gwapiv1.Duration("10ms")), + Aggression: new(uint32(0)), + }, + }, + }, + } + }, + wantErrors: []string{ + "spec.loadBalancer.slowStart.aggression", + }, + }, { desc: " random with SlowStart 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 6000e3e719..31a35804b1 100644 --- a/test/helm/gateway-crds-helm/all.out.yaml +++ b/test/helm/gateway-crds-helm/all.out.yaml @@ -23576,11 +23576,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -28991,11 +29022,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -43290,11 +43352,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -44814,11 +44907,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -46499,11 +46623,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -48093,11 +48248,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -51145,11 +51331,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -52541,11 +52758,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -54220,11 +54468,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -55910,11 +56189,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string diff --git a/test/helm/gateway-crds-helm/e2e.out.yaml b/test/helm/gateway-crds-helm/e2e.out.yaml index a6de282a0b..6524f734f6 100644 --- a/test/helm/gateway-crds-helm/e2e.out.yaml +++ b/test/helm/gateway-crds-helm/e2e.out.yaml @@ -1549,11 +1549,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -6964,11 +6995,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -21263,11 +21325,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -22787,11 +22880,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -24472,11 +24596,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -26066,11 +26221,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -29118,11 +29304,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -30514,11 +30731,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -32193,11 +32441,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -33883,11 +34162,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string 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 5ef15f3270..911e129491 100644 --- a/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml +++ b/test/helm/gateway-crds-helm/envoy-gateway-crds.out.yaml @@ -1549,11 +1549,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -6964,11 +6995,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -21263,11 +21325,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -22787,11 +22880,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -24472,11 +24596,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -26066,11 +26221,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -29118,11 +29304,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -30514,11 +30731,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -32193,11 +32441,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string @@ -33883,11 +34162,42 @@ spec: If set, during slow start window, traffic sent to the newly added hosts will gradually increase. Supported for RoundRobin, LeastRequest, and BackendUtilization load balancers. properties: + aggression: + description: |- + Aggression controls the speed at which the endpoint weight ramps up during the + slow start window. The endpoint weight is scaled by the time factor raised to + the power of (1 / aggression). Values greater than 1.0 result in a faster + initial ramp-up followed by a slower approach to the full weight (exponential), + while values less than 1.0 result in a slower initial ramp-up followed by a + faster approach to the full weight (logarithmic). + + This is expressed as a percentage-based integer where 100 represents 1.0, + 150 represents 1.5, 50 represents 0.5, etc. Must be greater than 0. If + unset, Envoy uses its default of 1.0, which produces a linear ramp-up. + + For example: + - 50 => 0.5x + - 100 => 1.0x + - 150 => 1.5x + - 200 => 2.0x + format: int32 + minimum: 1 + type: integer + minWeightPercent: + description: |- + MinWeightPercent specifies the minimum percent of origin weight that avoids + too small new weight when an endpoint is in slow start window. This ensures + that the EDF scheduler has a reasonable deadline. If unset, Envoy uses its + default of 10%. + format: int32 + maximum: 100 + minimum: 0 + type: integer window: description: |- Window defines the duration of the warm up period for newly added host. During slow start window, traffic sent to the newly added hosts will gradually increase. - Currently only supports linear growth of traffic. For additional details, + For additional details, see https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster-slowstartconfig pattern: ^([0-9]{1,5}(h|m|s|ms)){1,4}$ type: string