Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 32 additions & 2 deletions api/v1alpha1/loadbalancer_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
10 changes: 10 additions & 0 deletions api/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading
Loading