1
- <!--
2
- **Note:** When your KEP is complete, all of these comment blocks should be removed.
3
-
4
- To get started with this template:
5
-
6
- - [x] **Pick a hosting SIG.**
7
- Make sure that the problem space is something the SIG is interested in taking
8
- up. KEPs should not be checked in without a sponsoring SIG.
9
- - [x] **Create an issue in kubernetes/enhancements**
10
- When filing an enhancement tracking issue, please ensure to complete all
11
- fields in that template. One of the fields asks for a link to the KEP. You
12
- can leave that blank until this KEP is filed, and then go back to the
13
- enhancement and add the link.
14
- - [x] **Make a copy of this template directory.**
15
- Copy this template into the owning SIG's directory and name it
16
- `NNNN-short-descriptive-title`, where `NNNN` is the issue number (with no
17
- leading-zero padding) assigned to your enhancement above.
18
- - [x] **Fill out as much of the kep.yaml file as you can.**
19
- At minimum, you should fill in the "title", "authors", "owning-sig",
20
- "status", and date-related fields.
21
- - [x] **Fill out this file as best you can.**
22
- At minimum, you should fill in the "Summary", and "Motivation" sections.
23
- These should be easy if you've preflighted the idea of the KEP with the
24
- appropriate SIG(s).
25
- - [x] **Create a PR for this KEP.**
26
- Assign it to people in the SIG that are sponsoring this process.
27
- - [x] **Merge early and iterate.**
28
- Avoid getting hung up on specific details and instead aim to get the goals of
29
- the KEP clarified and merged quickly. The best way to do this is to just
30
- start with the high-level sections and fill out details incrementally in
31
- subsequent PRs.
32
-
33
- Just because a KEP is merged does not mean it is complete or approved. Any KEP
34
- marked as a `provisional` is a working document and subject to change. You can
35
- denote sections that are under active debate as follows:
36
-
37
- ```
38
- <<[UNRESOLVED optional short context or usernames ]>>
39
- Stuff that is being argued.
40
- <<[/UNRESOLVED]>>
41
- ```
42
-
43
- When editing KEPS, aim for tightly-scoped, single-topic PRs to keep discussions
44
- focused. If you disagree with what is already in a document, open a new PR
45
- with suggested changes.
46
-
47
- One KEP corresponds to one "feature" or "enhancement", for its whole lifecycle.
48
- You do not need a new KEP to move from beta to GA, for example. If there are
49
- new details that belong in the KEP, edit the KEP. Once a feature has become
50
- "implemented", major changes should get new KEPs.
51
-
52
- The canonical place for the latest set of instructions (and the likely source
53
- of this file) is [here](/keps/NNNN-kep-template/README.md).
54
-
55
- **Note:** Any PRs to move a KEP to `implementable` or significant changes once
56
- it is marked `implementable` must be approved by each of the KEP approvers.
57
- If any of those approvers is no longer appropriate than changes to that list
58
- should be approved by the remaining approvers and/or the owning SIG (or
59
- SIG Architecture for cross cutting KEPs).
60
- -->
61
1
# KEP-1453: Graduate Ingress API to GA
62
2
63
- <!--
64
- This is the title of your KEP. Keep it short, simple, and descriptive. A good
65
- title can help communicate what the KEP is and should be considered as part of
66
- any review.
67
- -->
68
-
69
- <!--
70
- A table of contents is helpful for quickly jumping to sections of a KEP and for
71
- highlighting any additional information provided beyond the standard KEP
72
- template.
73
-
74
- Ensure the TOC is wrapped with
75
- <code><!-- toc --&rt;<!-- /toc --&rt;</code>
76
- tags, and then generate with `hack/update-toc.sh`.
77
- -->
78
-
79
3
<!-- toc -->
80
4
- [ Release Signoff Checklist] ( #release-signoff-checklist )
81
5
- [ Summary] ( #summary )
@@ -181,40 +105,12 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
181
105
182
106
## Summary
183
107
184
- <!--
185
- This section is incredibly important for producing high quality user-focused
186
- documentation such as release notes or a development roadmap. It should be
187
- possible to collect this information before implementation begins in order to
188
- avoid requiring implementors to split their attention between writing release
189
- notes and implementing the feature itself. KEP editors, SIG Docs, and SIG PM
190
- should help to ensure that the tone and content of the `Summary` section is
191
- useful for a wide audience.
192
-
193
- A good summary is probably at least a paragraph in length.
194
-
195
- Both in this section and below, follow the guidelines of the [documentation
196
- style guide]. In particular, wrap lines to a reasonable length, to make it
197
- easier for reviewers to cite specific portions, and to minimize diff churn on
198
- updates.
199
-
200
- [documentation style guide]: https://github.com/kubernetes/community/blob/master/contributors/guide/style-guide.md
201
- -->
202
-
203
108
- Move the Ingress resource from the current API group
204
109
(extensions.v1beta1) to networking.v1beta1.
205
110
- Graduate the Ingress API with bug fixes to GA.
206
111
207
112
## Motivation
208
113
209
- <!--
210
- This section is for explicitly listing the motivation, goals and non-goals of
211
- this KEP. Describe why the change is important and the benefits to users. The
212
- motivation section can optionally provide links to [experience reports][] to
213
- demonstrate the interest in a KEP within the wider Kubernetes community.
214
-
215
- [experience reports]: https://github.com/golang/go/wiki/ExperienceReports
216
- -->
217
-
218
114
The ` extensions ` API group is considered deprecated. Ingress is the
219
115
last non-deprecated API in that group. All other types have been
220
116
migrated to other permanent API groups. Such an API group migration
@@ -256,11 +152,6 @@ Ingress API or an entirely different API with a superset of features.
256
152
257
153
### Goals
258
154
259
- <!--
260
- List the specific goals of the KEP. What is it trying to achieve? How will we
261
- know that this has succeeded?
262
- -->
263
-
264
155
A detailed list of the changes being proposed is given in the Design
265
156
section below.
266
157
@@ -275,51 +166,19 @@ section below.
275
166
276
167
### Non-Goals
277
168
278
- <!--
279
- What is out of scope for this KEP? Listing non-goals helps to focus discussion
280
- and make progress.
281
- -->
282
-
283
169
## Proposal
284
170
285
- <!--
286
- This is where we get down to the specifics of what the proposal actually is.
287
- This should have enough detail that reviewers can understand exactly what
288
- you're proposing, but should not include things like API designs or
289
- implementation. The "Design Details" section below is for the real
290
- nitty-gritty.
291
- -->
292
-
293
171
- See [ Goals] ( #goals ) and [ Motivation] ( #motivation )
294
172
295
173
### Risks and Mitigations
296
174
297
- <!--
298
- What are the risks of this proposal and how do we mitigate. Think broadly.
299
- For example, consider both security and how this will impact the larger
300
- kubernetes ecosystem.
301
-
302
- How will security be reviewed and by whom?
303
-
304
- How will UX be reviewed and by whom?
305
-
306
- Consider including folks that also work outside the SIG or subproject.
307
- -->
308
-
309
175
- No additional security tests have been conducted outside of the normal
310
176
review from the CNCF and the API reviewers.
311
177
- UX reviews have been presented to user groups within KubeCon workshops
312
178
and survey results. The API has existed in beta since Kubernetes v1.1.
313
179
314
180
## Design Details
315
181
316
- <!--
317
- This section should contain enough information that the specifics of your
318
- change are understandable. This may include API specs (though not always
319
- required) or even code snippets. If there's any ambiguity about HOW your
320
- proposal will be implemented, this is the place to discuss them.
321
- -->
322
-
323
182
This section describes the API fixes proposed for GA.
324
183
325
184
### Summary of the proposed changes
@@ -795,85 +654,13 @@ backend:
795
654
796
655
### Test Plan
797
656
798
- <!--
799
- **Note:** *Not required until targeted at a release.*
800
-
801
- Consider the following in developing a test plan for this enhancement:
802
- - Will there be e2e and integration tests, in addition to unit tests?
803
- - How will it be tested in isolation vs with other components?
804
-
805
- No need to outline all of the test cases, just the general strategy. Anything
806
- that would count as tricky in the implementation and anything particularly
807
- challenging to test should be called out.
808
-
809
- All code is expected to have adequate tests (eventually with coverage
810
- expectations). Please adhere to the [Kubernetes testing guidelines][testing-guidelines]
811
- when drafting this test plan.
812
-
813
- [testing-guidelines]: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
814
- -->
815
-
816
657
- Copy existing Ingress tests with changes to new resource group
817
658
- Add roundtrip tests for any new/changed resources
818
659
- CRUD e2e test exercising all verbs and endpoints on Ingress suitable for promotion to conformance
819
660
- CRUD e2e test exercising all verbs and endpoints on IngressClass suitable for promotion to conformance
820
661
821
662
### Graduation Criteria
822
663
823
- <!--
824
- **Note:** *Not required until targeted at a release.*
825
-
826
- Define graduation milestones.
827
-
828
- These may be defined in terms of API maturity, or as something else. The KEP
829
- should keep this high-level with a focus on what signals will be looked at to
830
- determine graduation.
831
-
832
- Consider the following in developing the graduation criteria for this enhancement:
833
- - [Maturity levels (` alpha`, `beta`, `stable`)][maturity-levels]
834
- - [Deprecation policy][deprecation-policy]
835
-
836
- Clearly define what graduation means by either linking to the [API doc
837
- definition](https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-versioning),
838
- or by redefining what graduation means.
839
-
840
- In general, we try to use the same stages (alpha, beta, GA), regardless how the
841
- functionality is accessed.
842
-
843
- [maturity-levels] : https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions
844
- [deprecation-policy] : https://kubernetes.io/docs/reference/using-api/deprecation-policy/
845
-
846
- Below are some examples to consider, in addition to the aforementioned [maturity levels][maturity-levels].
847
-
848
- # ### Alpha -> Beta Graduation
849
-
850
- - Gather feedback from developers and surveys
851
- - Complete features A, B, C
852
- - Tests are in Testgrid and linked in KEP
853
-
854
- # ### Beta -> GA Graduation
855
-
856
- - N examples of real world usage
857
- - N installs
858
- - More rigorous forms of testing e.g., downgrade tests and scalability tests
859
- - Allowing time for feedback
860
-
861
- **Note:** Generally we also wait at least 2 releases between beta and
862
- GA/stable, since there's no opportunity for user feedback, or even bug reports,
863
- in back-to-back releases.
864
-
865
- # ### Removing a deprecated flag
866
-
867
- - Announce deprecation and support policy of the existing flag
868
- - Two versions passed since introducing the functionality which deprecates the flag (to address version skew)
869
- - Address feedback on usage/changed behavior, provided on GitHub issues
870
- - Deprecate the flag
871
-
872
- **For non-optional features moving to GA, the graduation criteria must include [conformance tests].**
873
-
874
- [conformance tests] : https://git.k8s.io/community/contributors/devel/sig-architecture/conformance-tests.md
875
- -->
876
-
877
664
### API group move to ` networking.k8s.io/v1beta1`
878
665
879
666
- [x] 1.14 : Ingress API exists and has parity with existing
@@ -894,18 +681,6 @@ in back-to-back releases.
894
681
895
682
# ## Upgrade / Downgrade Strategy
896
683
897
- <!--
898
- If applicable, how will the component be upgraded and downgraded? Make sure
899
- this is in the test plan.
900
-
901
- Consider the following in developing an upgrade/downgrade strategy for this
902
- enhancement :
903
- - What changes (in invocations, configurations, API use, etc.) is an existing
904
- cluster required to make on upgrade in order to keep previous behavior?
905
- - What changes (in invocations, configurations, API use, etc.) is an existing
906
- cluster required to make on upgrade in order to make use of the enhancement?
907
- -->
908
-
909
684
- Field changes such as backend to defaultBackend are only implemented in the v1 API and tests are added to
910
685
ensure roundtripping
911
686
- Newer features such as regex requirements for paths were released in 1.18 but could be updated and not
@@ -914,51 +689,12 @@ are necessary.
914
689
915
690
# ## Version Skew Strategy
916
691
917
- <!--
918
- If applicable, how will the component handle version skew with other
919
- components? What are the guarantees? Make sure this is in the test plan.
920
-
921
- Consider the following in developing a version skew strategy for this
922
- enhancement :
923
- - Does this enhancement involve coordinating behavior in the control plane and
924
- in the kubelet? How does an n-2 kubelet without this feature available behave
925
- when this feature is used?
926
- - Will any other components on the node change? For example, changes to CSI,
927
- CRI or CNI may require updating that component before the kubelet.
928
- -->
929
-
930
692
- See [Upgrade / Downgrade Strategy](#upgrade-/-downgrade-strategy)
931
693
932
694
# # Production Readiness Review Questionnaire
933
695
934
- <!--
935
-
936
- Production readiness reviews are intended to ensure that features merging into
937
- Kubernetes are observable, scalable and supportable, can be safely operated in
938
- production environments, and can be disabled or rolled back in the event they
939
- cause increased failures in production. See more in the PRR KEP at
940
- https://git.k8s.io/enhancements/keps/sig-architecture/20190731-production-readiness-review-process.md
941
-
942
- Production readiness review questionnaire must be completed for features in
943
- v1.19 or later, but is non-blocking at this time. That is, approval is not
944
- required in order to be in the release.
945
-
946
- In some cases, the questions below should also have answers in `kep.yaml`. This
947
- is to enable automation to verify the presence of the review, and reduce review
948
- burden and latency.
949
-
950
- The KEP must have a approver from the
951
- [`prod-readiness-approvers`](http://git.k8s.io/enhancements/OWNERS_ALIASES)
952
- team. Please reach out on the
953
- [#prod-readiness](https://kubernetes.slack.com/archives/CPNHUMN74) channel if
954
- you need any help or guidance.
955
-
956
- -->
957
-
958
696
# ## Feature enablement and rollback
959
697
960
- <!-- _This section must be completed when targeting alpha to a release._ -->
961
-
962
698
* **How can this feature be enabled / disabled in a live cluster?**
963
699
- [ ] Feature gate (also fill in values in `kep.yaml`)
964
700
- Feature gate name :
@@ -1163,17 +899,6 @@ _This section must be completed when targeting beta graduation to a release._
1163
899
1164
900
# # Implementation History
1165
901
1166
- <!--
1167
- Major milestones in the life cycle of a KEP should be tracked in this section.
1168
- Major milestones might include
1169
- - the `Summary` and `Motivation` sections being merged signaling SIG acceptance
1170
- - the `Proposal` section being merged signaling agreement on a proposed design
1171
- - the date implementation started
1172
- - the first Kubernetes release where an initial version of the KEP was available
1173
- - the version of Kubernetes where the KEP graduated to general availability
1174
- - when the KEP was retired or superseded
1175
- -->
1176
-
1177
902
# ## 1.15
1178
903
1179
904
- [x] Update API server to persist in networking.k8s.io/v1beta1 kubernetes/kubernetes#77139
@@ -1221,18 +946,8 @@ Major milestones might include
1221
946
1222
947
# # Drawbacks
1223
948
1224
- <!--
1225
- Why should this KEP _not_ be implemented?
1226
- -->
1227
-
1228
949
# # Alternatives
1229
950
1230
- <!--
1231
- What other approaches did you consider and why did you rule them out? These do
1232
- not need to be as detailed as the proposal, but should include enough
1233
- information to express the idea and why it was not acceptable.
1234
- -->
1235
-
1236
951
See [Motivations](#motivations)
1237
952
1238
953
# # Appendix
@@ -1382,9 +1097,3 @@ is likely impossible across the [many implementations][regex-survey].
1382
1097
1383
1098
1384
1099
# # Infrastructure Needed (optional)
1385
-
1386
- <!--
1387
- Use this section if you need things from the project/SIG. Examples include a
1388
- new subproject, repos requested, github details. Listing these here allows a
1389
- SIG to get the process for these resources started right away.
1390
- -->
0 commit comments