design/defunct/one-pager-stack-cli.md
Why does this document exist?
We're working on the first version of a user experience for working with crossplane stacks. This document answers the questions of:
What are our goals for this version? How do we measure success?
Objectives:
Key Results:
What do we think the experience will look like?
To create a Hello World stack from scratch:
curl -s -o /usr/local/bin/kubectl-crossplane-stack-init /url/directly/to/the/script/somewhere >/dev/nullchmod +x /usr/local/bin/kubectl-crossplane-*cd myprojectkubectl crossplane stack init mystackgroup/mystacknamekubectl crossplane stack buildkubectl crossplane stack publishkubectl crossplane stack install mystackgroup/mystackname, ORkubectl apply -f config/stack/install.stack.yamlkubectl apply -f config/samples/*instance.yamlkubectl logs mystackname-pod-nameThe tool will make assumptions based on a single supported pattern for now (we are imagining it as Kubebuilder v2), but that will be configurable in the future. When it is configurable, it will also be adjustable at init time.
Unclear, because it isn't interacting with any Kubernetes objects. However, it makes sense to have it as a kubectl plugin for now so that we can take advantage of kubectl's discoverability mechanism and subcommand interpretation.
Most likely. This is a very early imagining of it, and we will learn a lot as we develop it, use it, and hear stories from the wild.
They will be curled directly from the raw files in the stack cli github repo.
Curling can be done against a tag or branch, so we can create tags for each release, and update the documentation to reflect that.
We can have a repo which is a complete sample hello world stack, and which is periodically recreated from scratch using all of the init steps.
The init command generates all of the scaffolding for building the
stack, including any tags or version numbers. The build configuration
can be edited to tag any published images as desired.
They will be handled in the same way that docker registry credentials
are handled; they should be set up before running the publish command.
Yes, it could be a single plugin instead of multiple. For this version, the benefit of having multiple plugins is that the project can leverage the subcommand dispatch functionality that kubectl provides, and that saves some time. In the future, it may very well be a single plugin instead.