-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
✨ Update API with ClusterClass MachinePool support #8820
Conversation
8a14bcf
to
8d99a49
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you very much!
Looks pretty good so far. Just some questions. But +/- the nits the PR looks good to me and we don't have to add more fields in this iteration.
One fundamental point we have to decide is if we want to merge this before 1.5. I think the very last possible date is when we create the release branch on 11th July (https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/release/releases/release-1.5.md).
I don't have a strong opinion, but it might be good to delay merging this PR until after we create the release branch so the API + the corresponding implementation can land afterwards. I'm not sure if we can get everything done until the code freeze date. If we would only merge the API until 1.5 this can be confusing to users and it also already "freezes" the API which is a bit unnecessary and more flexibility to be able to change the API until the implementation is finished would be probably good.
^^ @fabriziopandini @CecileRobertMichon Opinions? |
9bee93b
to
7d858c5
Compare
Co-authored-by: Richard Case <richard.case@outlook.com>
Thank you! /lgtm /hold |
LGTM label has been added. Git tree hash: b16f11d2477ca89eb1f4fd6a0c1af18382adfb78
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changes lgtm to me, thanks for picking up the work
Q: If I got this right the implementation of MP support in CC is being deferred to 1.6.0, so are we going to defer merging this on main to as soon as we start developing the 1.6.0 release, right?
// This pool of nodes is managed by a MachinePool object whose lifecycle is managed by the Cluster controller. | ||
type MachinePoolTopology struct { | ||
// Metadata is the metadata applied to the MachinePool. | ||
// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note for a follow-up, when this is merged/implemented we have to update the corresponding documentation in the book
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we actually try to bundle the book related changes within this PR? Or at least have an issue open before we merge this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have an umbrella issue here #5991 (comment) including an update docs task. Are we looking for something specific?
I don't know but that's why I asked above #8820 (review) |
I think it would make sense to defer this to 1.6.0 for the time being as I don't think there's enough time to fully implement and test the feature. However, would there be any chance of cherry-picking this into a patch release since it doesn't touch existing APIs? |
I think it touches existing APIs, the Cluster and ClusterClass CRDs. I'm not sure about cherry-picking, but of course we can discuss it. This is the wording in our backporting policy
|
Are clusterclass and topology not experimental still (behind a feature flag)? If so, and if all the APIs this PR touches are behind a feature flag, I don't think we necessarily should wait for v1.6 (and also this would technically qualify for cherry-pick per "Enhancements or additions to experimental Cluster API features"). I believe these changes don't actually touch the Side question: it's strange to me that those APIs are in the |
My humble two cents.
Technically they are touching also the Cluster API (cluster.spec.topology), but I'm ok with making an exception given that everything below this field is entirely related to CC.
I think the main reason was that it was required to change cluster.spec.topology, but frankly speaking, after some time dealing with experiments it is clear to me that this model has some flaws. I think that we should start discussing:
I will open an issue and bring up this point at the office hours as soon as I have some time for it |
SGTM. To clarify, we don't actually need to wait for the release to merge this PR, just until the RC is cut (and the release branch is created), correct? |
I think we don't need different API groups for APIs to evolve at different speed. Enforcing this would require grouping APIs in API groups by the speed that they evolve with.
Huge +1. I think the exp folder is not really useful for anyone. Especially not our users (storing our APIs in a certain package is a very weak and implict way to signal to CAPI end users that something is experimental). In my opinion we should have:
As far as I'm aware that is also how it works in k/k. I don't think this mixture of apiVersions, exp folders and feature gates to signal the state of an API is ideal.
Just to clarify. The "topology API" is just a field in the
Yes. In general it would be probably also good if someone who is more familiar with MachinePools could review this PR. |
Right, I should have said "field" not "API". What I meant is only the cluster-api/api/v1beta1/cluster_types.go Line 73 in 1b4af03
/lgtm |
/lgtm |
/approve |
Given lgtm's + that we created release-1.5 As mentioned in #8820 (comment). Further steps are documented in #5991 (comment) Let me know if there are tasks missing on 5991 /hold cancel 🎉 |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: CecileRobertMichon, sbueringer 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:
Approvers can indicate their approval by writing |
/area clusterclass |
What this PR does / why we need it:
This PR extends the current API to add MachinePool support for ClusterClass. This is the first of many PRs to fully implement MachinePool support for ClusterClass.
This PR covers the "Extend APIs" section of the roadmap for MachinePool support in ClusterClass: #5991 (comment)
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 (partially) #5991
Big thanks to @richardcase for driving most of the implementation!!