Skip to content

KEP-1959: promote loadbalancerclass feature to beta in v1.22. #2698

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
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
2 changes: 2 additions & 0 deletions keps/prod-readiness/sig-cloud-provider/1959.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
kep-number: 1959
alpha:
approver: "@johnbelamaric"
beta:
approver: "@johnbelamaric"
49 changes: 25 additions & 24 deletions keps/sig-cloud-provider/1959-service-lb-class-field/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
- [Design Details](#design-details)
- [Test Plan](#test-plan)
- [Graduation Criteria](#graduation-criteria)
- [Alpha:](#alpha)
- [Beta:](#beta)
- [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy)
- [Version Skew Strategy](#version-skew-strategy)
- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire)
Expand Down Expand Up @@ -42,9 +44,9 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
- [X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
- [X] (R) Graduation criteria is in place
- [X] (R) Production readiness review completed
- [ ] Production readiness review approved
- [X] (R) Production readiness review approved
- [ ] "Implementation History" section is up-to-date for milestone
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
- [X] (R) User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes

[kubernetes.io]: https://kubernetes.io/
Expand Down Expand Up @@ -172,12 +174,18 @@ E2E tests:

### Graduation Criteria

Alpha:
#### Alpha:

* the `loadBalancerClass` field is added to Service with an alpha feature gate.
* when enabled, service controller will ignore Service LBs with a non-empty class name.
* unit tests for service controller.
* unit tests for API strategy (drop disabled fields).

#### Beta:

* Feature gate is on by default.
* E2E tests checking that default load balancer implementation ignores LoadBalancer type of Services when `loadBalancerClass` set.

### Upgrade / Downgrade Strategy

* Usage of `loadBalancerClass` will be off by default during the alpha stage but can handle existing Services that
Expand Down Expand Up @@ -232,58 +240,51 @@ _This section must be completed when targeting beta graduation to a release._

* **How can a rollout fail? Can it impact already running workloads?**

TBD for beta
* By default this should not impact any existing Services since we are not changing any default behaviors.
* Enabling this feature on new clusters can impact workloads only if the user wants to use a custom load balancer implementation and sets `service.spec.loadBalancerClass`.

* **What specific metrics should inform a rollback?**

TBD for beta
* **What specific metrics should inform a rollback?**
* None, if the user doesn't want to use a custom load balancer implementation, user can simply ignore this field.

* **Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?**

TBD for beta
* No, upgrade->downgrade->upgrade has not been tested yet. Like any new API field, on downgrade any existing Services using the field will continue to have the field set. For these LoadBalancer type of Services, any default load balancer implementation (e.g. cloud providers) would ignore them. New Services cannot use the new field unless the feature gate is enabled in the old version when the feature was alpha.

* **Is the rollout accompanied by any deprecations and/or removals of features, APIs,
fields of API types, flags, etc.?**

TBD for beta
* No.

### Monitoring Requirements

_This section must be completed when targeting beta graduation to a release._

* **How can an operator determine if the feature is in use by workloads?**

TBD for beta
* Service should have `spec.loadBalancerClass` set.

* **What are the SLIs (Service Level Indicators) an operator can use to determine
the health of the service?**

TBD for beta

- [ ] Metrics
- Metric name:
- [Optional] Aggregation method:
- Components exposing the metric:
- [ ] Other (treat as last resort)
- Details:
* N/A

* **What are the reasonable SLOs (Service Level Objectives) for the above SLIs?**

TBD for beta
* N/A

* **Are there any missing metrics that would be useful to have to improve observability
of this feature?**

TBD for beta
* N/A

### Dependencies

_This section must be completed when targeting beta graduation to a release._

* **Does this feature depend on any specific services running in the cluster?**

TBD for beta

* This feature is dependent on the Service LoadBalancer implementation of a cluster. This feature should only be used if the user doesn't want to use default load balancer implementation.

### Scalability

Expand Down Expand Up @@ -336,15 +337,15 @@ _This section must be completed when targeting beta graduation to a release._

* **How does this feature react if the API server and/or etcd is unavailable?**

TBD for beta.
* N/A

* **What are other known failure modes?**

TBD for beta.
* If `service.spec.loadBalancerClass` set, but there is no load balancer implementation watches the set value.

* **What steps should be taken if SLOs are not being met to determine the problem?**

TBD for beta.
* N/A

[supported limits]: https://git.k8s.io/community//sig-scalability/configs-and-limits/thresholds.md
[existing SLIs/SLOs]: https://git.k8s.io/community/sig-scalability/slos/slos.md#kubernetes-slisslos
Expand Down
5 changes: 3 additions & 2 deletions keps/sig-cloud-provider/1959-service-lb-class-field/kep.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,17 @@ prr-approvers:
- "@johnbelamaric"

# The target maturity stage in the current dev cycle for this KEP.
stage: alpha
stage: beta

# The most recent milestone for which work toward delivery of this KEP has been
# done. This can be the current (upcoming) milestone, if it is being actively
# worked on.
latest-milestone: "v1.21"
latest-milestone: "v1.22"

# The milestone at which this feature was, or is targeted to be, at each stage.
milestone:
alpha: "v1.21"
beta: "v1.22"

feature-gates:
- name: ServiceLoadBalancerClass
Expand Down