Skip to content

Commit 09da809

Browse files
committed
Fill in remaining KEP sections
1 parent 65d3c28 commit 09da809

File tree

2 files changed

+26
-140
lines changed

2 files changed

+26
-140
lines changed

keps/sig-api-machinery/365-paginated-lists/README.MD

Lines changed: 25 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -74,24 +74,11 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
7474

7575
## Summary
7676

77-
<!--
78-
This section is incredibly important for producing high-quality, user-focused
79-
documentation such as release notes or a development roadmap. It should be
80-
possible to collect this information before implementation begins, in order to
81-
avoid requiring implementors to split their attention between writing release
82-
notes and implementing the feature itself. KEP editors and SIG Docs
83-
should help to ensure that the tone and content of the `Summary` section is
84-
useful for a wide audience.
85-
86-
A good summary is probably at least a paragraph in length.
87-
88-
Both in this section and below, follow the guidelines of the [documentation
89-
style guide]. In particular, wrap lines to a reasonable length, to make it
90-
easier for reviewers to cite specific portions, and to minimize diff churn on
91-
updates.
92-
93-
[documentation style guide]: https://github.com/kubernetes/community/blob/master/contributors/guide/style-guide.md
94-
-->
77+
In this KEP we propose exposing a simple chunking mechanism to allow large API responses
78+
to be broken into consistent partial responses. Clients that can tolerate such behavior
79+
would be able to opt-in for it by specifying a desired maximum number of results to return
80+
in a `LIST` call. This enhancement is critical for large clusters to significantly improve
81+
variations in peak memory use on the server and reduce long tail request latency.
9582

9683
## Motivation
9784

@@ -137,17 +124,12 @@ Relevant issues:
137124

138125
### Goals
139126

140-
<!--
141-
List the specific goals of the KEP. What is it trying to achieve? How will we
142-
know that this has succeeded?
143-
-->
127+
- Expose List API chunking mechanism as opt-in for clients
144128

145129
### Non-Goals
146130

147-
<!--
148-
What is out of scope for this KEP? Listing non-goals helps to focus discussion
149-
and make progress.
150-
-->
131+
- Force all clients to use pagination for now
132+
151133

152134
## Proposal
153135

@@ -165,17 +147,7 @@ without changing the semantics of the original request.
165147

166148
### Risks and Mitigations
167149

168-
<!--
169-
What are the risks of this proposal, and how do we mitigate? Think broadly.
170-
For example, consider both security and how this will impact the larger
171-
Kubernetes ecosystem.
172-
173-
How will security be reviewed, and by whom?
174-
175-
How will UX be reviewed, and by whom?
176-
177-
Consider including folks who also work outside the SIG or subproject.
178-
-->
150+
- Security implications of returning a key in the continue token are discussed below
179151

180152
## Design Details
181153

