Skip to content
This repository has been archived by the owner on Aug 12, 2024. It is now read-only.

Add provisioner visibility API #468

Open
exdx opened this issue Jul 21, 2022 · 8 comments
Open

Add provisioner visibility API #468

exdx opened this issue Jul 21, 2022 · 8 comments
Labels
lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.
Milestone

Comments

@exdx
Copy link
Member

exdx commented Jul 21, 2022

See #447 (comment) for discussion and background.

There may be a need for a new first-class API to reflect which rukpak provisioners are installed on-cluster and currently running, to make it clear to cluster admins and users what types of bundle they can expect to install successfully. Especially as more provisioners get added to the project. For example, this could be called RukPakConfig as part of the core API group. The existing rukpakctl tool can integrate with this API as well, to make it easy to modify or read the status of rukpak as a collection of provisioners.

As a user, I would like to:

  • Easily know which provisioners are installed and running on my cluster
  • Disable certain provisioners from running, freeing up resources
  • Enable certain provisioners to run, because I am interested in their added functionality
@timflannagan timflannagan added this to the backlog milestone Jul 21, 2022
@timflannagan timflannagan added the priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. label Jul 21, 2022
@joelanford
Copy link
Member

Do you think we could (mostly) solve this problem by adding a ProvisionerClass API? Then cluster admins could see which provisioners are available by simply listing the provisioner classes?

@timflannagan
Copy link
Contributor

Is the ProvisionerClass API sufficient for higher level components that consume and/or configure rukpak APIs? What happens if I don't like the behavior of an individual provisioner and wish to use another provisioner that works with my arbitrary bundle format? Is this mapping something we'll need to support, or even provide through any visibility APIs?

@timflannagan
Copy link
Contributor

I guess what I'm trying to wrap my head around is how can a user (e.g. controller) determine which ProvisionerClass resource is needed when I configure a BundleDeployment resource? And whether this is something that could leverage using a visibility API of some sort.

@tylerslaton
Copy link
Contributor

If we added a ProvisionerClass API would the controller for reconciling that API be responsible for also deploying the provisioner's needed resources (Deployments, RBAC, etc)? If it does, then we're able to easily add/remove/view provisioners that are currently installed on the cluster. What's more, rukpakctl has an easy target for understanding/adding to the functionality on a cluster.

I guess what I'm trying to wrap my head around is how can a user (e.g. controller) determine which ProvisionerClass resource is needed when I configure a BundleDeployment resource? And whether this is something that could leverage using a visibility API of some sort.

To me this sounds like when we talked about our need for a metadata definition in Bundles to be able to intuitively self-declare what type of Bundle it is. This could also be fixed by the wrapping API that uses Deppy resolutions to then create BundleDeployments where the cataloging component details what Bundle it is so admins know which provisioners they need.

@timflannagan
Copy link
Contributor

As a side note: It would be nice to be able to have a rukpakctl status (naming TBD) command that outputs which provisioners are available on the cluster. Whether that command hooks into a net new visibility API, or just reads ProvisionerClass resources is fine with me.

@akihikokuroda
Copy link
Member

To me, the ProvisionerClass sounds like usable for the plugin provisioner. It defines the provisioner, map provisioner name to the provisioner deployment, describe the dependencies to the other provisioner, and etc...

@awgreene awgreene added triaged and removed triaged labels Aug 4, 2022
@github-actions
Copy link

github-actions bot commented Oct 4, 2022

This issue has become stale because it has been open 60 days with no activity. The maintainers of this repo will remove this label during issue triage or it will be removed automatically after an update. Adding the lifecycle/frozen label will cause this issue to ignore lifecycle events.

@github-actions github-actions bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 4, 2022
@tylerslaton
Copy link
Contributor

I'm going to go ahead and freeze this issue. Its been open for awhile and we haven't had any explicit need for this yet. However, there have been questions about being able to turn on/off certain provisioners at will with the recent aggregation of provisioners into a single binary. We should address this as it becomes more pertinent for the project.

@tylerslaton tylerslaton added lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Oct 5, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.
Projects
None yet
Development

No branches or pull requests

6 participants