-
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
MachinePool workers support in ClusterClass #5991
Comments
Thx for filing this issue. Nit regarding the YAML. I would imagine it to look ~ like this: (essentially ~ s/machineDeployments/machinePools/ +/- some additional fields to configure the MachinePool might make sense) apiVersion: cluster.x-k8s.io/v1beta1
kind: ClusterClass
metadata:
name: example
spec:
controlPlane:
...
workers:
machinePools:
- class: example
template:
bootstrap:
ref:
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
kind: KubeadmConfigTemplate
name: example-pool-0
infrastructure:
ref:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: AzureManagedMachinePool
name: example-pool-0
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: example
topology:
class: example
version: v1.22.4
...
workers:
machinePools:
- class: "example"
name: "mp-0"
replicas: 10 |
/milestone v1.2 |
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:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
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:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
/triage accepted |
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:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/lifecycle frozen this is something to complete before moving CC or Machine pools to next phases in graduation |
@fabriziopandini: GuidelinesPlease ensure that the issue body includes answers to the following questions:
For more details on the requirements of such an issue, please see here and ensure that they are met. If this request no longer meets these requirements, the label can be removed In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
We'd love this feature for CAPA & CAPG and so i can work on this: /assign |
Hey everyone
I'll get started working on this and I'll update if I get any questions. |
I assigned you above. Thank you for helping! |
Thank you @sbueringer |
@willie-yao Finally found the time to take a look at our e2e tests. I identified all e2e tests which use ClusterClass and then should eventually also cover MachinePool. I suggest we first start with a PR to cover quickstart. I'm not sure if that will already make it necessary to modify other tests (as a lot of them are using the same "topology" cluster template). For now I would try to not parallelize and see how the first few PRs go. WDYT? |
@sbueringer That sounds perfect! Do you mean we shouldn't parallelize the E2E tests with unit tests, or are we good to start working on E2E now? |
@willie-yao We're good to work on it now. Just wouldn't parallelize e2e test PRs. I suspect that once we touch one of them we might have to fix a bunch more (not sure but could happen because we have to change the "topology" flavor which is used in a lot of e2e tests). So parallelizing could lead to duplicate work |
@sbueringer Will be working on Quickstart (quick_start.go, flavor: "topology,topology-dualstack-.*") (skip additional ownerref validation) |
Hey @sbueringer. So I was going through scope_test.go to add unit tests and I do not think there is anything to be added in it. I might be mistaken. Can you please verify? |
Agree, there's nothing left for |
@willie-yao Updated the e2e test list. #9393 also already fixed the ownerref part, which is great 🎉 |
Note: It looks like there's a lot of flakiness that has been introduced since adding MachinePools to the ClusterClass self-hosted tests. Those flakes look to be blocking the release currently. I'm wondering if someone with more expertise in MachinePools is able to take a look: #9522. Otherwise we might want to remove MPs from the impacted tests ahead of the 1.6 release. |
We could consider disabling them on the release branch to have a clear signal for the release and continue debugging on main? |
@sbueringer @willie-yao can we close this issue (eventually moving pending tasks to separate issues if they are a small number, or to a new issue where we can track the Part 2 of this work starting from a clean state) |
I think that's a good idea! It's a bit harder to track with everything on one issue and all that's left are some unit tests. |
/close @willie-yao will follow up with new issues for what is left |
@fabriziopandini: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Not entirely sure what the upside is to move half of an umbrella issue to a new issue, but new issue looks good to me. So let's keep it as is |
it is just to have a cleaner scope for 1.7 (and possibly an owner of it) |
User Story
As a user, I would like to create a ClusterClass-based Cluster where workers are managed using MachinePools instead of MachineDeployments. This allows me, for example, to use ClusterClass with an infrastructure provider "flavor" like Cluster API Azure Provider Managed AKS, which supports only MachinePools.
Detailed Description
I want to be able to define a ClusterClass where workers are managed using MachinePools instead of MachineDeployments.
Anything else you would like to add:
This issue follows up on a slack conversation.
Tasks
[EDIT: by @sbueringer] After further discussion we would implement this with the following sub-tasks:
APIs #8820
Controllers, webhooks, ... #9016
unit & integration tests
Take a look at the existing tests and the code added for MachinePools and add test coverage accordingly for MachinePools.
Cluster topology controller:
Inline patching:
Webhooks:
ClusterClass controller:
External patching: test extension:
clusterctl alpha topology dry-run:
Verification:
e2e tests
Misc
Documentation
Later
/kind feature
The text was updated successfully, but these errors were encountered: