Skip to content

Commit c727437

Browse files
committed
Additional KEP template updates
Signed-off-by: Stephen Augustus <[email protected]>
1 parent c16b463 commit c727437

File tree

1 file changed

+107
-62
lines changed

1 file changed

+107
-62
lines changed

keps/0000-kep-template.md

+107-62
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
2-
kep-number: 0
3-
title: My First KEP
2+
title: KEP Template
43
authors:
54
- "@janedoe"
65
owning-sig: sig-xxx
@@ -16,14 +15,14 @@ approvers:
1615
editor: TBD
1716
creation-date: yyyy-mm-dd
1817
last-updated: yyyy-mm-dd
19-
status: provisional
18+
status: provisional|implementable|implemented|deferred|rejected|withdrawn|replaced
2019
see-also:
21-
- KEP-1
22-
- KEP-2
20+
- "/keps/sig-aaa/20190101-we-heard-you-like-keps.md"
21+
- "/keps/sig-bbb/20190102-everyone-gets-a-kep.md"
2322
replaces:
24-
- KEP-3
23+
- "/keps/sig-ccc/20181231-replaced-kep.md"
2524
superseded-by:
26-
- KEP-100
25+
- "/keps/sig-xxx/20190104-superceding-kep.md"
2726
---
2827

2928
# Title
@@ -39,12 +38,14 @@ To get started with this template:
3938
Make sure that the problem space is something the SIG is interested in taking up.
4039
KEPs should not be checked in without a sponsoring SIG.
4140
1. **Make a copy of this template.**
42-
Name it `YYYYMMDD-my-title.md`.
41+
Copy this template into the owning SIG's directory (or KEP root directory, as appropriate) and name it `YYYYMMDD-my-title.md`, where `YYYYMMDD` is the date the KEP was first drafted.
4342
1. **Fill out the "overview" sections.**
4443
This includes the Summary and Motivation sections.
4544
These should be easy if you've preflighted the idea of the KEP with the appropriate SIG.
4645
1. **Create a PR.**
4746
Assign it to folks in the SIG that are sponsoring this process.
47+
1. **Create an issue in kubernetes/enhancements, if the enhancement will be targeting changes to kubernetes/kubernetes**
48+
When filing an enhancement tracking issue, please ensure to complete all fields in the template.
4849
1. **Merge early.**
4950
Avoid getting hung up on specific details and instead aim to get the goal of the KEP merged quickly.
5051
The best way to do this is to just start with the "Overview" sections and fill out details incrementally in follow on PRs.
@@ -63,44 +64,65 @@ See the KEP process for details on each of these items.
6364
A table of contents is helpful for quickly jumping to sections of a KEP and for highlighting any additional information provided beyond the standard KEP template.
6465
[Tools for generating][] a table of contents from markdown are available.
6566

