cluster-api icon indicating copy to clipboard operation
cluster-api copied to clipboard

Add support for optional providers to clusterctl

Open schrej opened this issue 3 years ago • 4 comments

With the IPAM Proposal (#6000) and CAPI Runtime Addons coming up, it needs to be decided how those components can be installed through clusterctl.

Currently clusterctl differentiates between different kinds of providers (CoreProvider, InfrastructureProvider, BootstrapProvider etc.). This differentiation is used to perform some basic sanity checks when installing a new cluster, ensuring that at least one of each provider category is installed.

We could either add additional categories (e.g. IPAMProvider) or create a generic one for all optional providers. There is some discussion on Slack.

/kind feature

schrej avatar Feb 16 '22 15:02 schrej

/milestone v1.2 /area clusterctl

fabriziopandini avatar Feb 16 '22 16:02 fabriziopandini

The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue or PR as fresh with /remove-lifecycle stale
  • Mark this issue or PR as rotten with /lifecycle rotten
  • Close this issue or PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

k8s-triage-robot avatar May 17 '22 16:05 k8s-triage-robot

/remove-lifecycle stale

schrej avatar May 21 '22 22:05 schrej

/triage accepted

fabriziopandini avatar Aug 05 '22 17:08 fabriziopandini

cc @christianang

randomvariable avatar Sep 01 '22 13:09 randomvariable

thinking about this:

  • clusterctl offers a set of capabilities that could apply to any component that could be part of a management Cluster, like e.g. it manages all the artifact retrieval, some manipulation like changing namespaces or doing envsubst, labeling objects so they can deleted/upgraded and it also provide a way to define compatibility matrix via metada.yaml
  • clusterctl already extended the definition of providers, originally derived from "infra provider", to include also core-provider, bootstrap-provider, control-plane providers
  • if we continue down this path, by extending the meaning of provider by including IPAM, then we can benefit of all the clusterctl machinery and provide a consistent UX for the users

I will raise the point in the office hours, trying to get consensus on this path forward. Notably, we should also decide if the same approach can be used for other things like Runtime Extension and Cluster Addon Providers

fabriziopandini avatar Sep 21 '22 13:09 fabriziopandini

we talked about this during the community meeting today, imo it sounds like a good idea on balance.

one thing we discussed during the meeting was the notion of compatibility between various providers. it would be nice if a user could know that some combinations might not work, or will produce unexpected results. having deep logic to detect these combinations is probably not what we want, but if there is a use case then we might add metadata which could advertise known compatibilities, or something similar.

as @fabriziopandini mentioned in the meeting, we can always approach this as a phased effort where we follow up with the compatibility work after the initial feature work. i agree with this idea and i think it would give us time to collect user stories about what we might want, if there is no need then perhaps there is nothing to do here (speaking specifically about compatibility).

elmiko avatar Sep 21 '22 17:09 elmiko

/assign

fabriziopandini avatar Oct 04 '22 20:10 fabriziopandini