Commit 2022 roadmap presented to SIG-CLI

This commit is contained in:
Katrina Verey
2022-02-04 12:21:51 -05:00
parent c3c7013f09
commit 6374d3d593
2 changed files with 112 additions and 0 deletions

119
archive/roadmap-2021.md Normal file
View File

@@ -0,0 +1,119 @@
# Kustomize roadmap 2021 Q3/4
Presented at the June 2, 2021 SIG-CLI meeting: [recording](https://youtu.be/YUNSIxWlOPA)
kustomize maintainers: @knverey, @monopole
[Objective: Improve contributor community](#objective-improve-contributor-community)
[Objective: Improve end-user experience](#objective-improve-end-user-experience)
[Objective: Improve extension experience](#objective-improve-extension-experience)
## Objective: Improve contributor community
**WHO: End user who also contributes source code.**
- Publish (this) roadmap.
- Release **sigs.k8s.io/kustomize/api** **v1.0.0** ([PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/5))
- [Fewer public packages](https://github.com/kubernetes-sigs/kustomize/issues/3942):
- builtins (generated code from legacy plugins): Internal
- hasher (for secret and configmap generation): Internal, or maybe kyaml
- ifc (single file with interfaces): Internal except maybe KustHasher and Validator
- Image (utils for parsing image field): Move to image transformer
- konfig: internalkrusty: keep external but rename it to e.g. “build” or “runner”
- kv: internal
- loader: internal
- provenance: probably needs to stay external for the linker, but confirm
- provider: internal
- resmap: needs to stay external as long as the go plugins exist
- testutils: try to make internal, but not a big deal
- [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.
- [Remove starlark dependencies](https://github.com/kubernetes-sigs/kustomize/issues/3943) (but make it possible to re-enable via injection)
- **Kustomization v1 (also end-user impact)** ([PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/12))
- [Deprecate `vars` field](https://github.com/kubernetes-sigs/kustomize/issues/2052). Allowed but no longer honored. This includes:
- merging and documenting the [ReplacementTransformer](https://github.com/kubernetes-sigs/kustomize/issues/3492)
- [supporting vars→replacements migration in `kustomize edit fix`](https://github.com/kubernetes-sigs/kustomize/issues/3849), with documentation
- emitting warnings on stderr pointing users to the migration plan
- [Deprecate `crds` field](https://github.com/kubernetes-sigs/kustomize/issues/3944) with migration instructions to “openapi"
- [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.
- [Consider deprecating `configurations` field](https://github.com/kubernetes-sigs/kustomize/issues/3945) (old, pre-plugin, pre-openapi global configuration)
- Improve contributor documentation
- Clarify [contributor docs](https://kubectl.docs.kubernetes.io/contributing/kustomize/features/) regarding when discussions should happen on issues vs. brought to a SIG meeting
- [Add a top-level ARCHITECTURE.md document](https://github.com/kubernetes-sigs/kustomize/pull/3924).
- [Improve docs for kyaml libraries](https://github.com/kubernetes-sigs/kustomize/issues/3950), especially by adding examples.
- [Instructions to upgrade kustomize-in-kubectl](https://github.com/kubernetes-sigs/kustomize/issues/3951) (how to make a PR like [this one](https://github.com/kubernetes/kubernetes/pull/101120)). The description of that PR contains the instructions that worked on that particular date. Let this happen frequently
- [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)
- More automation - it has toil because of the multiple modules.
- More maintainers with authorization to do releases (e.g. create branches, delete mistake branches, move tags, trigger builds, etc.).
- Include an upgrade PR to kubectl in the release process.
- 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))
- Project administration
- DONE Clean up Kustomize-related [KEPs](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli) to reflect current status
- DONE Onboard Kustomize repo to SIG-CLIs Triage Party for bug scrubs
- [Rename master branch to main](https://github.com/kubernetes-sigs/kustomize/issues/3954)
## Objective: Improve end-user experience
**WHO: End user that wants kustomize build artifacts (binaries, containers).**
- Improve end-user documentation [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/9)
- Easily discovered [tutorials](https://github.com/kubernetes-sigs/kustomize/issues/3973) for folks who just want to get the job done.
Implicit best practice recommendation.
- Usage [tutorial](https://github.com/kubernetes-sigs/kustomize/issues/3973) videos
- Clear explanation of differing capabilities of kustomize standalone vs. kustomize in kubectl. [Document kubectl kustomize integration #3951](https://github.com/kubernetes-sigs/kustomize/issues/3951)
- [The kustomize doc site should pull examples from the kustomize repo](https://github.com/kubernetes-sigs/kustomize/issues/3974)
- [Telemetry to guide investment decisions](https://github.com/kubernetes-sigs/kustomize/issues/3941) ([PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/13))
- Idea: Resurrect "crawler" to gather stats on popularity of features so we know where to focus.
- Idea: Allow opt-in to build data (Kustomize file sent to some server at build time)
- A battery of [Go benchmark tests](https://github.com/kubernetes-sigs/kustomize/issues/3248) to monitor performance. We've had reports of performance regression, but no measures *in-repo*.
- **kustomize cli v5** ([PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/14))
- [Indentation changes from go-yaml](https://github.com/kubernetes-sigs/kustomize/issues/3946), if we cannot prevent them in kubectl kustomize. (also related to a [kyaml feature request](https://github.com/kubernetes-sigs/kustomize/issues/3559))
- [Drop the `--reorder` flag](https://github.com/kubernetes-sigs/kustomize/issues/3947)
- [Decide what to do with `kustomize cfg`](https://github.com/kubernetes-sigs/kustomize/issues/3953)
- Drop 'cfg create setter' and 'cfg set' and delete setter code from Kustomize (it lives in cmd/config).
- Keep the cfg read-only commands: grep, cat, tree.
- The --enable-**alpha**-plugins flag will remain in this version: this only changes when plugins graduate.
- Features
- [Kustomize Components KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/1802-kustomize-components)
- Needs end-user docs
- [OpenAPI KEP](https://github.com/kubernetes-sigs/kustomize/issues/3723)
- Should deprecate[ the existing `crds` field](https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/crds/)
- [Binary releases for M1 (darwin_arm64)](https://github.com/kubernetes-sigs/kustomize/issues/3736)
- [confusion around namespace replacement](https://github.com/kubernetes-sigs/kustomize/issues/880) - this is the most +1d feature request and is two years old
- Release version 1.0 of sigs.k8s.io/kustomize/api for incorporating kustomize into other tools, as well as v1 of Kustomization. [see details under Contributor Community]
- git caching scheme (behind a flag) https://github.com/kubernetes-sigs/kustomize/pull/3655
- hashicorp go-getter support via dependency injection or [external plugin](https://github.com/kubernetes-sigs/kustomize/issues/3585)
## Objective: Improve extension experience
**WHO: Plugin developers: end users who extend kustomize, but dont think about internals.**
- Replace `Resource` fields with annotations so that the data is visible to and survives across KRM function boundaries:
- [Replace Resource.options with annotations #3975](https://github.com/kubernetes-sigs/kustomize/issues/3975)
- [Replace Resource.refBy with annotations #3976](https://github.com/kubernetes-sigs/kustomize/issues/3976)
- Create KEP for plugin [graduation](https://github.com/kubernetes-sigs/kustomize/issues/2721) out of alpha. [PROJECT](https://github.com/kubernetes-sigs/kustomize/projects/15)
Proposals for this KEP:
- Implement the [Composition KEP](https://github.com/kubernetes/enhancements/pull/2300) .
- Deprecation story
- Deprecate shared Go libs. (if you use a Kustomization file that mentioned a plugin that must be loaded as a .so file, it fails). Although these have advantages--notably in terms of execution speed and ease of testing--they aren't portable.
- Deprecate the legacy path lookup exec plugin style in favor of the KRM style that also already exists.
- Add deprecation warnings if someone is using legacy plugins. See if we get complaints. Upon removal, add a fix command if feasible or at minimum a pointer to migration docs.
- Create a roadmap for plugin inclusion in kustomize-in-kubectl, or explicitly document that plugins will never be included (and why).
- Determine whether plugins need to be permanently gated with a flag. Remove the existing flag, and replace it with a non-alpha flag if necessary.
- Deprecate KRM plugin configuration options that promote violations of Kustomizes policy that everything required for a build should be committed (no side-effects from env, cli flags, etc). All plugin config should be in the KRM config object for the plugin.
- Starlark plugins: Deprecate generic URL download for starlark plugins, replacing it with git-specific functionality in line with Kustomizations own git URL support. Subject the relative path to loader restrictions.
- Container plugins: Deprecate network access, storage mount and env options.
- Exec plugins: Subject the exec path to loader restrictions.
- Move KRM plugin provider specification from an annotation to a reserved field.
- Add support for content-addressable OCI artifact storage for starlark and exec plugin providers.
- Implement a Catalog KRM resource that uses [OCI Artifacts](https://github.com/opencontainers/artifacts) ([maybe](https://jzelinskie.com/posts/oci-artifacts/)) to improve plugin distribution and enable end users to bypass specifying explicit plugin provider versions in their KRM plugin configs. This likely deserves a KEP on its own.
- Develop a streamlined contribution process for new “builtin” functionality, i.e. built-in transformers that essentially wrap kyaml filters.
- Add extensive docs, tests and examples for all plugin mechanisms that will remain supported after graduation.