@@ -388,119 +360,42 @@ specify the parts of the namespace / name keyspace they wish to range over (pagi
388360

389361
### Test Plan
390362

391-
<!--
392-
**Note:** *Not required until targeted at a release.*
393-
394-
Consider the following in developing a test plan for this enhancement:
395-
- Will there be e2e and integration tests, in addition to unit tests?
396-
- How will it be tested in isolation vs with other components?
397-
398-
No need to outline all of the test cases, just the general strategy. Anything
399-
that would count as tricky in the implementation, and anything particularly
400-
challenging to test, should be called out.
401-
402-
All code is expected to have adequate tests (eventually with coverage
403-
expectations). Please adhere to the [Kubernetes testing guidelines][testing-guidelines]
404-
when drafting this test plan.
405-
406-
[testing-guidelines]: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
407-
-->
363+
- unit tests for the pagination logic in etcd3 client
364+
- integration tests checking valid and invalid combinations of limit and continue both
365+
with watchcache enabled and disabled
366+
- e2e tests verifying that clients opting in for chunking can retrieve consistent
367+
paginated results
408368

409369
### Graduation Criteria
410370

411-
<!--
412-
**Note:** *Not required until targeted at a release.*
413-
414-
Define graduation milestones.
415-
416-
These may be defined in terms of API maturity, [feature gate] graduations, or as
417-
something else. The KEP should keep this high-level with a focus on what
418-
signals will be looked at to determine graduation.
419-
420-
Consider the following in developing the graduation criteria for this enhancement:
421-
- [Maturity levels (`alpha`, `beta`, `stable`)][maturity-levels]
422-
- [Feature gate][feature gate] lifecycle
423-
- [Deprecation policy][deprecation-policy]
424-
425-
Clearly define what graduation means by either linking to the [API doc
426-
definition](https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-versioning)
427-
or by redefining what graduation means.
428-
429-
In general we try to use the same stages (alpha, beta, GA), regardless of how the
430-
functionality is accessed.
431-
432-
[feature gate]: https://git.k8s.io/community/contributors/devel/sig-architecture/feature-gates.md
433-
[maturity-levels]: https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions
434-
[deprecation-policy]: https://kubernetes.io/docs/reference/using-api/deprecation-policy/
435-
436-
Below are some examples to consider, in addition to the aforementioned [maturity levels][maturity-levels].
437-
438371
#### Alpha
439372

440373
- Feature implemented behind a feature flag
441374
- Initial e2e tests completed and enabled
442375

443376
#### Beta
444377

445-
- Gather feedback from developers and surveys
446-
- Complete features A, B, C
447-
- Additional tests are in Testgrid and linked in KEP
378+
- All tests are stable
379+
- Scalability impact of the feature is asessed
448380

449381
#### GA
450382

451-
- N examples of real-world usage
452-
- N installs
453-
- More rigorous forms of testing—e.g., downgrade tests and scalability tests
454-
- Allowing time for feedback
455-
456-
**Note:** Generally we also wait at least two releases between beta and
457-
GA/stable, because there's no opportunity for user feedback, or even bug reports,
458-
in back-to-back releases.
459-
460-
**For non-optional features moving to GA, the graduation criteria must include
461-
[conformance tests].**
462-
463-
[conformance tests]: https://git.k8s.io/community/contributors/devel/sig-architecture/conformance-tests.md
464-
465-
#### Deprecation
383+
- e2e tests are graduated to conformance
466384

467-
- Announce deprecation and support policy of the existing flag
468-
- Two versions passed since introducing the functionality that deprecates the flag (to address version skew)
469-
- Address feedback on usage/changed behavior, provided on GitHub issues
470-
- Deprecate the flag
471-
-->
472385

473386
### Upgrade / Downgrade Strategy
474387

475-
<!--
476-
If applicable, how will the component be upgraded and downgraded? Make sure
477-
this is in the test plan.
478-
479-
Consider the following in developing an upgrade/downgrade strategy for this
480-
enhancement:
481-
- What changes (in invocations, configurations, API use, etc.) is an existing
482-
cluster required to make on upgrade, in order to maintain previous behavior?
483-
- What changes (in invocations, configurations, API use, etc.) is an existing
484-
cluster required to make on upgrade, in order to make use of the enhancement?
485-
-->
388+
API chunking will be an opt-in feature. Additionally, it's purely in-memory feature
389+
so upgrade/downgrade is not a problem.
486390

487391
### Version Skew Strategy
488392

489-
<!--
490-
If applicable, how will the component handle version skew with other
491-
components? What are the guarantees? Make sure this is in the test plan.
492-
493-
Consider the following in developing a version skew strategy for this
494-
enhancement:
495-
- Does this enhancement involve coordinating behavior in the control plane and
496-
in the kubelet? How does an n-2 kubelet without this feature available behave
497-
when this feature is used?
498-
- Will any other components on the node change? For example, changes to CSI,
499-
CRI or CNI may require updating that component before the kubelet.
500-
-->
393+
N/A
501394

502395
## Production Readiness Review Questionnaire
503396

397+
TODO: Fill this in
398+
504399
<!--
505400
506401
Production readiness reviews are intended to ensure that features merging into
@@ -833,22 +728,12 @@ For each of them, fill in the following information by copying the below templat
833728

834729
## Implementation History
835730

836-
<!--
837-
Major milestones in the lifecycle of a KEP should be tracked in this section.
838-
Major milestones might include:
839-
- the `Summary` and `Motivation` sections being merged, signaling SIG acceptance
840-
- the `Proposal` section being merged, signaling agreement on a proposed design
841-
- the date implementation started
842-
- the first Kubernetes release where an initial version of the KEP was available
843-
- the version of Kubernetes where the KEP graduated to general availability
844-
- when the KEP was retired or superseded
845-
-->
731+
- v1.8: Alpha release
732+
- v1.9: Beta release
846733

847734
## Drawbacks
848735

849-
<!--
850-
Why should this KEP _not_ be implemented?
851-
-->
736+
N/A
852737

853738
## Alternatives
854739

keps/sig-api-machinery/365-paginated-lists/kep.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ title: Paginated API Lists
22
kep-number: 365
33
authors:
44
- "@smarterclayton"
5+
- "@wojtek-t"
56
owning-sig: sig-api-machinery
67
participating-sigs:
78
- sig-scalability

0 commit comments

Comments
 (0)