Skip to content

Commit 8b16085

Browse files
committed
feat(ubuntu): add support for resolute
1 parent 10513ae commit 8b16085

File tree

5 files changed

+41
-4
lines changed

5 files changed

+41
-4
lines changed

pkg/ami/auto_resolver.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ func MakeImageSearchPatterns(version string) map[string]map[int]string {
3535
ImageClassNeuron: fmt.Sprintf("amazon-eks-gpu-node-%s-*", version),
3636
ImageClassARM: fmt.Sprintf("amazon-eks-arm64-node-%s-*", version),
3737
},
38+
api.NodeImageFamilyUbuntuPro2604: {
39+
ImageClassGeneral: fmt.Sprintf("ubuntu-eks-pro/k8s_%s/images/*26.04-amd64*", version),
40+
ImageClassARM: fmt.Sprintf("ubuntu-eks-pro/k8s_%s/images/*26.04-arm64*", version),
41+
},
3842
api.NodeImageFamilyUbuntuPro2404: {
3943
ImageClassGeneral: fmt.Sprintf("ubuntu-eks-pro/k8s_%s/images/*24.04-amd64*", version),
4044
ImageClassARM: fmt.Sprintf("ubuntu-eks-pro/k8s_%s/images/*24.04-arm64*", version),
@@ -47,6 +51,10 @@ func MakeImageSearchPatterns(version string) map[string]map[int]string {
4751
ImageClassGeneral: fmt.Sprintf("ubuntu-eks-pro/k8s_%s/images/*20.04-amd64*", version),
4852
ImageClassARM: fmt.Sprintf("ubuntu-eks-pro/k8s_%s/images/*20.04-arm64*", version),
4953
},
54+
api.NodeImageFamilyUbuntu2604: {
55+
ImageClassGeneral: fmt.Sprintf("ubuntu-eks/k8s_%s/images/*26.04-amd64*", version),
56+
ImageClassARM: fmt.Sprintf("ubuntu-eks/k8s_%s/images/*26.04-arm64*", version),
57+
},
5058
api.NodeImageFamilyUbuntu2404: {
5159
ImageClassGeneral: fmt.Sprintf("ubuntu-eks/k8s_%s/images/*24.04-amd64*", version),
5260
ImageClassARM: fmt.Sprintf("ubuntu-eks/k8s_%s/images/*24.04-arm64*", version),
@@ -83,7 +91,7 @@ func MakeImageSearchPatterns(version string) map[string]map[int]string {
8391
// OwnerAccountID returns the AWS account ID that owns worker AMI.
8492
func OwnerAccountID(imageFamily, region string) (string, error) {
8593
switch imageFamily {
86-
case api.NodeImageFamilyUbuntuPro2404, api.NodeImageFamilyUbuntu2404, api.NodeImageFamilyUbuntuPro2204, api.NodeImageFamilyUbuntu2204, api.NodeImageFamilyUbuntuPro2004, api.NodeImageFamilyUbuntu2004:
94+
case api.NodeImageFamilyUbuntuPro2604, api.NodeImageFamilyUbuntu2604, api.NodeImageFamilyUbuntuPro2404, api.NodeImageFamilyUbuntu2404, api.NodeImageFamilyUbuntuPro2204, api.NodeImageFamilyUbuntu2204, api.NodeImageFamilyUbuntuPro2004, api.NodeImageFamilyUbuntu2004:
8795
return ownerIDUbuntuFamily, nil
8896
case api.NodeImageFamilyAmazonLinux2023, api.NodeImageFamilyAmazonLinux2:
8997
return api.EKSResourceAccountID(region), nil

pkg/ami/ssm_resolver.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,16 @@ func MakeSSMParameterName(version, instanceType, imageFamily string) (string, er
106106
eksProduct = "eks-pro"
107107
}
108108
return fmt.Sprint("/aws/service/canonical/ubuntu/", eksProduct, "/", ubuntuReleaseName(imageFamily), "/", version, "/stable/current/", ubuntuArchName(instanceType), "/hvm/ebs-gp3/ami-id"), nil
109+
case api.NodeImageFamilyUbuntu2604,
110+
api.NodeImageFamilyUbuntuPro2604:
111+
if err := validateVersionForUbuntu(version, imageFamily); err != nil {
112+
return "", err
113+
}
114+
eksProduct := "eks"
115+
if imageFamily == api.NodeImageFamilyUbuntuPro2604 {
116+
eksProduct = "eks-pro"
117+
}
118+
return fmt.Sprint("/aws/service/canonical/ubuntu/", eksProduct, "/", ubuntuReleaseName(imageFamily), "/", version, "/stable/current/", ubuntuArchName(instanceType), "/hvm/ebs-gp3/ami-id"), nil
109119
default:
110120
return "", fmt.Errorf("unknown image family %s", imageFamily)
111121
}
@@ -201,6 +211,8 @@ func ubuntuReleaseName(imageFamily string) string {
201211
return "22.04"
202212
case api.NodeImageFamilyUbuntu2404, api.NodeImageFamilyUbuntuPro2404:
203213
return "24.04"
214+
case api.NodeImageFamilyUbuntu2604, api.NodeImageFamilyUbuntuPro2604:
215+
return "26.04"
204216
default:
205217
return "18.04"
206218
}
@@ -268,6 +280,17 @@ func validateVersionForUbuntu(version, imageFamily string) error {
268280
if !supportsUbuntu {
269281
return &UnsupportedQueryError{msg: fmt.Sprintf("%s requires EKS version greater or equal than %s", imageFamily, minVersion)}
270282
}
283+
case api.NodeImageFamilyUbuntu2604, api.NodeImageFamilyUbuntuPro2604:
284+
var err error
285+
supportsUbuntu := false
286+
const minVersion = api.Version1_35
287+
supportsUbuntu, err = utils.IsMinVersion(minVersion, version)
288+
if err != nil {
289+
return err
290+
}
291+
if !supportsUbuntu {
292+
return &UnsupportedQueryError{msg: fmt.Sprintf("%s requires EKS version greater or equal than %s", imageFamily, minVersion)}
293+
}
271294
default:
272295
return &UnsupportedQueryError{msg: fmt.Sprintf("SSM Parameter lookups for %s AMIs is not supported", imageFamily)}
273296
}

pkg/apis/eksctl.io/v1alpha5/types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ const (
212212
DefaultNodeImageFamily = NodeImageFamilyAmazonLinux2023
213213
NodeImageFamilyAmazonLinux2023 = "AmazonLinux2023"
214214
NodeImageFamilyAmazonLinux2 = "AmazonLinux2"
215+
NodeImageFamilyUbuntuPro2604 = "UbuntuPro2604"
216+
NodeImageFamilyUbuntu2604 = "Ubuntu2604"
215217
NodeImageFamilyUbuntuPro2404 = "UbuntuPro2404"
216218
NodeImageFamilyUbuntu2404 = "Ubuntu2404"
217219
NodeImageFamilyUbuntuPro2204 = "UbuntuPro2204"
@@ -598,6 +600,8 @@ func SupportedAMIFamilies() []string {
598600
return []string{
599601
NodeImageFamilyAmazonLinux2023,
600602
NodeImageFamilyAmazonLinux2,
603+
NodeImageFamilyUbuntuPro2604,
604+
NodeImageFamilyUbuntu2604,
601605
NodeImageFamilyUbuntuPro2404,
602606
NodeImageFamilyUbuntu2404,
603607
NodeImageFamilyUbuntuPro2204,

pkg/apis/eksctl.io/v1alpha5/validation.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1655,7 +1655,9 @@ func IsBottlerocketImage(imageFamily string) bool {
16551655

16561656
func IsUbuntuImage(imageFamily string) bool {
16571657
switch imageFamily {
1658-
case NodeImageFamilyUbuntuPro2404,
1658+
case NodeImageFamilyUbuntuPro2604,
1659+
NodeImageFamilyUbuntu2604,
1660+
NodeImageFamilyUbuntuPro2404,
16591661
NodeImageFamilyUbuntu2404,
16601662
NodeImageFamilyUbuntuPro2204,
16611663
NodeImageFamilyUbuntu2204,

pkg/nodebootstrap/userdata.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func NewBootstrapper(clusterConfig *api.ClusterConfig, ng *api.NodeGroup) (Boots
4646
return NewWindowsBootstrapper(clusterConfig, ng, clusterDNS), nil
4747
}
4848
switch ng.AMIFamily {
49-
case api.NodeImageFamilyUbuntuPro2404, api.NodeImageFamilyUbuntu2404, api.NodeImageFamilyUbuntuPro2204, api.NodeImageFamilyUbuntu2204, api.NodeImageFamilyUbuntuPro2004, api.NodeImageFamilyUbuntu2004:
49+
case api.NodeImageFamilyUbuntuPro2604, api.NodeImageFamilyUbuntu2604, api.NodeImageFamilyUbuntuPro2404, api.NodeImageFamilyUbuntu2404, api.NodeImageFamilyUbuntuPro2204, api.NodeImageFamilyUbuntu2204, api.NodeImageFamilyUbuntuPro2004, api.NodeImageFamilyUbuntu2004:
5050
return NewUbuntuBootstrapper(clusterConfig, ng, clusterDNS), nil
5151
case api.NodeImageFamilyBottlerocket:
5252
return NewBottlerocketBootstrapper(clusterConfig, ng), nil
@@ -78,7 +78,7 @@ func NewManagedBootstrapper(clusterConfig *api.ClusterConfig, ng *api.ManagedNod
7878
return NewManagedAL2Bootstrapper(ng), nil
7979
case api.NodeImageFamilyBottlerocket:
8080
return NewManagedBottlerocketBootstrapper(clusterConfig, ng), nil
81-
case api.NodeImageFamilyUbuntu2004, api.NodeImageFamilyUbuntuPro2004, api.NodeImageFamilyUbuntu2204, api.NodeImageFamilyUbuntuPro2204, api.NodeImageFamilyUbuntu2404, api.NodeImageFamilyUbuntuPro2404:
81+
case api.NodeImageFamilyUbuntu2004, api.NodeImageFamilyUbuntuPro2004, api.NodeImageFamilyUbuntu2204, api.NodeImageFamilyUbuntuPro2204, api.NodeImageFamilyUbuntu2404, api.NodeImageFamilyUbuntuPro2404, api.NodeImageFamilyUbuntu2604, api.NodeImageFamilyUbuntuPro2604:
8282
return NewUbuntuBootstrapper(clusterConfig, ng, clusterDNS), nil
8383
}
8484
return nil, nil

0 commit comments

Comments
 (0)