Skip to content

Conversation

@cespo
Copy link

@cespo cespo commented Nov 30, 2025

What type of PR is this?

/kind feature
/kind api-change

What this PR does / why we need it:

This PR adds support for the EKS Provisioned Control Plane feature, which allows cluster administrators to select from a set of scaling tiers for predictable, high performance from the cluster's control plane.

Amazon EKS offers two modes of operations for the control plane: Standard mode (default, with automatic scaling) and Provisioned mode (pre-allocated capacity). This implementation enables users to opt-in to Provisioned mode and select from the available scaling tiers: standard, tier-xl, tier-2xl, or tier-4xl.

Changes:

  • Added ControlPlaneScalingConfig field to AWSManagedControlPlane API (v1beta2)
  • Added ControlPlaneScalingTier enum type with kubebuilder validation
  • Implemented converters between CAPA and AWS SDK types
  • Updated cluster creation to include scaling configuration
  • Added reconciliation logic for updating scaling configuration on existing clusters
  • Updated v1beta1 conversion functions for backward compatibility
  • Upgraded AWS SDK for EKS from v1.64.0 to v1.75.1 to support the new API

Usage example:

apiVersion: controlplane.cluster.x-k8s.io/v1beta2
kind: AWSManagedControlPlane
metadata:
  name: my-cluster-control-plane
spec:
  region: us-west-2
  version: "1.28"
  controlPlaneScalingConfig:
    tier: tier-2xl  # Options: standard, tier-xl, tier-2xl, tier-4xl

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

Special notes for your reviewer:

  • The new field is optional and maintains backward compatibility - existing clusters continue to use standard mode
  • The AWS SDK upgrade was necessary as ControlPlaneScalingConfig support was added in a recent SDK version
  • Conversion functions ensure the field is preserved when converting between v1beta1 and v1beta2
  • The reconciliation logic handles both cluster creation and updates to the scaling tier
  • CRD changes are included with proper validation (enum constraint on tier values)

Checklist:

  • squashed commits
  • includes documentation (inline comments and usage example)
  • includes emoji in title (:sparkles:)
  • adds unit tests
  • adds or updates e2e tests

Release note:

Add support for EKS Provisioned Control Plane, allowing users to configure control plane scaling tiers (standard, tier-xl, tier-2xl, tier-4xl) for predictable high performance. This feature is optional via the new `controlPlaneScalingConfig` field in `AWSManagedControlPlane`.

@k8s-ci-robot k8s-ci-robot added release-note Denotes a PR that will be considered when it comes time to generate release notes. kind/feature Categorizes issue or PR as related to a new feature. do-not-merge/invalid-commit-message Indicates that a PR should not merge because it has an invalid commit message. kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API labels Nov 30, 2025
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign andidog for approval. For more information see the Code Review Process.

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

Needs approval from an approver in each of these files:

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
Copy link
Contributor

Welcome @cespo!

It looks like this is your first PR to kubernetes-sigs/cluster-api-provider-aws 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-sigs/cluster-api-provider-aws has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Nov 30, 2025
@k8s-ci-robot
Copy link
Contributor

Hi @cespo. Thanks for your PR.

I'm waiting for a github.com member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

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.

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Nov 30, 2025
@cespo cespo changed the title Add support for EKS Provisioned Control Plane ✨ Add support for EKS Provisioned Control Plane Nov 30, 2025
cespo added 2 commits December 1, 2025 08:47
This change adds support for the EKS Provisioned Control Plane feature,
which allows users to select from a set of scaling tiers (standard,
tier-xl, tier-2xl, tier-4xl) for predictable, high performance from
the cluster's control plane.

Changes:
- Add ControlPlaneScalingConfig field to AWSManagedControlPlane API
- Add ControlPlaneScalingTier enum type with validation
- Implement converters between CAPA and AWS SDK types
- Update cluster creation to include scaling configuration
- Add reconciliation logic for updating scaling configuration
- Update v1beta1 conversion functions for backward compatibility
- Upgrade AWS SDK for EKS to v1.75.1 to support the new API
Add comprehensive unit tests for:
- ControlPlaneScalingConfigToSDK converter function
- ControlPlaneScalingConfigFromSDK converter function
- reconcileScalingConfig reconciliation logic

Tests cover:
- Nil input handling
- All tier values (standard, tier-xl, tier-2xl, tier-4xl)
- Update detection logic when tier changes
- No update when tier is the same
@cespo cespo force-pushed the cespo/eks-provisioned-control-plane branch from 8e31b3d to 5e189bb Compare November 30, 2025 21:48
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/invalid-commit-message Indicates that a PR should not merge because it has an invalid commit message. label Nov 30, 2025
Copy link
Contributor

@serngawy serngawy left a comment

Choose a reason for hiding this comment

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

/ok-to-test

@k8s-ci-robot k8s-ci-robot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Dec 2, 2025
@cespo
Copy link
Author

cespo commented Dec 2, 2025

/retest-required

@cespo
Copy link
Author

cespo commented Dec 2, 2025

/retest

@faiq
Copy link
Contributor

faiq commented Dec 3, 2025

Can you add an e2e test as well?

@k8s-ci-robot k8s-ci-robot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Dec 3, 2025
@cespo cespo force-pushed the cespo/eks-provisioned-control-plane branch from 7aac38a to 430dfc6 Compare December 3, 2025 23:27
@cespo
Copy link
Author

cespo commented Dec 3, 2025

/retest pull-cluster-api-provider-aws-lint-api

1 similar comment
@cespo
Copy link
Author

cespo commented Dec 4, 2025

/retest pull-cluster-api-provider-aws-lint-api

@k8s-ci-robot
Copy link
Contributor

@cespo: The /retest command does not accept any targets.
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-e2e-blocking
/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-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-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-e2e-blocking
pull-cluster-api-provider-aws-test
pull-cluster-api-provider-aws-verify

In response to this:

/retest pull-cluster-api-provider-aws-lint-api

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.

@cespo
Copy link
Author

cespo commented Dec 4, 2025

/retest

@cespo
Copy link
Author

cespo commented Dec 4, 2025

I've verified make lint-api passes locally with 0 issues. This appears to be a CI infrastructure problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API kind/feature Categorizes issue or PR as related to a new feature. needs-priority ok-to-test Indicates a non-member PR verified by an org member that is safe to test. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support EKS Provisioned Control Plane

4 participants