kapp-controller icon indicating copy to clipboard operation
kapp-controller copied to clipboard

Package authoring commands

Open renuy opened this issue 3 years ago • 0 comments

Describe the problem/challenge you have Package authoring is difficult for first time users.

Describe the solution you'd like Have a tool which would walk me through package creation, and allow me to install them on a cluster (using kctrl package install)

Commands kctrl pkg build create

Acceptance criteria

  1. As a user I should be able to create a new package from scratch using an existing release artefact from github and bundle it as an imgpkg (inline and push to repo) and output the package artefacts for consumption by kctrl package install
    1.a. Should be able to manage cert-manager using kctrl.

  2. As a user I should be able to create a new package from scratch using an existing helm chart from github and bundle it and output the package artefacts for consumption by kctrl package install

  3. As a user I should be able to update the package easily and rebuild the package install

  4. As a user I should be able to create a skeleton for package and update it manually as required

  5. As a user I should be able to consume kctrl builder command in a CI pipeline to create packages in and iterative manner

Tasks Milestone 1

  • [x] create imgpkg bundle from github release artifact
  • [x] pushing imgpkg bundle to OCI registry
  • [x] consume/mention imgpkg bundle in package manifest
  • [x] Decide what can be configured as part of interactive CLI for github release artifact
  • [x] Define the directory structure of the output
  • [x] Define project skeleton
  • [x] create imgpkg bundle using helm chart
  • [x] update - create a new version of the package (both interactively and non interactively)
  • [x] create/update repo with created package
  • [x] templating using ytt to create imgpkg bundle.
  • [x] fetch from local directory using vendir.
  • [x] Accommodating the kctrl dev deploy flow
  • [x] Reusing reconcilor
  • [x] Non interactive flow - In case user want to do create/update the package with the values from already existing package-build and package-resources.yml without answering the questions in interactive manner.
  • [x] Add Package Repo release command
  • [x] For DataStax cassandra, they are not doing github releases, rather cutting out the tags. For this we will have to implement vendir git configuration.
  • [ ] Create github action for secretgen-controller.
  • [x] Automate end to end test case with helm
  • [x] Test without Docker Desktop
  • [x] Add inline/weblink documentation
  • [x] Add documentation on carvel.dev(Marking it as experimental in kctrl pkg -h)

Review Comments:

  • [x] "gray" text is too long. how do we shorten it up? (folks should be able to quickly glance through the content)
  • [x] word-wrap gray text to 70 chars so that it's not long chunks. also dont separate sentences on individual lines.
  • [x] passing directory names to repo build is a bit "rough". are there other options?
  • [x] full file paths are quite noisy, how do we shorten it to relative paths?
  • [x] Mention that whatever is present in the upstream folder will get overwritten as part of informational text.

Milestone 2

  • [x] Cleanup the help command on kctrl. #860 Ideal scenario:
    • Package Management Command
    • Package Authoring Command
    • App Management Command
    • App Authoring Command
  • [x] Create package-build and packge-resources.yml(in cli/examples) for
    • redis, cassandra, mongoDb, dynatrace.
  • [x] Add releasedAt during pkg release
  • [x] Automate end to end testcase with github Release
  • [x] Find commands doesn't work in windows and use the corresponding golang library. e.g. cat, etc. For vendir sync, we can remove it as we can ask user to check it in the informational text.

Milestone 3

  • [ ] #827
  • [x] #899
  • [ ] #917
  • [ ] #873
  • [ ] #874
  • [ ] #875
  • [ ] Try on OSS projects (create examples)
    • secretgen-controller, kapp-controller, pinniped, kpack

Miscellaneous

  • [ ] #893
  • [ ] streaming of output.
  • [ ] Prerequisite handling - Check and warn - install required binaries instead of calling.
  • [ ] Update strategy/doc for the new release of application from github action.
  • [ ] add images to the bundle as well for the package. (https://kubernetes.slack.com/archives/CH8KCCKA5/p1657796384108049?thread_ts=1657714405.319649&cid=CH8KCCKA5)
  • [ ] Comment the package-build and package-resources.yml.
  • [ ] Research and explore how to add images to the bundle as well for the package. (https://kubernetes.slack.com/archives/CH8KCCKA5/p1657796384108049?thread_ts=1657714405.319649&cid=CH8KCCKA5)
  • [ ] UX - research - From tce: tanzu unmanaged-cluster plugin.
  • [ ] Refactor/remove non interactive flow for pkg init command.
  • [ ] Try on OSS projects (raise PR's)
    • secretgen-controller, service-binding, pinniped, cartographer, knative, cert-manager
  • [ ] Revisit cert-manager example in the doc
  • [ ] authentication for imgpkg commands via username & password
  • [ ] scaffold/skeleton for package
  • [ ] Indentation of pkg init when run in non-interactive mode.
  • [ ] Handle pre-requisite differently
  • [ ] Handle error in case pkg-resource.yml file doesnt have package, packageInstall, or APP CR.
  • [ ] create package using helm chart directly
  • [ ] Should we generate openAPI schema during init command as well (More discussion needed. Adding during init will increase the size pf pkg-resource)
  • [ ] Refine inline/web documentation - may not be needed.

Stretch

  • [ ] Pick the changes automatically in case of kctrl dev - hot reload

Vote on this request

This is an invitation to the community to vote on issues, to help us prioritize our backlog. Use the "smiley face" up to the right of this comment to vote.- [ ] Comment the

👍 "I would like to see this addressed as soon as possible" 👎 "There are other more important things to focus on right now"

We are also happy to receive and review Pull Requests if you want to help working on this issue.

renuy avatar Apr 20 '22 05:04 renuy