Skip to content

Commit 6d4926d

Browse files
authored
feat(ubuntu): add support for resolute (#8683)
1 parent b86e8bd commit 6d4926d

6 files changed

Lines changed: 49 additions & 8 deletions

File tree

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/assets/schema.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1651,12 +1651,14 @@
16511651
},
16521652
"amiFamily": {
16531653
"type": "string",
1654-
"description": "Valid variants are: `\"AmazonLinux2023\"` (default), `\"AmazonLinux2\"`, `\"UbuntuPro2404\"`, `\"Ubuntu2404\"`, `\"UbuntuPro2204\"`, `\"Ubuntu2204\"`, `\"UbuntuPro2004\"`, `\"Ubuntu2004\"`, `\"Bottlerocket\"`, `\"WindowsServer2019CoreContainer\"`, `\"WindowsServer2019FullContainer\"`, `\"WindowsServer2022CoreContainer\"`, `\"WindowsServer2022FullContainer\"`, `\"WindowsServer2025CoreContainer\"`, `\"WindowsServer2025FullContainer\"`.",
1655-
"x-intellij-html-description": "Valid variants are: <code>&quot;AmazonLinux2023&quot;</code> (default), <code>&quot;AmazonLinux2&quot;</code>, <code>&quot;UbuntuPro2404&quot;</code>, <code>&quot;Ubuntu2404&quot;</code>, <code>&quot;UbuntuPro2204&quot;</code>, <code>&quot;Ubuntu2204&quot;</code>, <code>&quot;UbuntuPro2004&quot;</code>, <code>&quot;Ubuntu2004&quot;</code>, <code>&quot;Bottlerocket&quot;</code>, <code>&quot;WindowsServer2019CoreContainer&quot;</code>, <code>&quot;WindowsServer2019FullContainer&quot;</code>, <code>&quot;WindowsServer2022CoreContainer&quot;</code>, <code>&quot;WindowsServer2022FullContainer&quot;</code>, <code>&quot;WindowsServer2025CoreContainer&quot;</code>, <code>&quot;WindowsServer2025FullContainer&quot;</code>.",
1654+
"description": "Valid variants are: `\"AmazonLinux2023\"` (default), `\"AmazonLinux2\"`, `\"UbuntuPro2604\"`, `\"Ubuntu2604\"`, `\"UbuntuPro2404\"`, `\"Ubuntu2404\"`, `\"UbuntuPro2204\"`, `\"Ubuntu2204\"`, `\"UbuntuPro2004\"`, `\"Ubuntu2004\"`, `\"Bottlerocket\"`, `\"WindowsServer2019CoreContainer\"`, `\"WindowsServer2019FullContainer\"`, `\"WindowsServer2022CoreContainer\"`, `\"WindowsServer2022FullContainer\"`, `\"WindowsServer2025CoreContainer\"`, `\"WindowsServer2025FullContainer\"`.",
1655+
"x-intellij-html-description": "Valid variants are: <code>&quot;AmazonLinux2023&quot;</code> (default), <code>&quot;AmazonLinux2&quot;</code>, <code>&quot;UbuntuPro2604&quot;</code>, <code>&quot;Ubuntu2604&quot;</code>, <code>&quot;UbuntuPro2404&quot;</code>, <code>&quot;Ubuntu2404&quot;</code>, <code>&quot;UbuntuPro2204&quot;</code>, <code>&quot;Ubuntu2204&quot;</code>, <code>&quot;UbuntuPro2004&quot;</code>, <code>&quot;Ubuntu2004&quot;</code>, <code>&quot;Bottlerocket&quot;</code>, <code>&quot;WindowsServer2019CoreContainer&quot;</code>, <code>&quot;WindowsServer2019FullContainer&quot;</code>, <code>&quot;WindowsServer2022CoreContainer&quot;</code>, <code>&quot;WindowsServer2022FullContainer&quot;</code>, <code>&quot;WindowsServer2025CoreContainer&quot;</code>, <code>&quot;WindowsServer2025FullContainer&quot;</code>.",
16561656
"default": "AmazonLinux2023",
16571657
"enum": [
16581658
"AmazonLinux2023",
16591659
"AmazonLinux2",
1660+
"UbuntuPro2604",
1661+
"Ubuntu2604",
16601662
"UbuntuPro2404",
16611663
"Ubuntu2404",
16621664
"UbuntuPro2204",
@@ -2003,12 +2005,14 @@
20032005
},
20042006
"amiFamily": {
20052007
"type": "string",
2006-
"description": "Valid variants are: `\"AmazonLinux2023\"` (default), `\"AmazonLinux2\"`, `\"UbuntuPro2404\"`, `\"Ubuntu2404\"`, `\"UbuntuPro2204\"`, `\"Ubuntu2204\"`, `\"UbuntuPro2004\"`, `\"Ubuntu2004\"`, `\"Bottlerocket\"`, `\"WindowsServer2019CoreContainer\"`, `\"WindowsServer2019FullContainer\"`, `\"WindowsServer2022CoreContainer\"`, `\"WindowsServer2022FullContainer\"`, `\"WindowsServer2025CoreContainer\"`, `\"WindowsServer2025FullContainer\"`.",
2007-
"x-intellij-html-description": "Valid variants are: <code>&quot;AmazonLinux2023&quot;</code> (default), <code>&quot;AmazonLinux2&quot;</code>, <code>&quot;UbuntuPro2404&quot;</code>, <code>&quot;Ubuntu2404&quot;</code>, <code>&quot;UbuntuPro2204&quot;</code>, <code>&quot;Ubuntu2204&quot;</code>, <code>&quot;UbuntuPro2004&quot;</code>, <code>&quot;Ubuntu2004&quot;</code>, <code>&quot;Bottlerocket&quot;</code>, <code>&quot;WindowsServer2019CoreContainer&quot;</code>, <code>&quot;WindowsServer2019FullContainer&quot;</code>, <code>&quot;WindowsServer2022CoreContainer&quot;</code>, <code>&quot;WindowsServer2022FullContainer&quot;</code>, <code>&quot;WindowsServer2025CoreContainer&quot;</code>, <code>&quot;WindowsServer2025FullContainer&quot;</code>.",
2008+
"description": "Valid variants are: `\"AmazonLinux2023\"` (default), `\"AmazonLinux2\"`, `\"UbuntuPro2604\"`, `\"Ubuntu2604\"`, `\"UbuntuPro2404\"`, `\"Ubuntu2404\"`, `\"UbuntuPro2204\"`, `\"Ubuntu2204\"`, `\"UbuntuPro2004\"`, `\"Ubuntu2004\"`, `\"Bottlerocket\"`, `\"WindowsServer2019CoreContainer\"`, `\"WindowsServer2019FullContainer\"`, `\"WindowsServer2022CoreContainer\"`, `\"WindowsServer2022FullContainer\"`, `\"WindowsServer2025CoreContainer\"`, `\"WindowsServer2025FullContainer\"`.",
2009+
"x-intellij-html-description": "Valid variants are: <code>&quot;AmazonLinux2023&quot;</code> (default), <code>&quot;AmazonLinux2&quot;</code>, <code>&quot;UbuntuPro2604&quot;</code>, <code>&quot;Ubuntu2604&quot;</code>, <code>&quot;UbuntuPro2404&quot;</code>, <code>&quot;Ubuntu2404&quot;</code>, <code>&quot;UbuntuPro2204&quot;</code>, <code>&quot;Ubuntu2204&quot;</code>, <code>&quot;UbuntuPro2004&quot;</code>, <code>&quot;Ubuntu2004&quot;</code>, <code>&quot;Bottlerocket&quot;</code>, <code>&quot;WindowsServer2019CoreContainer&quot;</code>, <code>&quot;WindowsServer2019FullContainer&quot;</code>, <code>&quot;WindowsServer2022CoreContainer&quot;</code>, <code>&quot;WindowsServer2022FullContainer&quot;</code>, <code>&quot;WindowsServer2025CoreContainer&quot;</code>, <code>&quot;WindowsServer2025FullContainer&quot;</code>.",
20082010
"default": "AmazonLinux2023",
20092011
"enum": [
20102012
"AmazonLinux2023",
20112013
"AmazonLinux2",
2014+
"UbuntuPro2604",
2015+
"Ubuntu2604",
20122016
"UbuntuPro2404",
20132017
"Ubuntu2404",
20142018
"UbuntuPro2204",

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
@@ -1661,7 +1661,9 @@ func IsBottlerocketImage(imageFamily string) bool {
16611661

16621662
func IsUbuntuImage(imageFamily string) bool {
16631663
switch imageFamily {
1664-
case NodeImageFamilyUbuntuPro2404,
1664+
case NodeImageFamilyUbuntuPro2604,
1665+
NodeImageFamilyUbuntu2604,
1666+
NodeImageFamilyUbuntuPro2404,
16651667
NodeImageFamilyUbuntu2404,
16661668
NodeImageFamilyUbuntuPro2204,
16671669
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)