It would be great to have E2E scripts for each cloud provider that go through a full install of Ark including pre-reqs and server installation. We can have the user fill in the necessary options at the beginning. The docs are great for understanding what's going on step-by-step but it takes a lot of copy-pasting to get a working install going.
Ksonnet might help for this---I can look into this actually (unless anyone has dibs) because it will simplify my doc writing life so so much ><
@skriss moved to v0.5.0
Some thoughts, so I don't forget them, for what ark install might look like:
--object-store aws--object-store-bucket BUCKET--object-store-config region=foo,color=green (comma-separated KV pairs)--block-store aws--block-store-config region=foo,color=green (comma-separated KV pairs)--cloud-credentials FILE. if specified, add a volume/volumeMount. otherwise, don't.--backup-sync-period DURATION, default to ?--gc-sync-period DURATION, default to ?--schedule-sync-period DURATION, default to 1m--restore-only-modeThis would be a great usability improvement I think, especially if we have a --dry-run -o yaml option that can be used to spit out files to be checked into CI/CD.
It seems like some of the work from #437 #506 may be usable as a basis of this.
Parroting Ross' suggestion, having a dry-run to render those out would be highly desirable for us as well.
I am so onboard with this. I was thinking of coding my own toy cli to point to a directory of yaml files and run those as well as everything else needed to boot it up.
Here's a first pass at what the required and optional arguments may be on the ark install command.
--backup-location-name aws--backup-location-bucket BUCKET--backup-location-config region=foo,color=green (comma-separated KV pairs)--snapshot-location-name aws--snapshot-location-provider=aws--snapshot-location-config region=foo,color=green (comma-separated KV pairs)--cloud-credentials FILE. if specified, add a volume/volumeMount. otherwise, don't.--dry-run, outputs generated YAML of all CRDs/instances + deployment-o DIR, where to save YAML from --dry-run--namespace, where CRDs and locations will be created. Also provided to the ark server command in the deploymentThe rest are just sent straight to ark server, using its defaults
--backup-sync-period DURATION, default to 1m--schedule-sync-period DURATION, default to 1m--restore-only-mode--client-burst--client-qps--log-level--metrics-address--pprof-address--restic-timeoutAssumptions:
install. Anything after must be added with the relevant location commandplugin-dir isn't exposed since it's largely a local development optionQuestions:
default.@heptio/ark-team what do you think?
I think having the * backupstoragelocation be optional is fine, since there's a default name.
I think we should install the plugins too as part of the install.
Lastly, do you think it'd be useful to alternatively have a config file that can be loaded during install?
We'll get the in-tree plugins for AWS, GCP, and Azure already, but installing something like Portworx would be mean running (as an example) velero plugin add portworx/velero-plugin:0.6 after the fact, or specifying a list of plugin images with the install command.
I think I'll defer on the plugin install for now, partially for the issue you raise - there's so many options there already that a config file might be warranted.
I'll think about that some more, though. In the case where someone is making heavy modifications to the YAML as produced by the -o command, it seems a little odd to have a config file to 'just' spit out YAML, but would also be a head start.
I think the starting point should be the config file, and the flags would override those values.
What do you think for format? Part of why we wanted to go to an install command was to remove most or all of the example YAML from the repo...a config file, while certainly smaller, wouldn't necessarily alleviate that issue. And by the same token, a long command copy/pasted out of the docs every time would be burdensome, too.
I would prefer yaml. It would be an improvement over the current setup because it would all be in the same place, and the install would choose the order of execution. And you could make it so the user could overwrite the config by using the cmd flags, not having to mess with it for quick one offs.