66-
* [Table of Contents](#table-of-contents)
67-
* [Summary](#summary)
68-
* [Motivation](#motivation)
69-
* [Goals](#goals)
70-
* [Non-Goals](#non-goals)
71-
* [Proposal](#proposal)
72-
* [User Stories [optional]](#user-stories-optional)
73-
* [Story 1](#story-1)
74-
* [Story 2](#story-2)
75-
* [Implementation Details/Notes/Constraints [optional]](#implementation-detailsnotesconstraints-optional)
76-
* [Risks and Mitigations](#risks-and-mitigations)
77-
* [Graduation Criteria](#graduation-criteria)
78-
* [Implementation History](#implementation-history)
79-
* [Drawbacks [optional]](#drawbacks-optional)
80-
* [Alternatives [optional]](#alternatives-optional)
81-
* [Infrastructure Needed [optional]](#infrastructure-needed-optional)
67+
- [Title](#title)
68+
- [Table of Contents](#table-of-contents)
69+
- [Release Signoff Checklist](#release-signoff-checklist)
70+
- [Summary](#summary)
71+
- [Motivation](#motivation)
72+
- [Goals](#goals)
73+
- [Non-Goals](#non-goals)
74+
- [Proposal](#proposal)
75+
- [User Stories [optional]](#user-stories-optional)
76+
- [Story 1](#story-1)
77+
- [Story 2](#story-2)
78+
- [Implementation Details/Notes/Constraints [optional]](#implementation-detailsnotesconstraints-optional)
79+
- [Risks and Mitigations](#risks-and-mitigations)
80+
- [Design Details](#design-details)
81+
- [Test Plan](#test-plan)
82+
- [Graduation Criteria](#graduation-criteria)
83+
- [Examples](#examples)
84+
- [Alpha -> Beta Graduation](#alpha---beta-graduation)
85+
- [Beta -> GA Graduation](#beta---ga-graduation)
86+
- [Removing a deprecated flag](#removing-a-deprecated-flag)
87+
- [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy)
88+
- [Version Skew Strategy](#version-skew-strategy)
89+
- [Implementation History](#implementation-history)
90+
- [Drawbacks [optional]](#drawbacks-optional)
91+
- [Alternatives [optional]](#alternatives-optional)
92+
- [Infrastructure Needed [optional]](#infrastructure-needed-optional)
8293

8394
[Tools for generating]: https://github.com/ekalinin/github-markdown-toc
8495

85-
**ACTION REQUIRED (Seriously):** There must be an issue in [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes/issues)
86-
referencing this KEP and targeted a release milestone *before the [feature freeze](https://github.com/kubernetes/sig-release/tree/master/releases)
87-
of the targeted release*.
96+
## Release Signoff Checklist
8897

89-
## Release Sign off Checklist
98+
**ACTION REQUIRED:** In order to merge code into a release, there must be an issue in [kubernetes/enhancements] referencing this KEP and targeting a release milestone **before [Enhancement Freeze](https://github.com/kubernetes/sig-release/tree/master/releases)
99+
of the targeted release**.
90100

91-
Check these off as the are completed for the release team to track. These must be updated for the feature to be
92-
released.
101+
For enhancements that make changes to code or processes/procedures in core Kubernetes i.e., [kubernetes/kubernetes], we require the following Release Signoff checklist to be completed.
93102

94-
- [ ] Issue in release milestone linked to KEP (insert link here)
95-
- [ ] Design
96-
- [ ] Test Plan
97-
- [ ] Graduation Plan
98-
- [ ] Implemented
99-
- [ ] Documented
103+
Check these off as they are completed for the Release Team to track. These checklist items _must_ be updated for the enhancement to be released.
104+
105+
- [ ] kubernetes/enhancements issue in release milestone, which links to KEP (this should be a link to the KEP location in kubernetes/enhancements, not the initial KEP PR)
106+
- [ ] KEP approvers have set the KEP status to `implementable`
107+
- [ ] Design details are appropriately documented
108+
- [ ] Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
109+
- [ ] Graduation criteria is in place
110+
- [ ] "Implementation History" section is up-to-date for milestone
111+
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
112+
- [ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
113+
114+
**Note:** Any PRs to move a KEP to `implementable` or significant changes once it is marked `implementable` should be approved by each of the KEP approvers. If any of those approvers is no longer appropriate than changes to that list should be approved by the remaining approvers and/or the owning SIG (or SIG-arch for cross cutting KEPs).
115+
116+
**Note:** This checklist is iterative and should be reviewed and updated every time this enhancement is being considered for a milestone.
117+
118+
[kubernetes.io]: https://kubernetes.io/
119+
[kubernetes/enhancements]: https://github.com/kubernetes/enhancements/issues
120+
[kubernetes/kubernetes]: https://github.com/kubernetes/kubernetes
121+
[kubernetes/website]: https://github.com/kubernetes/website
100122

101123
## Summary
102124

103-
The `Summary` section is incredibly important for producing high quality user focused documentation such as release notes or a development road map.
125+
The `Summary` section is incredibly important for producing high quality user-focused documentation such as release notes or a development roadmap.
104126
It should be possible to collect this information before implementation begins in order to avoid requiring implementors to split their attention between writing release notes and implementing the feature itself.
105127
KEP editors, SIG Docs, and SIG PM should help to ensure that the tone and content of the `Summary` section is useful for a wide audience.
106128

@@ -121,7 +143,7 @@ How will we know that this has succeeded?
121143

122144
### Non-Goals
123145

124-
What is out of scope for his KEP?
146+
What is out of scope for this KEP?
125147
Listing non-goals helps to focus discussion and make progress.
126148

127149
## Proposal
@@ -154,71 +176,94 @@ For example, consider both security and how this will impact the larger kubernet
154176
How will security be reviewed and by whom?
155177
How will UX be reviewed and by whom?
156178

157-
Consider including folks that also work outside the sig or subproject.
179+
Consider including folks that also work outside the SIG or subproject.
158180

159181
## Design Details
160182

161183
### Test Plan
162184

163185
**Note:** *Section not required until targeted at a release.*
164186

165-
What is the test plan for the component? E2e, integration, unit testing. How will it be tested in isolation vs
166-
with other components?
187+
Consider the following in developing a test plan for this enhancement:
188+
- Will there be e2e and integration tests, in addition to unit tests?
189+
- How will it be tested in isolation vs with other components?
167190

168191
No need to outline all of the test cases, just the general strategy.
192+
Anything that would count as tricky in the implementation and anything particularly challenging to test should be called out.
193+
194+
All code is expected to have adequate tests (eventually with coverage expectations).
195+
Please adhere to the [Kubernetes testing guidelines][testing-guidelines] when drafting this test plan.
196+
197+
[testing-guidelines]: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
169198

170199
### Graduation Criteria
171200

172201
**Note:** *Section not required until targeted at a release.*
173202

174-
Define graduation milestones. These may be defined in terms of API maturity, or as something else. Initial KEP should keep
203+
Define graduation milestones.
204+
205+
These may be defined in terms of API maturity, or as something else. Initial KEP should keep
175206
this high-level with a focus on what signals will be looked at to determine graduation.
176207

208+
Consider the following in developing the graduation criteria for this enhancement:
209+
- [Maturity levels (`alpha`, `beta`, `stable`)][maturity-levels]
210+
- [Deprecation policy][deprecation-policy]
211+
177212
Clearly define what graduation means by either linking to the [API doc definition](https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-versioning),
178213
or by redefining what graduation means.
179214

180-
Example 1:
215+
In general, we try to use the same stages (alpha, beta, GA), regardless how the functionality is accessed.
216+
217+
[maturity-levels]: https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions
218+
[deprecation-policy]: https://kubernetes.io/docs/reference/using-api/deprecation-policy/
181219

182-
Alpha -> Beta Graduation:
220+
#### Examples
221+
222+
These are generalized examples to consider, in addition to the aforementioned [maturity levels][maturity-levels].
223+
224+
##### Alpha -> Beta Graduation
183225

184226
- Gather feedback from developers and surveys
185227
- Complete features A, B, C
228+
- Tests are in Testgrid and linked in KEP
186229

187-
Example 2:
188-
189-
Beta -> GA Graduation:
230+
##### Beta -> GA Graduation
190231

191232
- N examples of real world usage
192233
- N installs
193-
- Complete features D, E, F
194-
195-
Example 3:
234+
- More rigorous forms of testing e.g., downgrade tests and scalability tests
235+
- Allowing time for feedback
196236

197-
kubectl flag Opt-in -> Opt-out
237+
**Note:** Generally we also wait at least 2 releases between beta and GA/stable, since there's no opportunity for user feedback, or even bug reports, in back-to-back releases.
198238

199-
- 2 versions passed since introducing flag (to address version skew)
200-
- Address feedback from opt-in usage provided on GitHub issues
239+
##### Removing a deprecated flag
201240

202-
Gathering user feedback is crucial for building high quality experiences and SIGs have the important responsibility of setting milestones for stability and completeness.
203-
Hopefully the content previously contained in [umbrella issues][] will be tracked in the `Graduation Criteria` section.
241+
- Announce deprecation and support policy of the existing flag
242+
- Two versions passed since introducing the functionality which deprecates the flag (to address version skew)
243+
- Address feedback on usage/changed behavior, provided on GitHub issues
244+
- Deprecate the flag
204245

205-
For non-optional features moving to GA, the graduation criteria must include [conformance tests](https://github.com/kubernetes/community/blob/master/contributors/devel/conformance-tests.md).
246+
**For non-optional features moving to GA, the graduation criteria must include [conformance tests].**
206247

207-
[umbrella issues]: https://github.com/kubernetes/kubernetes/issues/42752
248+
[conformance tests]: https://github.com/kubernetes/community/blob/master/contributors/devel/conformance-tests.md
208249

209250
### Upgrade / Downgrade Strategy
210251

211-
**Note:** *Section not required until targeted at a release.*
252+
If applicable, how will the component be upgraded and downgraded? Make sure this is in the test plan.
212253

213-
If applicable, how will the component be upgraded and downgraded? Make sure this is in the test plan.
254+
Consider the following in developing an upgrade/downgrade strategy for this enhancement:
255+
- What changes (in invocations, configurations, API use, etc.) is an existing cluster required to make on upgrade in order to keep previous behavior?
256+
- What changes (in invocations, configurations, API use, etc.) is an existing cluster required to make on upgrade in order to make use of the enhancement?
214257

215258
### Version Skew Strategy
216259

217-
**Note:** *Section not required until targeted at a release.*
218-
219-
If applicable, how will the component handle version skew with other components? What are the guarantees? Make sure
260+
If applicable, how will the component handle version skew with other components? What are the guarantees? Make sure
220261
this is in the test plan.
221262

263+
Consider the following in developing a version skew strategy for this enhancement:
264+
- Does this enhancement involve coordinating behavior in the control plane and in the kubelet? How does an n-2 kubelet without this feature available behave when this feature is used?
265+
- Will any other components on the node change? For example, changes to CSI, CRI or CNI may require updating that component before the kubelet.
266+
222267
## Implementation History
223268

224269
Major milestones in the life cycle of a KEP should be tracked in `Implementation History`.

0 commit comments

Comments
 (0)