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

📖 Cluster API Add-on Orchestration proposal

Open Jont828 opened this issue 3 years ago • 2 comments

What this PR does / why we need it:

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged): Fixes #

Jont828 avatar Jul 12 '22 19:07 Jont828

Skipping CI for Draft Pull Request. If you want CI signal for your change, please convert it to an actual PR. You can still manually trigger a test run with /test all

k8s-ci-robot avatar Jul 12 '22 19:07 k8s-ci-robot

Great work so far. Thx for pushing this forward!

sbueringer avatar Aug 25 '22 16:08 sbueringer

Thanks for putting this together! Is my understanding correct that as for now ClusterAddonProvider would be an abstract concept that has no programatic contracts? Is the intent for each provider e.g helmProxy to live in the capi vs being independent projects?

enxebre avatar Aug 26 '22 10:08 enxebre

@enxebre Those are both good questions. As for now we don't necessarily have a programmatic contracts, but as the Helm provider implementation moves forward I'd expect to revisit this and decide which parts we'd want to make common to all ClusterAddonProviders. I think the Helm provider could live in CAPI as a reference implementation provided out of the box but I'm not sure how we'd want to proceed with other providers.

Jont828 avatar Aug 29 '22 17:08 Jont828

I've made some additional changes and fixed some nits in the proposal. I think this is ready for a final pass of reviews!

Jont828 avatar Sep 16 '22 00:09 Jont828

lgtm pending squash

fabriziopandini avatar Sep 21 '22 13:09 fabriziopandini

Thanks for putting this together! Is my understanding correct that as for now ClusterAddonProvider would be an abstract concept that has no programatic contracts? Is the intent for each provider e.g helmProxy to live in the capi vs being independent projects?

Can we clarify the API plan? Is the plan for the API to release as addons.cluster.x-k8s.io/v1alpha1 and go from there? Is the code expected to live in exp/ initially or something else? As it stands the proposal seems completely orthogonal to core CAPI resources therefore I question if it should live in a separate repo?

enxebre avatar Sep 21 '22 15:09 enxebre

@enxebre I was planning on bringing it up as a discussion topic soon, but I think the community will need to decide if this project should move into CAPI as a reference implementation similar to CAPD or live in its own provider repo. I'm happy to discuss what the community prefers in a meeting or over Slack. To answer your question though, if we were to merge this into CAPI, I was thinking would merge the API and types into exp and gradually merge the controller prototype code by splitting it up into several PRs.

Jont828 avatar Sep 28 '22 01:09 Jont828

(I am biased, but) lgtm

jackfrancis avatar Sep 28 '22 17:09 jackfrancis

Squashed and pushed again!

Jont828 avatar Sep 28 '22 21:09 Jont828

Last two from my side:

  • https://github.com/kubernetes-sigs/cluster-api/pull/6905#discussion_r983288112
  • https://github.com/kubernetes-sigs/cluster-api/pull/6905#discussion_r983290464

sbueringer avatar Sep 29 '22 09:09 sbueringer

Thank you!

/lgtm

sbueringer avatar Sep 30 '22 11:09 sbueringer

/lgtm

CecileRobertMichon avatar Sep 30 '22 17:09 CecileRobertMichon

@sbueringer @fabriziopandini @CecileRobertMichon It looks like the discussion is wrapping up. Should we start a lazy consensus timer to get this merged?

Jont828 avatar Oct 03 '22 22:10 Jont828

+1 on starting lazy consensus

Let's set the lazy consensus for 7 days from now, Wednesday, October 12, 2022?

/approve /hold

CecileRobertMichon avatar Oct 05 '22 21:10 CecileRobertMichon

/lgtm

fabriziopandini avatar Oct 06 '22 10:10 fabriziopandini

Sounds good to me! Thanks to everyone who helped review this doc!

Jont828 avatar Oct 06 '22 17:10 Jont828

Lazy consensus expired, Great work! /approve

fabriziopandini avatar Oct 12 '22 12:10 fabriziopandini

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: CecileRobertMichon, fabriziopandini

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:
  • ~~OWNERS~~ [CecileRobertMichon,fabriziopandini]

Approvers can indicate their approval by writing /approve in a comment Approvers can cancel approval by writing /approve cancel in a comment

k8s-ci-robot avatar Oct 12 '22 12:10 k8s-ci-robot

/hold cancel :)

sbueringer avatar Oct 12 '22 12:10 sbueringer

While a nice solution, in my opinion this proposal suffers from 2 problems:

  1. It doesn’t integrate with the GitOps ecosystem, and in that sense is only useful for bootstrapping a GitOps engine in the newly created cluster.
  2. As the reference implementation shows, the concrete implementations either cannot or would require substantial work (including CRD changes) to capture or employ the richness of combining multiple package management tools (e.g. Helm and Kustomize), which the community has spent years to develop.

The Runtime Hooks proposal avoids both issues, allowing the existing user solutions to get triggered as needed (e.g. bootstrap a CNI and a GitOps engine and let it take over), and let the Kubernetes community invest in other work areas, instead of recreating solutions the community has spent years to develop and improve.

ossfellow avatar Mar 31 '23 09:03 ossfellow