Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
39193ce
deps: update cluster-api, k8s and controller-runtime deps
clebs Feb 3, 2026
753ab8b
deps: update e2e testing versions and envtest
clebs Feb 4, 2026
2cf1b1b
fix(e2e): use correct AMI k8s version
clebs Feb 4, 2026
d5c9acd
test(e2e): Add v1.12 to CAPI version to contract map
clebs Feb 4, 2026
3e158f2
test(e2e): update EKS lookup on templates
clebs Mar 11, 2026
c71ab6a
test(e2e): Migrate bootstrap provider to Nodeadm
clebs Mar 24, 2026
7304028
fix: adds insecure skip secrets manager required for al2023 (#9)
faiq Mar 27, 2026
359ce2d
test: fix mmp tests (#10)
faiq Mar 30, 2026
e2eacfa
fix: removes redundant nodeadm templates (#11)
faiq Apr 1, 2026
cc64b70
fix: flatcar log collection
damdo Mar 10, 2026
da88e93
e2e: use goroutine-aware fail handler to prevent diagnostic dump panics
damdo Mar 10, 2026
1ef21c9
fix(e2e): use ECR image ref for CAPA controller to survive pod resche…
damdo Mar 12, 2026
ef2a184
chore: bump calico to v3.31.4 (to support k8s 1.34)
damdo Mar 14, 2026
7f2c27e
fix!: tune API server ELB health check defaults to prevent kubeadm in…
damdo Mar 31, 2026
09e9c83
feat/fix!: re-add configurable DNS resolution check for API server LB
damdo Apr 2, 2026
1097e9b
fix: reduce pending instance requeue interval to accelerate LB regist…
damdo Apr 4, 2026
2a7bf98
fix(e2e): use external cloud provider (#12)
faiq Apr 7, 2026
3d38fef
build(deps): Update to k8s 1.34.8
clebs May 15, 2026
9199f77
fix(e2e): use kind v1.34.3 for management clusters
damdo May 27, 2026
7c19f7a
fix(e2e): bump ClusterClass templates to v1beta2 APIs
damdo May 28, 2026
c06b78e
fix(e2e): use v1beta2 schema for ClusterClass and Cluster topology
damdo May 28, 2026
352f3c9
fix(e2e): remove template wrapper from ClusterClass machineDeployments
damdo May 28, 2026
2b2eea7
fix(e2e): add apiVersion to ClusterClass templateRef fields
damdo May 28, 2026
2e3224d
build(deps): bump CAPI from v1.12.2 to v1.12.8
damdo Jun 11, 2026
9287e4f
fix(e2e): increase rootVolume size for Flatcar ignition templates
damdo Jun 11, 2026
a2c2c13
fix(e2e): update kustomize patch targets to v1beta2 for ClusterClass …
damdo Jun 11, 2026
b0ffe49
test(e2e): set kubeadm verbosity to 5 for e2e debugging
damdo Jun 13, 2026
bafa5f1
fix(e2e): temporarily use k8s v1.34.1 for workload clusters
damdo Jun 18, 2026
9ac7a3c
fix(e2e): use k8s v1.33.4 for workload clusters to avoid kubeadm join…
damdo Jun 22, 2026
58f038b
fix(e2e): remove references to deleted eks-nodeadm-clusterclass files
damdo Jun 23, 2026
0f5d67c
chore(unit): Replace magic numbers with existing constants
clebs Jun 26, 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
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,8 @@ E2E_SKIP_EKS_UPGRADE ?= "false"
EKS_SOURCE_TEMPLATE ?= eks/cluster-template-eks-control-plane-only.yaml

# set up `setup-envtest` to install kubebuilder dependency
export KUBEBUILDER_ENVTEST_KUBERNETES_VERSION ?= 1.32.0
SETUP_ENVTEST_VER := release-0.20
export KUBEBUILDER_ENVTEST_KUBERNETES_VERSION ?= 1.34.0
SETUP_ENVTEST_VER := release-0.22
SETUP_ENVTEST_BIN := setup-envtest
SETUP_ENVTEST := $(abspath $(TOOLS_BIN_DIR)/$(SETUP_ENVTEST_BIN)-$(SETUP_ENVTEST_VER))
SETUP_ENVTEST_PKG := sigs.k8s.io/controller-runtime/tools/setup-envtest
Expand Down
1 change: 1 addition & 0 deletions api/v1beta1/awscluster_conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ func restoreControlPlaneLoadBalancer(restored, dst *infrav1.AWSLoadBalancerSpec)
dst.CrossZoneLoadBalancing = restored.CrossZoneLoadBalancing
dst.Subnets = restored.Subnets
dst.TargetGroupIPType = restored.TargetGroupIPType
dst.DNSResolutionCheck = restored.DNSResolutionCheck
}

// ConvertFrom converts the v1beta1 AWSCluster receiver to a v1beta1 AWSCluster.
Expand Down
1 change: 1 addition & 0 deletions api/v1beta1/zz_generated.conversion.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions api/v1beta2/awscluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,19 @@ var (
LoadBalancerTypeDisabled = LoadBalancerType("disabled")
)

// AWSLoadBalancerDNSResolutionCheck specifies the behavior for checking that the load balancer's
// DNS name is resolvable.
type AWSLoadBalancerDNSResolutionCheck string

const (
// AWSLoadBalancerDNSResolutionCheckNone disables the DNS resolution verification step.
AWSLoadBalancerDNSResolutionCheckNone AWSLoadBalancerDNSResolutionCheck = "None"

// AWSLoadBalancerDNSResolutionCheckEnabled performs a DNS lookup against the load balancer's
// FQDN to ensure the record has propagated and is reachable.
AWSLoadBalancerDNSResolutionCheckEnabled AWSLoadBalancerDNSResolutionCheck = "Enabled"
)

// AWSLoadBalancerSpec defines the desired state of an AWS load balancer.
type AWSLoadBalancerSpec struct {
// Name sets the name of the classic ELB load balancer. As per AWS, the name must be unique
Expand Down Expand Up @@ -262,6 +275,13 @@ type AWSLoadBalancerSpec struct {
// +kubebuilder:validation:Enum=ipv4;ipv6
// +optional
TargetGroupIPType *TargetGroupIPType `json:"targetGroupIPType,omitempty"`

// DNSResolutionCheck configures the behavior for checking the load balancer DNS resolution.
// Set to "None" to disable the check.
// If omitted, the provider will pick a reasonable default which may change over time.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Not sure can or should say that we will change the default behaviour.

// +kubebuilder:validation:Enum=None;Enabled
// +optional
DNSResolutionCheck *AWSLoadBalancerDNSResolutionCheck `json:"dnsResolutionCheck,omitempty"`
}

// AdditionalListenerSpec defines the desired state of an
Expand Down
8 changes: 4 additions & 4 deletions api/v1beta2/network_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@ const (
// DefaultAPIServerHealthCheckPath the API server health check path.
DefaultAPIServerHealthCheckPath = "/readyz"
// DefaultAPIServerHealthCheckIntervalSec the API server health check interval in seconds.
DefaultAPIServerHealthCheckIntervalSec = 10
DefaultAPIServerHealthCheckIntervalSec = 5
// DefaultAPIServerHealthCheckTimeoutSec the API server health check timeout in seconds.
DefaultAPIServerHealthCheckTimeoutSec = 5
DefaultAPIServerHealthCheckTimeoutSec = 4
// DefaultAPIServerHealthThresholdCount the API server health check threshold count.
DefaultAPIServerHealthThresholdCount = 5
DefaultAPIServerHealthThresholdCount = 2
// DefaultAPIServerUnhealthThresholdCount the API server unhealthy check threshold count.
DefaultAPIServerUnhealthThresholdCount = 3
DefaultAPIServerUnhealthThresholdCount = 6

// ZoneTypeAvailabilityZone defines the regular AWS zones in the Region.
ZoneTypeAvailabilityZone ZoneType = "availability-zone"
Expand Down
5 changes: 5 additions & 0 deletions api/v1beta2/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,6 @@ spec:
description: port is the port on which the API server is serving.
format: int32
type: integer
required:
- host
- port
type: object
disableVPCCNI:
default: false
Expand Down Expand Up @@ -1006,8 +1003,9 @@ spec:
in a Container.
properties:
name:
description: Name of the environment variable. Must be a
C_IDENTIFIER.
description: |-
Name of the environment variable.
May consist of any printable ASCII characters except '='.
type: string
value:
description: |-
Expand Down Expand Up @@ -1065,6 +1063,43 @@ spec:
- fieldPath
type: object
x-kubernetes-map-type: atomic
fileKeyRef:
description: |-
FileKeyRef selects a key of the env file.
Requires the EnvFiles feature gate to be enabled.
properties:
key:
description: |-
The key within the env file. An invalid key will prevent the pod from starting.
The keys defined within a source may consist of any printable ASCII characters except '='.
During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.
type: string
optional:
default: false
description: |-
Specify whether the file or its key must be defined. If the file or key
does not exist, then the env var is not published.
If optional is set to true and the specified key does not exist,
the environment variable will not be set in the Pod's containers.

If optional is set to false and the specified key does not exist,
an error will be returned during Pod creation.
type: boolean
path:
description: |-
The path within the volume from which to select the file.
Must be relative and may not contain the '..' path or start with '..'.
type: string
volumeName:
description: The name of the volume mount containing
the env file.
type: string
required:
- key
- path
- volumeName
type: object
x-kubernetes-map-type: atomic
resourceFieldRef:
description: |-
Selects a resource of the container: only resources limits and requests
Expand Down Expand Up @@ -2541,9 +2576,6 @@ spec:
description: port is the port on which the API server is serving.
format: int32
type: integer
required:
- host
- port
type: object
eksClusterName:
description: |-
Expand Down Expand Up @@ -3427,8 +3459,9 @@ spec:
in a Container.
properties:
name:
description: Name of the environment variable. Must be a
C_IDENTIFIER.
description: |-
Name of the environment variable.
May consist of any printable ASCII characters except '='.
type: string
value:
description: |-
Expand Down Expand Up @@ -3486,6 +3519,43 @@ spec:
- fieldPath
type: object
x-kubernetes-map-type: atomic
fileKeyRef:
description: |-
FileKeyRef selects a key of the env file.
Requires the EnvFiles feature gate to be enabled.
properties:
key:
description: |-
The key within the env file. An invalid key will prevent the pod from starting.
The keys defined within a source may consist of any printable ASCII characters except '='.
During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.
type: string
optional:
default: false
description: |-
Specify whether the file or its key must be defined. If the file or key
does not exist, then the env var is not published.
If optional is set to true and the specified key does not exist,
the environment variable will not be set in the Pod's containers.

If optional is set to false and the specified key does not exist,
an error will be returned during Pod creation.
type: boolean
path:
description: |-
The path within the volume from which to select the file.
Must be relative and may not contain the '..' path or start with '..'.
type: string
volumeName:
description: The name of the volume mount containing
the env file.
type: string
required:
- key
- path
- volumeName
type: object
x-kubernetes-map-type: atomic
resourceFieldRef:
description: |-
Selects a resource of the container: only resources limits and requests
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,9 +265,6 @@ spec:
is serving.
format: int32
type: integer
required:
- host
- port
type: object
eksClusterName:
description: |-
Expand Down Expand Up @@ -1166,8 +1163,9 @@ spec:
present in a Container.
properties:
name:
description: Name of the environment variable. Must
be a C_IDENTIFIER.
description: |-
Name of the environment variable.
May consist of any printable ASCII characters except '='.
type: string
value:
description: |-
Expand Down Expand Up @@ -1225,6 +1223,43 @@ spec:
- fieldPath
type: object
x-kubernetes-map-type: atomic
fileKeyRef:
description: |-
FileKeyRef selects a key of the env file.
Requires the EnvFiles feature gate to be enabled.
properties:
key:
description: |-
The key within the env file. An invalid key will prevent the pod from starting.
The keys defined within a source may consist of any printable ASCII characters except '='.
During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.
type: string
optional:
default: false
description: |-
Specify whether the file or its key must be defined. If the file or key
does not exist, then the env var is not published.
If optional is set to true and the specified key does not exist,
the environment variable will not be set in the Pod's containers.

If optional is set to false and the specified key does not exist,
an error will be returned during Pod creation.
type: boolean
path:
description: |-
The path within the volume from which to select the file.
Must be relative and may not contain the '..' path or start with '..'.
type: string
volumeName:
description: The name of the volume mount
containing the env file.
type: string
required:
- key
- path
- volumeName
type: object
x-kubernetes-map-type: atomic
resourceFieldRef:
description: |-
Selects a resource of the container: only resources limits and requests
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,9 +227,6 @@ spec:
description: port is the port on which the API server is serving.
format: int32
type: integer
required:
- host
- port
type: object
credentialsSecretRef:
description: |-
Expand Down
24 changes: 18 additions & 6 deletions config/crd/bases/infrastructure.cluster.x-k8s.io_awsclusters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,6 @@ spec:
description: port is the port on which the API server is serving.
format: int32
type: integer
required:
- host
- port
type: object
controlPlaneLoadBalancer:
description: ControlPlaneLoadBalancer is optional configuration for
Expand Down Expand Up @@ -986,9 +983,6 @@ spec:
description: port is the port on which the API server is serving.
format: int32
type: integer
required:
- host
- port
type: object
controlPlaneLoadBalancer:
description: ControlPlaneLoadBalancer is optional configuration for
Expand Down Expand Up @@ -1113,6 +1107,15 @@ spec:
DisableHostsRewrite disabled the hair pinning issue solution that adds the NLB's address as 127.0.0.1 to the hosts
file of each instance. This is by default, false.
type: boolean
dnsResolutionCheck:
description: |-
DNSResolutionCheck configures the behavior for checking the load balancer DNS resolution.
Set to "None" to disable the check.
If omitted, the provider will pick a reasonable default which may change over time.
enum:
- None
- Enabled
type: string
healthCheck:
description: HealthCheck sets custom health check configuration
to the API target group.
Expand Down Expand Up @@ -2017,6 +2020,15 @@ spec:
DisableHostsRewrite disabled the hair pinning issue solution that adds the NLB's address as 127.0.0.1 to the hosts
file of each instance. This is by default, false.
type: boolean
dnsResolutionCheck:
description: |-
DNSResolutionCheck configures the behavior for checking the load balancer DNS resolution.
Set to "None" to disable the check.
If omitted, the provider will pick a reasonable default which may change over time.
enum:
- None
- Enabled
type: string
healthCheck:
description: HealthCheck sets custom health check configuration
to the API target group.
Expand Down
Loading