Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
21cc572
✨ Rosa roles config implementations (#5667)
serngawy Sep 30, 2025
ea9a524
ROSAMachinePool: support for capacity reservations (#5649)
mzazrivec Sep 30, 2025
1f95ab1
bump ginkgo timeout to 5h
damdo Oct 1, 2025
e7effd2
✨ feat: Support setting EKS authentication mode (#5578)
joshfrench Oct 1, 2025
7c61dd9
🐛 fix: use cluster tag key to list managed egress-only internet gateway
tthvo Jul 23, 2025
2d57ee2
Add ROSA-HCP AutoNode for karpenter auto scale (#5686)
serngawy Oct 7, 2025
457b822
✨ ROSANetwork: new CRD & reconciler to provision network infrastructu…
mzazrivec Oct 7, 2025
f769aef
kep: adds nodedm proposal
faiq Sep 22, 2025
f7bd177
docs: refine wording around updates
faiq Sep 23, 2025
d0390ff
docs: fixes minor issues in nodeadm kep
faiq Sep 26, 2025
dbe7936
✨ Support EKS upgrade policy (#5471)
phuhung273 Oct 9, 2025
00ed242
Update releasing.md
damdo Oct 10, 2025
ae48134
bump cloud build timeout to 2h
damdo Oct 10, 2025
798080f
Update ROSA docs
andreadecorte Sep 23, 2025
fe763ae
:seedling: Bump github.com/go-jose/go-jose/v4 from 4.0.2 to 4.0.5
dependabot[bot] Oct 7, 2025
75b7e2c
Log desired AMI architecture and owner ID on errors
AndiDog Oct 8, 2025
3477176
:seedling: Bump github/codeql-action from 3 to 4
dependabot[bot] Oct 13, 2025
d3cba09
Cancel instance refresh on any relevant change to ASG instead of bloc…
AndiDog Aug 28, 2025
624cb51
test: Add dedicated unit tests for getInstanceCPUOptionsRequest
fangge1212 Sep 22, 2025
19fb9e2
Fix rosaNetwork set availabilityZones
serngawy Oct 23, 2025
147cf6a
:seedling: Bump github.com/mikefarah/yq/v4
dependabot[bot] Oct 22, 2025
9288e78
add verify-go-directive check from core CAPI
damdo Oct 24, 2025
0b59b10
Allocate dedicated host when a dedicated host doesn't exist
rvanderp3 Oct 6, 2025
0a3f5e5
ci: updates devbox.lock file
faiq Sep 10, 2025
a407377
Fix delete rosa-hcp
serngawy Nov 5, 2025
bf94f5a
Add update permission for `AWSMachinePool` finalizers as needed by `O…
AndiDog Oct 21, 2025
1366a22
OIDC identity provider description matches field name
joshfrench Jul 2, 2025
9ef7012
:seedling: Bump golangci/golangci-lint-action from 8.0.0 to 9.0.0
dependabot[bot] Nov 10, 2025
1890b34
:seedling: Bump sigs.k8s.io/kustomize/kustomize/v5
dependabot[bot] Nov 12, 2025
7ed14c2
Drop unused conversion functions
chrischdi Nov 14, 2025
6ec3dd5
hack/tools: use mainstream conversion-gen
damdo Nov 14, 2025
25097d5
rerun: make generate
damdo Nov 14, 2025
156f6c4
e2e: fix panic when dumping CloudTrail logs
chrischdi Nov 17, 2025
3571413
feat: add node auto repair configuration for EKS managed node groups
afarbos Jul 31, 2025
58be6dd
:seedling: Bump golang.org/x/crypto from 0.43.0 to 0.45.0 in /hack/tools
dependabot[bot] Nov 20, 2025
69123bf
🌱 Bump CAPI to v1.11 and k8s to v1.33 (#5720)
clebs Nov 21, 2025
655ebb5
✨ feat: Implement autoscaling from zero by auto-populating AWSMachine…
LiangquanLi930 Nov 21, 2025
1822aef
Remove invalid kustomizeconfig from config/webhook
mdbooth Nov 21, 2025
19c0040
Only try to delete AWSMachine bootstrap data for non-machine pool mac…
AndiDog Nov 21, 2025
37d7afa
Fix lifecycle hooks being updated constantly, consider changes to `Ro…
AndiDog Nov 14, 2025
16f31d2
Deflake ROSA test
AndiDog Nov 21, 2025
4ea462e
Bump sigs.k8s.io/cluster-api/test to release-1.11 commit for e2e fixes
chrischdi Nov 20, 2025
f12cb7a
fix linting error
chrischdi Nov 25, 2025
a7b4991
fix(controllers): add watches to resolve AWSMachineTemplate e2e race …
LiangquanLi930 Nov 24, 2025
cf5a7a2
e2e: adjust templates to use AWSClusterRoleIdentities per Cluster
chrischdi Nov 27, 2025
d005b73
autoscaling: try to gather the version information from MachineSets a…
chrischdi Nov 27, 2025
1e562e0
write_files: nil is invalid cloud-config
joshfrench Nov 24, 2025
148d21c
chore: update owners and aliases
richardcase Dec 1, 2025
fbfdb22
metadata: prepare main for next release
chrischdi Dec 2, 2025
71a2efd
docs: update releasing.md with steps post-release
chrischdi Dec 2, 2025
ae61602
Fix constant re-applying of tags if `.metadata.annotations` is nil (#…
AndiDog Nov 27, 2025
0dab0fb
fix: e2e: validate inputData during log postprocessing to avoid panic
damdo Dec 1, 2025
b304702
fix: bump golangci-lint to work with go 1.24+ to v2.7.0
faiq Dec 8, 2025
039d311
test: Add test of DescribeDhcpOptions API call that returns an error
dlipovetsky Dec 5, 2025
dca7698
fix: Fix nil dereference when DescribeDhcpOptions call returns an error
dlipovetsky Dec 5, 2025
5bf6525
fix: change HostAffinity default 'host'->'default', improve API doc a…
damdo Dec 19, 2025
8363b14
✨ feat: Support Access Entries (#5583)
joshfrench Jan 6, 2026
72f032b
fix(docs): add Disabling EKS Support page to the book
vitorfloriano Jan 15, 2026
109668e
:seedling: Bump golangci/golangci-lint-action from 9.0.0 to 9.2.0
dependabot[bot] Dec 11, 2025
5507531
:seedling: Bump actions/cache from 4 to 5
dependabot[bot] Dec 15, 2025
d3dc1b8
Changed dedicated host validation logic to require tenancy = host
vr4manta Jan 15, 2026
a03f9c7
refactor: drop obsolete pending e2e tests
Arpit529Srivastava Jan 16, 2026
bdf2833
Allow ROSA NodePool autoscaling MinReplicas to be 0
jhjaggars Jan 13, 2026
5fdbb42
Add logForward config AND imageTypes
serngawy Nov 28, 2025
264b051
Fix flaky test TestROSARoleConfigReconcileExist
serngawy Jan 21, 2026
ab398bf
webhook server: use tlsconfig from the manager options
damdo Jan 23, 2026
6234c1a
test: enable clusterctl upgrade test
Arpit529Srivastava Jan 22, 2026
e173f71
fix: Enable GPU-enabled cluster e2e test
Arpit529Srivastava Jan 28, 2026
d21b830
chore: bump image-builder
damdo Feb 4, 2026
bdd556b
:seedling: Bump aws-actions/configure-aws-credentials from 5 to 6
dependabot[bot] Feb 9, 2026
ac62e6b
feat: adds nodeadm type
faiq Sep 10, 2025
be03c90
e2e: increase eks parallelsim to 2 for e2e tests
faiq Nov 7, 2025
1f029a1
e2e: adds flavor and e2e test for nodeadm clusterclass
faiq Nov 10, 2025
f956d28
docs: adds documentation about nodeadm
faiq Nov 11, 2025
757fa75
feat: rebase to v1.11 cluster api core
faiq Nov 26, 2025
d52efaa
fix: addresses review comment
faiq Dec 1, 2025
e64f6d0
fix: set nodeadm status apis to be v1beta2 compatible
faiq Feb 4, 2026
44e95f8
Merge branch 'main' into nutanix-main
faiq Feb 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,8 @@ linters:
text: "s.scope.ControlPlaneLoadBalancer is deprecated"
- linters:
- staticcheck
text: "SA1019: .*EKSConfig is deprecated"
path: bootstrap/eks/
text: 'SA1019: (.*)EKSConfig is deprecated'
paths:
- third_party$
- builtin$
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ test-e2e: $(KIND) $(SSM_PLUGIN) $(KUSTOMIZE) generate-test-flavors e2e-image ##

.PHONY: test-e2e-eks ## Run EKS e2e tests using clusterctl
test-e2e-eks: generate-test-flavors $(KIND) $(SSM_PLUGIN) $(KUSTOMIZE) e2e-image ## Run eks e2e tests
time go run github.com/onsi/ginkgo/v2/ginkgo -tags=e2e $(GINKGO_ARGS) ./test/e2e/suites/managed/... -- -config-path="$(E2E_EKS_CONF_PATH)" --source-template="$(EKS_SOURCE_TEMPLATE)" $(E2E_ARGS) $(EKS_E2E_ARGS)
time go run github.com/onsi/ginkgo/v2/ginkgo -tags=e2e $(GINKGO_ARGS) -nodes 2 ./test/e2e/suites/managed/... -- -config-path="$(E2E_EKS_CONF_PATH)" --source-template="$(EKS_SOURCE_TEMPLATE)" $(E2E_ARGS) $(EKS_E2E_ARGS)

CONFORMANCE_E2E_ARGS ?= -kubetest.config-file=$(KUBETEST_CONF_PATH)
CONFORMANCE_E2E_ARGS += $(E2E_ARGS)
Expand Down
8 changes: 6 additions & 2 deletions config/crd/bases/bootstrap.cluster.x-k8s.io_eksconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,12 @@ spec:
name: v1beta2
schema:
openAPIV3Schema:
description: EKSConfig is the schema for the Amazon EKS Machine Bootstrap
Configuration API.
description: |-
EKSConfig is the schema for the Amazon EKS Machine Bootstrap Configuration API.

Deprecated: EKSConfig is deprecated and will be removed in a future release.
Amazon Linux 2 (AL2) reaches end-of-life in June 2026 see: https://aws.amazon.com/amazon-linux-2/faqs/
Please use NodeadmConfig with Amazon Linux 2023 (AL2023) instead.
properties:
apiVersion:
description: |-
Expand Down
79 changes: 78 additions & 1 deletion docs/book/src/topics/eks/cluster-upgrades.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,81 @@

Upgrading the Kubernetes version of the control plane is supported by the provider. To perform an upgrade you need to update the `version` in the spec of the `AWSManagedControlPlane`. Once the version has changed the provider will handle the upgrade for you.

You can only upgrade a EKS cluster by 1 minor version at a time. If you attempt to upgrade the version by more then 1 minor version the provider will ensure the upgrade is done in multiple steps of 1 minor version. For example upgrading from v1.15 to v1.17 would result in your cluster being upgraded v1.15 -> v1.16 first and then v1.16 to v1.17.
You can only upgrade a EKS cluster by 1 minor version at a time. If you attempt to upgrade the version by more then 1 minor version the provider will ensure the upgrade is done in multiple steps of 1 minor version. For example upgrading from v1.15 to v1.17 would result in your cluster being upgraded v1.15 -> v1.16 first and then v1.16 to v1.17.

## Upgrading Nodes from AL2 (EKSConfig) to AL2023 (NodeadmConfig)

Amazon Linux 2 (AL2) AMIs are only supported up to Kubernetes v1.32. To upgrade cluster nodes to v1.33 or newer, you **must** migrate them to Amazon Linux 2023 (AL2023) AMIs. This migration also requires changing the bootstrap provider from `EKSConfig` to the new `NodeadmConfig`.

The upgrade process follows the standard Cluster API rolling update strategy. You will create a new bootstrap template (using `NodeadmConfigTemplate`) and update your `MachineDeployment` or `MachinePool` to reference it, along with the new Kubernetes version and an AL2023-based AMI.

### MachineDeployment Upgrade Example

Here is an example of upgrading a `MachineDeployment` from Kubernetes v1.32 (using `EKSConfig`) to v1.33 (using `NodeadmConfig`).

**Before (v1.32 with `EKSConfigTemplate`):**

```yaml
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
kind: EKSConfigTemplate
metadata:
name: default132
spec:
template:
spec:
postBootstrapCommands:
- "echo \"bye world\""
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineDeployment
metadata:
name: default
spec:
clusterName: default
template:
spec:
bootstrap:
configRef:
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
kind: EKSConfigTemplate
name: default132
infrastructureRef:
kind: AWSMachineTemplate
name: default132
version: v1.32.0
```

After (v1.33 with NodeadmConfigTemplate):

A new NodeadmConfigTemplate is created, and the MachineDeployment is updated to reference it and the new version.
YAML

```yaml
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
kind: NodeadmConfigTemplate
metadata:
name: default
spec:
template:
spec:
preNodeadmCommands:
- "echo \"hello world\""
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineDeployment
metadata:
name: default
spec:
clusterName: default
template:
spec:
bootstrap:
configRef:
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
kind: NodeadmConfigTemplate
name: default
infrastructureRef:
kind: AWSMachineTemplate
name: default
version: v1.33.0
```
62 changes: 62 additions & 0 deletions docs/book/src/topics/eks/creating-a-cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,68 @@ NOTE: When creating an EKS cluster only the **MAJOR.MINOR** of the `-kubernetes-
By default CAPA relies on the default EKS cluster upgrade policy, which at the moment of writing is EXTENDED support.
See more info about [cluster upgrade policy](https://docs.aws.amazon.com/eks/latest/userguide/view-upgrade-policy.html)

## Choosing a Bootstrap Provider: EKSConfig vs. NodeadmConfig

With the introduction of Amazon Linux 2023 (AL2023), the bootstrapping method for EKS nodes has changed. Cluster API Provider AWS (CAPA) supports two bootstrap providers for EKS:

1. **`EKSConfig`**: The original bootstrap provider. It uses the legacy `bootstrap.sh` script and is intended for use with **Amazon Linux 2 (AL2)** AMIs.
2. **`NodeadmConfig`**: The new bootstrap provider. It uses the modern `nodeadm` tool and is **required** for **Amazon Linux 2023 (AL2023)** AMIs.

### When to use which provider

The provider you must use depends on the Amazon Machine Image (AMI) and Kubernetes version you are targeting. Amazon Linux 2 AMIs are only supported for Kubernetes v1.32 and older.

| Bootstrap Provider | AMI Type | Kubernetes Version |
| --- | --- | --- |
| `EKSConfig` | Amazon Linux 2 (AL2) | $\le$ v1.32 |
| `NodeadmConfig` | Amazon Linux 2023 (AL2023) | $\ge$ v1.33 |

When you generate a cluster, you will need to ensure your `MachineDeployment` or `MachinePool` references the correct bootstrap template `kind`.

NOTE:

- [The EKS team stopped publishing Al2 AMIs for Kubernetes versions 1.33 and higher.](https://awslabs.github.io/amazon-eks-ami/usage/al2/)
- [Amazon Linux 2 end of support date (End of Life, or EOL) will be on 2026-06-30.](https://aws.amazon.com/amazon-linux-2/faqs/)

**For AL2 / K8s $\le$ v1.32, use `EKSConfigTemplate`:**
```yaml
apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineDeployment
metadata:
name: default
spec:
template:
spec:
bootstrap:
configRef:
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
kind: EKSConfigTemplate # <-- Uses bootstrap.sh
name: default-132
version: v1.32.0
```

### Secrets Manager

Amazon Linux 2023 does not have the proper tooling to use the secrets manager flow for bootstrapping. CAPA uses a [custom cloud-init datasource](https://github.com/kubernetes-sigs/image-builder/pull/1583) to fetch the secure contents like the `kubeadm` tokens from secrets manager. Crucially, there is no current support for publishing CAPA-compatible AL2023 AMIs that include this necessary custom cloud-init datasource.

Therefore, whenever creating `AWSMachineTemplate` objects `insecureSkipSecretsManager` must be set to true.

```yaml
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
kind: AWSMachineTemplate
metadata:
name: default
spec:
template:
spec:
cloudInit:
insecureSkipSecretsManager: true
ami:
eksLookupType: AmazonLinux2023
iamInstanceProfile: nodes.cluster-api-provider-aws.sigs.k8s.io
instanceType: m5a.16xlarge
```

## Kubeconfig

When creating an EKS cluster 2 kubeconfigs are generated and stored as secrets in the management cluster. This is different to when you create a non-managed cluster using the AWS provider.
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -496,7 +496,7 @@ func setupEKSReconcilersAndWebhooks(ctx context.Context, mgr ctrl.Manager,
Client: mgr.GetClient(),
WatchFilterValue: watchFilterValue,
}).SetupWithManager(ctx, mgr, controller.Options{MaxConcurrentReconciles: awsClusterConcurrency, RecoverPanic: ptr.To[bool](true)}); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "EKSConfig")
setupLog.Error(err, "unable to create controller", "controller", "NodeadmConfig")
os.Exit(1)
}

Expand Down
70 changes: 70 additions & 0 deletions templates/cluster-template-eks-nodeadm-clusterclass.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
apiVersion: cluster.x-k8s.io/v1beta2
kind: ClusterClass
metadata:
name: ${CLUSTER_CLASS_NAME}
spec:
controlPlane:
ref:
apiVersion: controlplane.cluster.x-k8s.io/v1beta2
kind: AWSManagedControlPlaneTemplate
name: "${CLUSTER_CLASS_NAME}-control-plane"
infrastructure:
ref:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
kind: AWSManagedClusterTemplate
name: "${CLUSTER_CLASS_NAME}"
workers:
machineDeployments:
- class: default-worker
template:
bootstrap:
ref:
name: "${CLUSTER_CLASS_NAME}-md-0"
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
kind: EKSConfigTemplate
infrastructure:
ref:
name: "${CLUSTER_CLASS_NAME}-md-0"
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
kind: AWSMachineTemplate
---
kind: AWSManagedClusterTemplate
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
metadata:
name: "${CLUSTER_CLASS_NAME}"
spec:
template:
spec: {}
---
kind: AWSManagedControlPlaneTemplate
apiVersion: controlplane.cluster.x-k8s.io/v1beta2
metadata:
name: "${CLUSTER_CLASS_NAME}-control-plane"
spec:
template:
spec:
region: "${AWS_REGION}"
sshKeyName: "${AWS_SSH_KEY_NAME}"
version: "${KUBERNETES_VERSION}"
---
apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
kind: AWSMachineTemplate
metadata:
name: "${CLUSTER_CLASS_NAME}-md-0"
spec:
template:
spec:
ami:
eksLookupType: AmazonLinux2023
cloudInit:
insecureSkipSecretsManager: true
instanceType: "${AWS_NODE_MACHINE_TYPE}"
iamInstanceProfile: "nodes.cluster-api-provider-aws.sigs.k8s.io"
sshKeyName: "${AWS_SSH_KEY_NAME}"
---
apiVersion: bootstrap.cluster.x-k8s.io/v1beta2
kind: NodeadmConfigTemplate
metadata:
name: "${CLUSTER_CLASS_NAME}-md-0"
spec:
template: {}
79 changes: 79 additions & 0 deletions test/e2e/suites/managed/eks_nodeadm_clusterclass_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
//go:build e2e
// +build e2e

/*
Copyright 2025 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package managed

import (
"context"
"fmt"

"github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"k8s.io/utils/ptr"

ekscontrolplanev1 "sigs.k8s.io/cluster-api-provider-aws/v2/controlplane/eks/api/v1beta2"
"sigs.k8s.io/cluster-api-provider-aws/v2/test/e2e/shared"
capi_e2e "sigs.k8s.io/cluster-api/test/e2e"
"sigs.k8s.io/cluster-api/test/framework/clusterctl"
"sigs.k8s.io/cluster-api/util"
)

var _ = ginkgo.Describe("[managed] [general] [nodeadm] EKS nodeadm ClusterClass tests", func() {
const specName = "cluster"
var (
ctx context.Context
clusterName string
)

ginkgo.BeforeEach(func() {
ctx = context.TODO()

if !runGeneralTests() {
ginkgo.Skip("skipping due to unmet condition")
}

ginkgo.By("should have a valid test configuration")
Expect(e2eCtx.Environment.BootstrapClusterProxy).ToNot(BeNil(), "BootstrapClusterProxy can't be nil")
Expect(e2eCtx.E2EConfig).ToNot(BeNil(), "E2EConfig can't be nil")
Expect(e2eCtx.E2EConfig.Variables).To(HaveKey(shared.KubernetesVersion))
Expect(e2eCtx.E2EConfig.Variables).To(HaveKey(shared.CNIAddonVersion))

clusterName = fmt.Sprintf("%s-%s", specName, util.RandomString(6))

ginkgo.By("default iam role should exist")
VerifyRoleExistsAndOwned(ctx, ekscontrolplanev1.DefaultEKSControlPlaneRole, "", false, e2eCtx.AWSSession)
})

capi_e2e.QuickStartSpec(context.TODO(), func() capi_e2e.QuickStartSpecInput {
return capi_e2e.QuickStartSpecInput{
E2EConfig: e2eCtx.E2EConfig,
ClusterctlConfigPath: e2eCtx.Environment.ClusterctlConfigPath,
BootstrapClusterProxy: e2eCtx.Environment.BootstrapClusterProxy,
ArtifactFolder: e2eCtx.Settings.ArtifactFolder,
SkipCleanup: e2eCtx.Settings.SkipCleanup,
Flavor: ptr.To(EKSNodeadmClusterClassFlavor),
ClusterName: ptr.To(clusterName),
WorkerMachineCount: ptr.To(int64(3)),
ControlPlaneWaiters: clusterctl.ControlPlaneWaiters{
WaitForControlPlaneInitialized: WaitForEKSControlPlaneInitialized,
WaitForControlPlaneMachinesReady: WaitForEKSControlPlaneMachinesReady,
},
}
})
})
2 changes: 1 addition & 1 deletion test/e2e/suites/unmanaged/unmanaged_CAPI_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ var _ = ginkgo.Context("[unmanaged] [Cluster API Framework]", func() {
})
})

ginkgo.PDescribe("Clusterctl Upgrade Spec [from latest v1beta1 release to v1beta2]", func() {
ginkgo.Describe("Clusterctl Upgrade Spec [from latest v1beta1 release to v1beta2]", func() {
ginkgo.BeforeEach(func() {
if !e2eCtx.Settings.SkipQuotas {
// As the resources cannot be defined by the It() clause in CAPI tests, using the largest values required for all It() tests in this CAPI test.
Expand Down
10 changes: 2 additions & 8 deletions test/e2e/suites/unmanaged/unmanaged_functional_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ var _ = ginkgo.Context("[unmanaged] [functional]", func() {

ginkgo.Describe("GPU-enabled cluster test", func() {
ginkgo.It("should create cluster with single worker", func() {
ginkgo.Skip("Args field of clusterctl.ApplyClusterTemplateAndWaitInput was removed, need to add support for server-side filtering.")
specName := "functional-gpu-cluster"
namespace := shared.SetupSpecNamespace(ctx, specName, e2eCtx)
if !e2eCtx.Settings.SkipQuotas {
Expand Down Expand Up @@ -151,13 +150,8 @@ var _ = ginkgo.Context("[unmanaged] [functional]", func() {
WaitForClusterIntervals: e2eCtx.E2EConfig.GetIntervals(specName, "wait-cluster"),
WaitForControlPlaneIntervals: e2eCtx.E2EConfig.GetIntervals(specName, "wait-control-plane"),
WaitForMachineDeployments: e2eCtx.E2EConfig.GetIntervals(specName, "wait-worker-nodes"),
// nvidia-gpu flavor creates a config map as part of a crs, that exceeds the annotations size limit when we do kubectl apply.
// This is because the entire config map is stored in `last-applied` annotation for tracking.
// The workaround is to use server side apply by passing `--server-side` flag to kubectl apply.
// More on server side apply here: https://kubernetes.io/docs/reference/using-api/server-side-apply/
// TODO: Need a PR to re-add argument support to this type.
// It was removed in https://github.com/kubernetes-sigs/cluster-api/commit/b4349fecaa626865e71b058a8b01e0377fb9e444
// Args: []string{"--server-side"},
// GPU operator components are deployed via ClusterResourceSet which handles large ConfigMaps
// without the kubectl annotation size limit issues that occur with client-side apply.
}, result)

shared.AWSGPUSpec(ctx, e2eCtx, shared.AWSGPUSpecInput{
Expand Down