Skip to content

Latest commit

 

History

History
119 lines (99 loc) · 10.6 KB

roadmap-2021.md

File metadata and controls

119 lines (99 loc) · 10.6 KB

Kustomize roadmap 2021 Q3/4

Presented at the June 2, 2021 SIG-CLI meeting: recording

kustomize maintainers: @knverey, @monopole

Objective: Improve contributor community

Objective: Improve end-user 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)
    • Fewer public packages:
      • 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. Since kustomize is in kubectl, we must do as kubectl does to manage deps, exposing new transitive deps in code review.
    • Remove starlark dependencies (but make it possible to re-enable via injection)
  • Kustomization v1 (also end-user impact) (PROJECT)
  • Improve contributor documentation
  • Improve the release process to support regular biweekly releases PROJECT
    • 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 / kustomize issue)
  • Project administration
    • DONE Clean up Kustomize-related KEPs to reflect current status
    • DONE Onboard Kustomize repo to SIG-CLI’s Triage Party for bug scrubs
    • Rename master branch to main

Objective: Improve end-user experience

WHO: End user that wants kustomize build artifacts (binaries, containers).

Objective: Improve extension experience

WHO: Plugin developers: end users who extend kustomize, but don’t think about internals.

  • Replace Resource fields with annotations so that the data is visible to and survives across KRM function boundaries:
  • Create KEP for plugin graduation out of alpha. PROJECT Proposals for this KEP:
    • Implement the Composition KEP .
    • 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 Kustomize’s 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 Kustomization’s 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 (maybe) 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.