-
Notifications
You must be signed in to change notification settings - Fork 5k
Description
Before Harbor 1.8 I could configure Harbor to use external Auth via config file or environment variable, all automation tooling know how to do both of those things. whether its chef or puppet, or something like confd pulling from consul. Even better languages like spring have integration to use kubeconfig maps as config sources.
These are all things we've learned to treat as code, and as devops/sre/whatever we have built up strong muscles around managing, testing, securing, etc, treating config changes as "code changes".
With the new configuration API however we cannot do any of those things, and instead of tried and true trusted ways to configure our app, the developers are forcing us to use an API without a decent client tool. now instead of the simple task of "write file -> restart service" we have to rewrite automation tooling to take our list of preferred settings and sling them into the API via curl or similar.
What's even more painful is that some settings are still set via environment variable (such as UAA_CA_ROOT
) so its not even completely consistent.
Proposal:
- We bring configuration via ENV or config file back and we mark anything set in them as read-only in the API/UI.
or - We write a config cli* and people can use that, as its less error prone than just running
curl -X POST
a bunch of times.
- a config cli is how spinnaker's halyard works, you start halyard, run a bunch of
hal
commands to configure it and then tell it to deploy/apply and it then deploys all of the spinnaker microservices with your settings. It's slightly different in that its actually managing the lifecycle of the components via halyard vs via kube manifests directly, but the idea is there.