Skip to content

Conversation

@alexander-demicev
Copy link
Contributor

@alexander-demicev alexander-demicev commented Mar 6, 2025

What type of PR is this?
/kind feature

What this PR does / why we need it:

This PR adds ClusterClass support for EKS.

  • It doesn't support managed machine pools for now, I will add them in a follow up
  • I'm unsure which fields in AWSManagedControlPlane can be reused in AWSManagedControlPlaneTemplate so please correct me if I'm wrong.
  • Moving some fields to a nested structure in AWSManagedControlPlane broke conversions and they have to be done manually.

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 #3166

Special notes for your reviewer:

Checklist:

  • squashed commits
  • includes documentation
  • includes emoji in title
  • adds unit tests
  • adds or updates e2e tests

Release note:

Add ClusterClass support for EKS clusters

@k8s-ci-robot k8s-ci-robot added kind/feature Categorizes issue or PR as related to a new feature. release-note Denotes a PR that will be considered when it comes time to generate release notes. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. needs-priority size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Mar 6, 2025
@k8s-ci-robot k8s-ci-robot requested review from faiq and richardcase March 6, 2025 11:12
@alexander-demicev
Copy link
Contributor Author

/test pull-cluster-api-provider-aws-e2e

Copy link
Member

@richardcase richardcase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good @alexander-demicev .

Can you add an e2e test to cover creating a cluster with ClusterClass?

@alexander-demicev
Copy link
Contributor Author

alexander-demicev commented Mar 12, 2025

@richardcase yes, can I do it in a follow-up PR? I already have a draft locally

@alexander-demicev alexander-demicev force-pushed the eksclusterclass branch 2 times, most recently from 930fb59 to ce8e91a Compare March 12, 2025 13:46
@richardcase
Copy link
Member

@richardcase yes, can I do it in a follow-up PR? I already have a draft locally

A follow-up is good, i think we'd want the e2e coverage before we release this though.....this feature will be really popular 😄

@alexander-demicev
Copy link
Contributor Author

/test pull-cluster-api-provider-aws-e2e

@alexander-demicev
Copy link
Contributor Author

/test pull-cluster-api-provider-aws-e2e

@richardcase
Copy link
Member

/test ?

@k8s-ci-robot
Copy link
Contributor

@richardcase: The following commands are available to trigger required jobs:

/test pull-cluster-api-provider-aws-build
/test pull-cluster-api-provider-aws-build-docker
/test pull-cluster-api-provider-aws-test
/test pull-cluster-api-provider-aws-verify

The following commands are available to trigger optional jobs:

/test pull-cluster-api-provider-aws-apidiff-main
/test pull-cluster-api-provider-aws-e2e
/test pull-cluster-api-provider-aws-e2e-blocking
/test pull-cluster-api-provider-aws-e2e-clusterclass
/test pull-cluster-api-provider-aws-e2e-conformance
/test pull-cluster-api-provider-aws-e2e-conformance-with-ci-artifacts
/test pull-cluster-api-provider-aws-e2e-eks
/test pull-cluster-api-provider-aws-e2e-eks-gc
/test pull-cluster-api-provider-aws-e2e-eks-testing

Use /test all to run the following jobs that were automatically triggered:

pull-cluster-api-provider-aws-apidiff-main
pull-cluster-api-provider-aws-build
pull-cluster-api-provider-aws-build-docker
pull-cluster-api-provider-aws-test
pull-cluster-api-provider-aws-verify

In response to this:

/test ?

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-sigs/prow repository.

@richardcase
Copy link
Member

/test pull-cluster-api-provider-aws-e2e-eks

@richardcase
Copy link
Member

/milestone v2.9

@k8s-ci-robot
Copy link
Contributor

@richardcase: The provided milestone is not valid for this repository. Milestones in this repository: [v2.5, v2.6, v2.7, v2.8]

Use /milestone clear to clear the milestone.

In response to this:

/milestone v2.9

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-sigs/prow repository.

@alexander-demicev
Copy link
Contributor Author

/test pull-cluster-api-provider-aws-e2e-eks

@alexander-demicev
Copy link
Contributor Author

/test pull-cluster-api-provider-aws-e2e-eks

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 19, 2025
@alexander-demicev
Copy link
Contributor Author

/test pull-cluster-api-provider-aws-e2e
/test pull-cluster-api-provider-aws-e2e-eks

@alexander-demicev
Copy link
Contributor Author

/test pull-cluster-api-provider-aws-e2e-eks

@alexander-demicev
Copy link
Contributor Author

/test pull-cluster-api-provider-aws-e2e-eks

@damdo
Copy link
Member

damdo commented Jun 23, 2025

/assign @AndiDog @dlipovetsky

@dlipovetsky
Copy link
Contributor

I would like to know how this change affects an existing EKS cluster that does not use ClusterClass.

@alexander-demicev
Copy link
Contributor Author

@dlipovetsky it shouldn't affect existing clusters

@CharlieR-o-o-t
Copy link

Really looking forward to this change. Do you need any help (e.g. Go development assistance)?

// For the AWSManagedControlPlaneTemplate, this field is used
// only to fulfill the CAPI contract.
// +optional
MachineTemplate *AWSManagedControlPlaneTemplateMachineTemplate `json:"machineTemplate,omitempty"`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure why this is necessary? Can you link to the CAPI contract that nees to be fulfilled that requires this to be added?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's part of the control plane provider contract: https://cluster-api.sigs.k8s.io/developer/providers/contracts/control-plane#controlplane-machines.
CAPZ has the machine templates, I’m totally fine not having the machine template field here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not required here because the control plane nodes are not represented by Machines, as the note says:

In case you are developing a control plane provider which uses a Cluster API Machine object to represent each control plane instance, following fields MUST be implemented in the ControlPlane spec.

alexander-demicev and others added 2 commits July 30, 2025 10:10
Signed-off-by: Alexandr Demicev <[email protected]>
Co-authored-by: Jimmi Dyson <[email protected]>
Signed-off-by: Alexandr Demicev <[email protected]>

Co-authored-by: Richard Case <[email protected]>
@alexander-demicev
Copy link
Contributor Author

@jimmidyson thanks a lot for the commit, I squashed it with mine

@alexander-demicev
Copy link
Contributor Author

/test pull-cluster-api-provider-aws-e2e-eks

@jimmidyson
Copy link
Member

Thanks @alexander-demicev!

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Aug 1, 2025
@k8s-ci-robot
Copy link
Contributor

LGTM label has been added.

Git tree hash: 7fd627c53a74f7d2babeaf03c65ddd882d3918ce

@jimmidyson
Copy link
Member

@AndiDog @dlipovetsky @richardcase Can we remove the hold on this now please? LGTM and have tested it out succesfully. There's an e2e test too which is a bonus 😅

@nrb
Copy link
Contributor

nrb commented Aug 4, 2025

/unhold

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Aug 4, 2025
@k8s-ci-robot k8s-ci-robot merged commit 49f7c86 into kubernetes-sigs:main Aug 4, 2025
18 checks passed
@k8s-ci-robot k8s-ci-robot modified the milestones: v2.9, v2.8 Aug 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/feature Categorizes issue or PR as related to a new feature. lgtm "Looks good to me", indicates that a PR is ready to be merged. needs-priority release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add AWSManagedControlPlaneTemplate type