-
Notifications
You must be signed in to change notification settings - Fork 635
Description
/kind feature
Describe the solution you'd like
Currently, cluster-api-provider-aws supports EKS Managed Node Groups (via AWSManagedMachinePool) as a node provisioning option.
However, it does not provide a way to integrate with Karpenter, which is increasingly recommended by AWS and the Kubernetes community for dynamic, workload-driven node provisioning.
I propose adding support for Karpenter as a node provisioning backend, similar to how Managed Node Groups are supported.
For example, a new template type (e.g. AWSKarpenterMachinePool or KarpenterProvisionerTemplate) could allow CAPI-managed clusters to declaratively define Karpenter resources such as Provisioner and AWSNodeTemplate.
This would allow CAPI users to:
- Use declarative infrastructure (via
clusterctl,ClusterClass, etc.) with Karpenter-enabled clusters. - Mix and match static node pools (MGN) and dynamic, reactive node provisioning (Karpenter) under a unified management plane.
- Retain consistency with CAPI’s MachineProvider abstractions for reconciliation, status, upgrades, etc.
Because AWS itself, in its EKS Best Practices documentation, recommends Karpenter as a preferred method for node lifecycle automation and cost optimization, adding first-class support for Karpenter in CAPA would help align CAPI users with AWS’s recommended patterns. :contentReference[oaicite:0]{index=0}
Anything else you would like to add:
- There is an existing experimental project, karpenter-provider-cluster-api, exploring similar ideas, but it is still in PoC stage.
- I am happy to contribute or help with a design proposal or prototype implementation if maintainers are interested.
- Including this support could lower the barrier for CAPI users to adopt more modern, autoscaling node strategies on EKS.
Environment:
- Cluster-api-provider-aws version: (e.g. v2.x.x)
- Kubernetes version: (use
kubectl version) - OS (e.g. from
/etc/os-release): (e.g. Amazon Linux 2, Ubuntu 22.04, etc.)