Skip to content

Commit 761893d

Browse files
authored
Merge pull request #5351 from natasha41575/roadmap
update kustomize roadmap 23-24
2 parents 48fd585 + d20a7c4 commit 761893d

File tree

1 file changed

+139
-78
lines changed

1 file changed

+139
-78
lines changed

ROADMAP.md

Lines changed: 139 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,173 @@
1-
# Kustomize roadmap 2022
1+
# Kustomize roadmap 2023-2024
22

3-
Presented at the [January 26, 2022, SIG-CLI meeting](https://youtu.be/l2plzJ9MRlk?t=1321)
3+
This document describes the items that we hope to make progress on over the next
4+
1 year (H2 2023 and H1 2024). Take this roadmap as more of what we hope to achieve
5+
rather than what we promise to achieve, as some items in this doc are highly dependent
6+
on the success that we have on-ramping new contributors to the project, and other
7+
items will depend on external contributions, which can vary.
48

5-
kustomize maintainers: @knverey, @natasha41575
9+
If you are interested in contributing to a particular area, you can look through
10+
the project board for that area and assign yourself to one of the issues. It is
11+
recommended to start with smaller issues to ramp up on the project before starting
12+
to tackle larger issues.
613

7-
[Objective: Improve contributor community](#objective-improve-contributor-community)
14+
## Kustomize contributors (at time of writing):
815

9-
[Objective: Improve end-user experience](#objective-improve-end-user-experience)
16+
kustomize owner: @natasha41575
1017

11-
[Objective: Improve extension experience](#objective-improve-extension-experience)
18+
kustomize maintainers: @annasong20, @koba1t
1219

13-
## Objective: Improve contributor community
20+
kustomize contributors: @varshaprasad96
1421

15-
**_WHO: End user who also contributes source code._**
1622

17-
Top priority:
23+
# H2 2023
1824

19-
- Kustomization v1 (also end-user impact) ([PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/12))
20-
- Remove the following fields:
21-
- [vars](https://github.com/kubernetes-sigs/kustomize/issues/2052)
22-
- [patchesJson6902, patchesStrategicMerge (consolidate on \`patches)](https://github.com/kubernetes-sigs/kustomize/issues/4376)
23-
- [helmChartInflationGenerator, helmCharts, helmGlobals](https://github.com/kubernetes-sigs/kustomize/issues/4401)
24-
- all long-deprecated fields in Kustomization v1 such as \`bases\` and those being accommodate by kustomize edit \[[see code snippet](https://github.com/kubernetes-sigs/kustomize/blob/ee4b7847f0beb6c0d2070673b10f23f7b3e92e82/api/types/fix.go#L15)\]
25-
- Ensure that \`kustomize edit fix\` handles migrations for all those, and that anything it changes is not still present in v1.
26-
- [Add reorder field](https://github.com/kubernetes-sigs/kustomize/issues/3913). Default should be FIFO and legacy should also be supported (could add alphabetic and custom sort support eventually). Replaces -reorder flag.
27-
- [Reconcile openapi and crds field](https://github.com/kubernetes-sigs/kustomize/issues/3944)
28-
- [Consider deprecating configurations field](https://github.com/kubernetes-sigs/kustomize/issues/3945) (old, pre-plugin, pre-openapi global configuration)
29-
- [Add a field to enable the managedby label](https://github.com/kubernetes-sigs/kustomize/issues/4047)
25+
## Goal: Create kustomize leadership and contributor playbooks
3026

31-
Second priority:
27+
Contributors: natasha41575, annasong20
3228

33-
- Improve contributor documentation
34-
- [Instructions to upgrade kustomize-in-kubectl](https://github.com/kubernetes-sigs/kustomize/issues/3951)
29+
Priority: High
3530

36-
Also very valuable to the project:
31+
Effort: Medium
3732

38-
- [Improve the release process](https://github.com/kubernetes-sigs/kustomize/issues/3952) to support regular biweekly releases [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/7)
39-
- Release sigs.k8s.io/kustomize/api v1.0.0 [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/5)
40-
- [Reduce the public surface of the API module](https://github.com/kubernetes-sigs/kustomize/issues/3942)
41-
- [Vendor all transitive deps](https://github.com/kubernetes-sigs/kustomize/issues/3706). Since kustomize is in kubectl, we must do as kubectl does to manage deps, exposing new transitive deps in code review.
42-
- Project administration
43-
- [Rename master branch to main](https://github.com/kubernetes-sigs/kustomize/issues/3954)
33+
In the past, when the leads have left in various kubernetes projects, it
34+
left a wide hole that few could easily fill, leaving the remaining leads in a
35+
bad position and the project understaffed. We should assume that we will need
36+
to onboard new maintainers in the future, and should have playbooks for doing so.
37+
As we grow the contributor base in kustomize, we will build these playbooks for
38+
those who are contributing and those who are looking to grow into kustomize leaders.
39+
To ensure the long term health and stability of the project, we should have:
4440

41+
- On-boarding guides for new contributors
42+
- Clear guidelines for how to climb the kustomize ladder from contributor to approver to owner
43+
- A plan (maybe a schedule) for future kustomize cohorts
44+
- A succession plan, in case the current kustomize leads ever decide to step down
4545

46+
## Goal: Onboard 2-5 new contributors to kustomize
4647

47-
## Objective: Improve end-user experience
48+
Contributors: natasha41575, annasong20, koba1t
4849

49-
**_WHO: End user that wants kustomize build artifacts (binaries, containers)._**
50+
Priority: High
5051

51-
Top priorities:
52+
Effort: High
5253

53-
- Bug fixes:
54-
- Fix bugs in basic anchor support: [issue query](https://github.com/kubernetes-sigs/kustomize/issues?q=is%3Aopen+is%3Aissue+label%3Aarea%2Fanchors)
55-
- integer keys support: [#3446](https://github.com/kubernetes-sigs/kustomize/issues/3446)
56-
- kyaml not respecting \`$patch replace|retainKeys\`: [#2037](https://github.com/kubernetes-sigs/kustomize/issues/2037)
57-
- kustomize removing quotes from namespace field values: [#4146](https://github.com/kubernetes-sigs/kustomize/issues/4146)
58-
- Kustomize doesn’t support metadata.generateName: [#641](https://github.com/kubernetes-sigs/kustomize/issues/641)
59-
- Send kustomize CLI version number into kubectl ([kubectl issue](https://github.com/kubernetes/kubectl/issues/797) / [kustomize issue](https://github.com/kubernetes-sigs/kustomize/issues/1424))
60-
- Kustomize performance investigations/improvements [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/13)
61-
- [Support generic resource references in name reference tracking](https://github.com/kubernetes-sigs/kustomize/issues/3418)
62-
- [KEP 4267: retain the resource origin and transformer data in annotations](https://github.com/kubernetes-sigs/kustomize/pull/4267)
54+
In order to make progress on kustomize goals in the future, we need to increase the
55+
level of staffing on kustomize. We should leverage community contributions to keep kustomize
56+
healthy and making progress.
6357

64-
Secondary priorities:
58+
The primary means in which we will try to find new kustomize contributors is through the new kustomize
59+
maintainer training cohort. We will lead a group of ~20 kubernetes community members through a 3-6 month
60+
training program, involving talk sessions, bug scrubs, issue triage, PR reviews, and coding projects for
61+
each member. The effort from existing kustomize maintainers here will be to:
62+
- Organize the cohort, so that each cohort member feels productive and understands what they should work on
63+
- Align motivation of the cohort members with the work that we assign to them.
64+
- Review PRs from cohort members in a timely manner.
65+
- Be the point(s) of contact for questions/escalations
66+
- Lead weekly stand-ups and monthly bug scrubs
6567

66-
- kustomize cli v5 ([PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/14))
67-
- [Drop the --reorder flag](https://github.com/kubernetes-sigs/kustomize/issues/3947)
68-
- [Graduate cfg read-only commands out of alpha](https://github.com/kubernetes-sigs/kustomize/issues/4090).
69-
- [Drop the –enable-managedby-label](https://github.com/kubernetes-sigs/kustomize/issues/4047)
70-
- Drop old plugin-related fields in favor of [the Catalog-style fields](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/2906-kustomize-function-catalog).
71-
- [Drop the helm flags](https://github.com/kubernetes-sigs/kustomize/issues/4401)
72-
- [Confusion around namespace replacement](https://github.com/kubernetes-sigs/kustomize/issues/880).
68+
At the end of all this, if we have a small team of contributors to kustomize, who understand its founding
69+
philosophy and intentions, we should be able to keep the project up to date.
7370

74-
Also very valuable to the project:
71+
## Goal: Improve kustomize extensibility through KRM functions and CRD support
7572

76-
- [Overinclusion of root directory error in error messages](https://github.com/kubernetes-sigs/kustomize/issues/4348)
77-
- [Add kustomize localize command](https://github.com/kubernetes-sigs/kustomize/issues/3980)
78-
- [Fix Windows support in test suite](https://github.com/kubernetes-sigs/kustomize/issues/4001)
79-
- Improve end-user documentation [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/9)
73+
Contributors: koba1t, varshaprasad96, external contributors
8074

75+
Priority: High
8176

82-
## Objective: Improve extension experience
77+
Effort: High
8378

84-
**_WHO: Plugin developers: end users who extend kustomize, but don’t think about internals._**
79+
Project board: https://github.com/orgs/kubernetes-sigs/projects/53/views/1
8580

86-
This objective is described in detail in the [Kustomize Plugin Graduation KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/2953-kustomize-plugin-graduation) / [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/15) .
81+
For a long time, we have supported KRM functions as the proper way to implement custom generators and transformers.
82+
However, due to limited staffing, we have been unable to drive this feature out of alpha in kustomize. The two
83+
main features which we hope to make progress on are Composition and Catalog, two long-standing proposals for which
84+
numerous users have been waiting for a long time. There are several open issues
85+
regarding KRM functions where our long-term answer has been these two features, but users have been hearing about them
86+
for over a year without seeing any progress. If we can implement them, they will vastly improve usability and security
87+
of KRM functions.
8788

88-
Top priorities:
89+
One item that falls under this category that does not currently have a contributor is improving CRD support.
90+
Currently, it is difficult to use CRDs properly, as there are three different fields (configurations, openapi, and crds)
91+
where users have to input their CRD configuration. We need to consolidate these fields into one easy to use feature to
92+
support CRDs. If you are interested in putting together a design proposal for how to tackle this task, please reach
93+
out to the kustomize maintainers.
8994

90-
- Fix core usability issues with KRM Function extensions:
91-
- [Better errors for function config failures](https://github.com/kubernetes-sigs/kustomize/issues/4398)
92-
- [Container KRM Mounts are not mounting via function parameters](https://github.com/kubernetes-sigs/kustomize/issues/4290)
93-
- [Resolution of local file references in extensions transformer configuration](https://github.com/kubernetes-sigs/kustomize/issues/4154)
94-
- [Do not silently ignore plugins when config has typo](https://github.com/kubernetes-sigs/kustomize/issues/4399)
95-
- [KRM Exec Function can't locate executable when referencing a base](https://github.com/kubernetes-sigs/kustomize/issues/4347)
96-
- Once core usability issues are fixed, [deprecate legacy exec and Go plugin support](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/2953-kustomize-plugin-graduation)
97-
- [Catalog KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/2906-kustomize-function-catalog)
95+
# H1 2024
9896

99-
Secondary priorities:
97+
## Goal: Improve the kustomize documentation
10098

101-
- [Remove Starlark support](https://github.com/kubernetes-sigs/kustomize/issues/4349)
102-
- [Composition KEP](https://github.com/kubernetes/enhancements/pull/2300). The implementation is complete in [#4223](https://github.com/kubernetes-sigs/kustomize/pull/4323), but depends on:
103-
- [Convert resources and components to be backed by a reusable generator](https://github.com/kubernetes-sigs/kustomize/issues/4402)
104-
- [Enable explicitly invoked transformers to use default fieldSpecs](https://github.com/kubernetes-sigs/kustomize/issues/4404)
105-
- [Enable built-in generators to be used in the transformers field ](https://github.com/kubernetes-sigs/kustomize/issues/4403)
99+
Contributors: annasong20, external contributions
106100

101+
Priority: High
107102

108-
Also very valuable to the project:
103+
Effort: High
109104

110-
- [Improve docs for kyaml libraries](https://github.com/kubernetes-sigs/kustomize/issues/3950), especially by adding examples.
111-
- [Create a reserved field for plugin runtime information](https://github.com/kubernetes-sigs/kustomize/issues/4405)
112-
- [Develop new standard process for implementing builtin transformers](https://github.com/kubernetes-sigs/kustomize/issues/4400)
105+
Project board: https://github.com/orgs/kubernetes-sigs/projects/50
106+
107+
The kustomize documentation is currently fragmented, out of date, and lacks examples to fully understand its value.
108+
We have had a "docs project" for a long time; we need to prioritize implementing it so that the documentation is in
109+
one place, easy to find, and helps new users get started more easily. Some outcomes from this project should be:
110+
111+
- A single, unified website hosted on kustomize.io
112+
- Updated information architecture, and a plan to keep it up to date
113+
- End to end examples of using kustomize, including complex use cases
114+
115+
## Goal: Fix core usability bugs in kustomize
116+
117+
Contributors: external contributions
118+
119+
Priority: High
120+
121+
Effort: High
122+
123+
Project board: https://github.com/orgs/kubernetes-sigs/projects/51
124+
125+
There are several core usability issues that block some users from adopting kustomize features or in
126+
some base block users from using kustomize entirely. These issues range from small bugs with workable but
127+
inconvenient workarounds, to enormous feature gaps.
128+
129+
As part of this goal, we should work toward reducing the number of such issues that we have, making
130+
kustomize work more smoothly and predictably, and be usable for a larger range of users.
131+
132+
There are a lot of important issues in this project, but the biggest and highest priority one is that
133+
kustomize doesn't currently support metadata.GenerateName. Unfortunately, we don't currently have anyone
134+
actively working on this issue, we would need an external contributor to reach out to the kustomize
135+
maintainers to pick it up.
136+
137+
## Goal: Improve kustomize CI, release, & security patch processes
138+
139+
Contributors: external contributions
140+
141+
Priority: Medium
142+
143+
Effort: High
144+
145+
Project board: https://github.com/orgs/kubernetes-sigs/projects/54
146+
147+
The kustomize release process is currently done on-demand and is strictly linear. This means that if we find a CVE,
148+
we are forced to release the next version of kustomize ASAP, and we are required to release every PR that has merged
149+
since the last release. This can put us in a sticky situation if we have a breaking change that we are
150+
not ready to release yet, but we need a patch quickly.
151+
152+
We should try to improve the kustomize release process so that we can release frequently, reliably, and with some
153+
flexibility. The outcome of this effort should be:
154+
155+
- kustomize is released on a regular cadence (biweekly or monthly)
156+
- kustomize is able to separate patch and feature releases, so that we can fix CVEs without needing to release
157+
everything that we have in flight
158+
- We can detect and fix CVEs early
159+
160+
## Goal: Take long-standing alpha commands out of alpha
161+
162+
Contributors: external contributions
163+
164+
Priority: Medium
165+
166+
Effort: Medium
167+
168+
Project board: https://github.com/orgs/kubernetes-sigs/projects/52
169+
170+
There are several commands in kustomize that have been alpha for a long time, including the cfg command group and
171+
localize. Moving them forward can indicate good health of a project and these commands are useful to many users.
172+
Some of these projects can be good starter issues for new contributors to have an easier onramp while others will
173+
require more effort and thought.

0 commit comments

Comments
 (0)