Skip to content

Commit 059c8d9

Browse files
aclevernameSkarlsocPu1
authored
Add support for managed bottlerocket GPU nodes (#5059)
* Add support for managed bottlerocket nodes * Updated * Added new version of EKS to use the built in types * Update pkg/apis/eksctl.io/v1alpha5/gpu_validation_test.go * Update pkg/apis/eksctl.io/v1alpha5/gpu_validation_test.go Co-authored-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com> Co-authored-by: Chetan Patwal <cPu1@users.noreply.github.com>
1 parent 2f63406 commit 059c8d9

File tree

6 files changed

+54
-65
lines changed

6 files changed

+54
-65
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ require (
1717
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.16.1
1818
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.7
1919
github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.15.5
20-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.44.0
21-
github.com/aws/aws-sdk-go-v2/service/eks v1.20.7
20+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.45.0
21+
github.com/aws/aws-sdk-go-v2/service/eks v1.21.1
2222
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.14.4
2323
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.4
2424
github.com/aws/aws-sdk-go-v2/service/iam v1.18.5

go.sum

Lines changed: 4 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -379,89 +379,56 @@ github.com/aws/aws-sdk-go v1.37.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zK
379379
github.com/aws/aws-sdk-go v1.38.29/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
380380
github.com/aws/aws-sdk-go v1.38.49/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
381381
github.com/aws/aws-sdk-go v1.40.34/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q=
382-
github.com/aws/aws-sdk-go v1.44.10 h1:ohCdgQpJ9ojzm0fOk7ykrMTgTpHJBk5nnA7X+HzmnOA=
383-
github.com/aws/aws-sdk-go v1.44.10/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
384382
github.com/aws/aws-sdk-go v1.44.15 h1:z02BVeV6k7hZMfWEQmKh3X23s3F9PBHFCcIVfNlut7A=
385383
github.com/aws/aws-sdk-go v1.44.15/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
386384
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
387385
github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
388-
github.com/aws/aws-sdk-go-v2 v1.11.2/go.mod h1:SQfA+m2ltnu1cA0soUkj4dRSsmITiVQUJvBIZjzfPyQ=
389-
github.com/aws/aws-sdk-go-v2 v1.16.3 h1:0W1TSJ7O6OzwuEvIXAtJGvOeQ0SGAhcpxPN2/NK5EhM=
390386
github.com/aws/aws-sdk-go-v2 v1.16.3/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU=
391387
github.com/aws/aws-sdk-go-v2 v1.16.4 h1:swQTEQUyJF/UkEA94/Ga55miiKFoXmm/Zd67XHgmjSg=
392388
github.com/aws/aws-sdk-go-v2 v1.16.4/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU=
393389
github.com/aws/aws-sdk-go-v2/config v1.7.0/go.mod h1:w9+nMZ7soXCe5nT46Ri354SNhXDQ6v+V5wqDjnZE+GY=
394-
github.com/aws/aws-sdk-go-v2/config v1.15.4 h1:P4mesY1hYUxru4f9SU0XxNKXmzfxsD0FtMIPRBjkH7Q=
395-
github.com/aws/aws-sdk-go-v2/config v1.15.4/go.mod h1:ZijHHh0xd/A+ZY53az0qzC5tT46kt4JVCePf2NX9Lk4=
396390
github.com/aws/aws-sdk-go-v2/config v1.15.6 h1:0pItK5GGqDG3Ndu+PiniN4f3X5QABBxI/zHP/z9px6g=
397391
github.com/aws/aws-sdk-go-v2/config v1.15.6/go.mod h1:EvBVTxF6CxlM/U94C4TYh0zuJIHOjkAtMg1LFISNzGY=
398392
github.com/aws/aws-sdk-go-v2/credentials v1.4.0/go.mod h1:dgGR+Qq7Wjcd4AOAW5Rf5Tnv3+x7ed6kETXyS9WCuAY=
399-
github.com/aws/aws-sdk-go-v2/credentials v1.12.0 h1:4R/NqlcRFSkR0wxOhgHi+agGpbEr5qMCjn7VqUIJY+E=
400-
github.com/aws/aws-sdk-go-v2/credentials v1.12.0/go.mod h1:9YWk7VW+eyKsoIL6/CljkTrNVWBSK9pkqOPUuijid4A=
401393
github.com/aws/aws-sdk-go-v2/credentials v1.12.1 h1:ZrLRNXSHVKfIEtE/Omy4sm3MCttO01/hcAezccZMdFs=
402394
github.com/aws/aws-sdk-go-v2/credentials v1.12.1/go.mod h1:vwCvnQKZoz/lLFkokOpHCWaoftee+ATlpx6XZS0ACn0=
403395
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.0/go.mod h1:CpNzHK9VEFUCknu50kkB8z58AH2B5DvPP7ea1LHve/Y=
404396
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.4 h1:FP8gquGeGHHdfY6G5llaMQDF+HAf20VKc8opRwmjf04=
405397
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.4/go.mod h1:u/s5/Z+ohUQOPXl00m2yJVyioWDECsbpXTQlaqSlufc=
406-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.2/go.mod h1:SgKKNBIoDC/E1ZCDhhMW3yalWjwuLjMcpLzsM/QQnWo=
407-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.10 h1:uFWgo6mGJI1n17nbcvSc6fxVuR3xLNqvXt12JCnEcT8=
408398
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.10/go.mod h1:F+EZtuIwjlv35kRJPyBGcsA4f7bnSoz15zOQ2lJq1Z4=
409399
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.11 h1:gsqHplNh1DaQunEKZISK56wlpbCg0yKxNVvGWCFuF1k=
410400
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.11/go.mod h1:tmUB6jakq5DFNcXsXOA/ZQ7/C8VnSKYkx58OI7Fh79g=
411-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.0.2/go.mod h1:xT4XX6w5Sa3dhg50JrYyy3e4WPYo/+WjY/BXtqXVunU=
412-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.4 h1:cnsvEKSoHN4oAN7spMMr0zhEW2MHnhAVpmqQg8E6UcM=
413401
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.4/go.mod h1:8glyUqVIM4AmeenIsPo0oVh3+NUwnsQml2OFupfQW+0=
414402
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.5 h1:PLFj+M2PgIDHG//hw3T0O0KLI4itVtAjtxrZx4AHPLg=
415403
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.5/go.mod h1:fV1AaS2gFc1tM0RCb015FJ0pvWVUfJZANzjwoO4YakM=
416404
github.com/aws/aws-sdk-go-v2/internal/ini v1.2.2/go.mod h1:BQV0agm+JEhqR+2RT5e1XTFIDcAAV0eW6z2trp+iduw=
417405
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.11 h1:6cZRymlLEIlDTEB0+5+An6Zj1CKt6rSE69tOmFeu1nk=
418406
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.11/go.mod h1:0MR+sS1b/yxsfAPvAESrw8NfwUoxMinDyw6EYR9BS2U=
419-
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.23.1 h1:plS0G97NVjO6RRJPHSw6vGpJ+NFfee7aQ0TuVV1giQc=
420-
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.23.1/go.mod h1:5IRU6OO/+WCAVKZquwbxYf75jkUQT2ggttptZpcfmB0=
421407
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.23.2 h1:RQhRsMv7qcIQXI6KO5MytJYXVo3cSl4EJQmGI9FTdcU=
422408
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.23.2/go.mod h1:M2gcYyhXfaxkXahv2lQAff/RpGWE+7g0Ni+bTAAffXw=
423-
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.20.4 h1:faP794ma9ZY/24XAV8cm/lkQzRFSg3zBHCi5Nc8+CaM=
424-
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.20.4/go.mod h1:ybjChNDMfPtc7f8ILTb+ov6CpE/KtAae9fD8HHtYfzU=
425409
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.20.5 h1:ecQoqO5lGAhkqUa0OrZOs/ArydmKUXKz0Y2i8OVuPKc=
426410
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.20.5/go.mod h1:huercjBWqY2xTjzk/oxYfClRmtrjmYOda06piALZMCo=
427-
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.16.0 h1:MDlKqnIXFvHNLQbC7Wapofxigbg52Z8LpqFXAkKz754=
428-
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.16.0/go.mod h1:BtxxBo47isKtD23evzMhPTl+Whv7nCZ2V586DPUGZNc=
429411
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.16.1 h1:1dALZzDXZmZIgVX6N+oOSwSBH+BBWC1RCjUCvgQUQfs=
430412
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.16.1/go.mod h1:ddq0bwfwHQ0QxV6vU9arKg31qfmg8fjcYZt/ef01AcI=
431-
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.5 h1:aPK8IBVKeozo/pNGshT8xOJ2V3Y7ykOM49QcY0vhUSM=
432-
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.5/go.mod h1:ErjxucZaraVbYm66xxub00qmGBw7md2RFqy6624KbR8=
433413
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.7 h1:Jj6PiTa/cZfoa0iPFC4gPqwlr9BDLXL4WjAP+bebugw=
434414
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.7/go.mod h1:21u3hbkLTcsbjH5fyXQc8NKJrq0zsuUH0Aan00i85Hk=
435-
github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.15.4 h1:sMzxamrhhkUrL/Ok7OyeJbJR46u4dbXOci0ucsOQu1c=
436-
github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.15.4/go.mod h1:aer8ZSLSiO1d24Xv5MouJ4TdYop2u2tyxRPUYpvueGU=
437415
github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.15.5 h1:3Vese5V6X3Mt2oR4nAPGWGgyRcRnfAF6wy/kibXfQAk=
438416
github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.15.5/go.mod h1:k1bjVVQIn8G0YNH4ixxferJWyzFClFa2DidiMwpT3ik=
439-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.40.0 h1:QZHnwlJbt+M6/h7yzw081WkOk5cSmt8tJNXUnLpT1SY=
440-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.40.0/go.mod h1:KOy1O7Fc2+GRgsbn/Kjr15vYDVXMEQALBaPRia3twSY=
441-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.43.0 h1:NQpaDnvBVf4S8wTn9qc9/6tI3QBM9ITV1yFdfKajACU=
442-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.43.0/go.mod h1:KOy1O7Fc2+GRgsbn/Kjr15vYDVXMEQALBaPRia3twSY=
443-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.44.0 h1:ZuDiiY51GwGqYZ3NVMhRxqyolRy2JN4RGE1ERZ+GdyU=
444-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.44.0/go.mod h1:b2SVOmsP7A9VlTpfkJAVbU3d+TQfD76x9IUNbvynAbM=
445-
github.com/aws/aws-sdk-go-v2/service/eks v1.20.7 h1:UfxQSaxTTffOmQPoVMvsxuBw+oSV2QN3S9ZjyT5Xwek=
446-
github.com/aws/aws-sdk-go-v2/service/eks v1.20.7/go.mod h1:kj0ENB75cMvtcyxOmnvu3FbNwZWAIoCzOaISXzsGHIE=
417+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.45.0 h1:LxCklDNKY9bynYMaDetR/zAh9kbkdSkrEzfq4L4Lhdw=
418+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.45.0/go.mod h1:b2SVOmsP7A9VlTpfkJAVbU3d+TQfD76x9IUNbvynAbM=
419+
github.com/aws/aws-sdk-go-v2/service/eks v1.21.1 h1:CYRfUZNq2krWxqLE1ntvy40uVT/I6X1PniNHrE/W3ps=
420+
github.com/aws/aws-sdk-go-v2/service/eks v1.21.1/go.mod h1:kLodo8S0UEoVEd3mHTKtGnAhCT2uvCUM/Jjfr3og1yI=
447421
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.14.4 h1:vpGKxT9NBdQuXBUYfzKWV93NIU0lGg9rjtrVoQ/Iols=
448422
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.14.4/go.mod h1:NyDTeVqx/5iD/x2jXOjLdiof6JJ7hjVcImTGoZ1hBPk=
449423
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.4 h1:ZBYifRGfN3dOKzvk0+XJiUKOFzqoJddYqCVsN5quCh4=
450424
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.4/go.mod h1:9wKR88sRRyxrUAw5iVSDTfcCz90BLEFcAiyzP4v39uY=
451-
github.com/aws/aws-sdk-go-v2/service/iam v1.18.4 h1:E41guA79mjEbwJdh0zXz1d8+Zt4zxRr+b1ipiVbKXzs=
452-
github.com/aws/aws-sdk-go-v2/service/iam v1.18.4/go.mod h1:FpNvAfCZyIQ3qeNJUOw4CShKvdizHblXqAvSk0qmyL4=
453425
github.com/aws/aws-sdk-go-v2/service/iam v1.18.5 h1:NUT8HreIoLAfPAP7eEYN8jwidvY+4TjZ86xqS/iGDQI=
454426
github.com/aws/aws-sdk-go-v2/service/iam v1.18.5/go.mod h1:0YrrF3m5qWi/EItvW0wmZCydlgr8lzJ882P2mXoHo7U=
455427
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0/go.mod h1:R1KK+vY8AfalhG1AOu5e35pOD2SdoPKQCFLTvnxiohk=
456-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4 h1:b16QW0XWl0jWjLABFc1A+uh145Oqv+xDcObNk0iQgUk=
457428
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4/go.mod h1:uKkN7qmSIsNJVyMtxNQoCEYMvFEXbOg9fwCJPdfp2u8=
458429
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.5 h1:gRW1ZisKc93EWEORNJRvy/ZydF3o6xLSveJHdi1Oa0U=
459430
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.5/go.mod h1:ZbkttHXaVn3bBo/wpJbQGiiIWR90eTBUVBrEHUEQlho=
460431
github.com/aws/aws-sdk-go-v2/service/kms v1.5.0/go.mod h1:w7JuP9Oq1IKMFQPkNe3V6s9rOssXzOVEMNEqK1L1bao=
461-
github.com/aws/aws-sdk-go-v2/service/kms v1.11.1 h1:4WsetDYlA3aUYTuQQU76VMi3xH4D/CSbrx9aVqEUwHE=
462-
github.com/aws/aws-sdk-go-v2/service/kms v1.11.1/go.mod h1:e33KkPXn1iEeHHHflmS+Jxx09wbYw2uzAO3sQE1smg0=
463-
github.com/aws/aws-sdk-go-v2/service/kms v1.17.1 h1:8T0uFw+t/+uP0ukowdDQ2fxhh5jh07bM4WI8/KRGtv8=
464-
github.com/aws/aws-sdk-go-v2/service/kms v1.17.1/go.mod h1:0B58/BshOoe7rhRRRtHWVGcXqlJn7gQZmNLyKucFhCU=
465432
github.com/aws/aws-sdk-go-v2/service/kms v1.17.2 h1:g5sAKPf2OyQf6Qk/HmisWJvAbp3+vjfX1d2wLPUXo1Y=
466433
github.com/aws/aws-sdk-go-v2/service/kms v1.17.2/go.mod h1:O99LMSMb/hDB0sQ3OI3SV1rMzwVH/g4608bps5k5dr8=
467434
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.6.0/go.mod h1:B+7C5UKdVq1ylkI/A6O8wcurFtaux0R1njePNPtKwoA=
@@ -472,12 +439,9 @@ github.com/aws/aws-sdk-go-v2/service/sso v1.4.0/go.mod h1:+1fpWnL96DL23aXPpMGbsm
472439
github.com/aws/aws-sdk-go-v2/service/sso v1.11.4 h1:Uw5wBybFQ1UeA9ts0Y07gbv0ncZnIAyw858tDW0NP2o=
473440
github.com/aws/aws-sdk-go-v2/service/sso v1.11.4/go.mod h1:cPDwJwsP4Kff9mldCXAmddjJL6JGQqtA3Mzer2zyr88=
474441
github.com/aws/aws-sdk-go-v2/service/sts v1.7.0/go.mod h1:0qcSMCyASQPN2sk/1KQLQ2Fh6yq8wm0HSDAimPhzCoM=
475-
github.com/aws/aws-sdk-go-v2/service/sts v1.16.4 h1:+xtV90n3abQmgzk1pS++FdxZTrPEDgQng6e4/56WR2A=
476-
github.com/aws/aws-sdk-go-v2/service/sts v1.16.4/go.mod h1:lfSYenAXtavyX2A1LsViglqlG9eEFYxNryTZS5rn3QE=
477442
github.com/aws/aws-sdk-go-v2/service/sts v1.16.5 h1:aEMP+STBsvCY1U/yL4pAqUrU4oFli46AdbCXvVbTiHI=
478443
github.com/aws/aws-sdk-go-v2/service/sts v1.16.5/go.mod h1:lfSYenAXtavyX2A1LsViglqlG9eEFYxNryTZS5rn3QE=
479444
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
480-
github.com/aws/smithy-go v1.9.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
481445
github.com/aws/smithy-go v1.11.2 h1:eG/N+CcUMAvsdffgMvjMKwfyDzIkjM6pfxMJ8Mzc6mE=
482446
github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM=
483447
github.com/awslabs/goformation/v4 v4.15.5 h1:q3lm7oj4yqqJ76ZcaFThUACT3MQLD6yBcJRKuZ6g87w=

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

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"fmt"
55

66
. "github.com/onsi/ginkgo/v2"
7-
87
. "github.com/onsi/gomega"
98

109
api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5"
@@ -16,17 +15,14 @@ var _ = Describe("GPU instance support", func() {
1615
type gpuInstanceEntry struct {
1716
gpuInstanceType string
1817
amiFamily string
19-
customErr string
2018

2119
expectUnsupportedErr bool
2220
}
2321

2422
assertValidationError := func(e gpuInstanceEntry, err error) {
2523
if e.expectUnsupportedErr {
2624
Expect(err).To(HaveOccurred())
27-
if e.customErr != "" {
28-
Expect(err).To(MatchError(e.customErr))
29-
} else if instanceutils.IsNvidiaInstanceType(e.gpuInstanceType) {
25+
if instanceutils.IsNvidiaInstanceType(e.gpuInstanceType) {
3026
Expect(err).To(MatchError(ContainSubstring(fmt.Sprintf("GPU instance types are not supported for %s", e.amiFamily))))
3127
} else {
3228
Expect(err).To(MatchError(ContainSubstring(fmt.Sprintf("Inferentia instance types are not supported for %s", e.amiFamily))))
@@ -51,12 +47,6 @@ var _ = Describe("GPU instance support", func() {
5147
gpuInstanceType: "g5.12xlarge",
5248
amiFamily: api.NodeImageFamilyAmazonLinux2,
5349
}),
54-
Entry("Bottlerocket", gpuInstanceEntry{
55-
amiFamily: api.NodeImageFamilyBottlerocket,
56-
gpuInstanceType: "g4dn.xlarge",
57-
expectUnsupportedErr: true,
58-
customErr: fmt.Sprintf("NVIDIA GPU instance types are not supported for managed nodegroups with AMIFamily %s", api.NodeImageFamilyBottlerocket),
59-
}),
6050
Entry("Ubuntu2004", gpuInstanceEntry{
6151
amiFamily: api.NodeImageFamilyUbuntu2004,
6252
gpuInstanceType: "g4dn.xlarge",
@@ -95,11 +85,15 @@ var _ = Describe("GPU instance support", func() {
9585
amiFamily: api.NodeImageFamilyBottlerocket,
9686
gpuInstanceType: "g4dn.xlarge",
9787
}),
98-
Entry("Bottlerocket", gpuInstanceEntry{
88+
Entry("Bottlerocket infra", gpuInstanceEntry{
9989
amiFamily: api.NodeImageFamilyBottlerocket,
10090
gpuInstanceType: "inf1.xlarge",
10191
expectUnsupportedErr: true,
10292
}),
93+
Entry("Bottlerocket nvidia", gpuInstanceEntry{
94+
amiFamily: api.NodeImageFamilyBottlerocket,
95+
gpuInstanceType: "g4dn.xlarge",
96+
}),
10397
Entry("Ubuntu2004", gpuInstanceEntry{
10498
amiFamily: api.NodeImageFamilyUbuntu2004,
10599
gpuInstanceType: "g4dn.xlarge",
@@ -126,4 +120,15 @@ var _ = Describe("GPU instance support", func() {
126120
expectUnsupportedErr: true,
127121
}),
128122
)
123+
Describe("ARM GPU", func() {
124+
When("ARM GPU instance is request for unmanaged nodegroups", func() {
125+
It("errors", func() {
126+
ng := api.NewNodeGroup()
127+
ng.InstanceType = "g5g.xlarge"
128+
ng.AMIFamily = api.NodeImageFamilyBottlerocket
129+
err := api.ValidateNodeGroup(0, ng)
130+
Expect(err).To(MatchError(ContainSubstring("ARM GPU instance types are not supported for unmanaged nodegroups with AMIFamily Bottlerocket")))
131+
})
132+
})
133+
})
129134
})

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -887,11 +887,6 @@ func ValidateManagedNodeGroup(index int, ng *ManagedNodeGroup) error {
887887
return err
888888
}
889889

890-
if instanceutils.IsNvidiaInstanceType(SelectInstanceType(ng)) && ng.AMIFamily == NodeImageFamilyBottlerocket {
891-
logger.Info("Bottlerocket GPU support is for unmanaged nodegroups only. If you're using CLI flags pass --managed=false")
892-
return errors.Errorf("NVIDIA GPU instance types are not supported for managed nodegroups with AMIFamily %s", ng.AMIFamily)
893-
}
894-
895890
if ng.IAM != nil {
896891
if err := validateNodeGroupIAM(ng.IAM, ng.IAM.InstanceRoleARN, "instanceRoleARN", path); err != nil {
897892
return err

pkg/cfn/builder/managed_nodegroup.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@ import (
44
"context"
55
"fmt"
66

7-
ekstypes "github.com/aws/aws-sdk-go-v2/service/eks/types"
8-
97
ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
10-
8+
ekstypes "github.com/aws/aws-sdk-go-v2/service/eks/types"
119
"github.com/pkg/errors"
1210
gfnec2 "github.com/weaveworks/goformation/v4/cloudformation/ec2"
1311
gfneks "github.com/weaveworks/goformation/v4/cloudformation/eks"
@@ -266,17 +264,20 @@ func validateLaunchTemplate(launchTemplateData *ec2types.ResponseLaunchTemplateD
266264
func getAMIType(ng *api.ManagedNodeGroup, instanceType string) ekstypes.AMITypes {
267265
amiTypeMapping := map[string]struct {
268266
X86x64 ekstypes.AMITypes
269-
GPU ekstypes.AMITypes
267+
X86GPU ekstypes.AMITypes
270268
ARM ekstypes.AMITypes
269+
ARMGPU ekstypes.AMITypes
271270
}{
272271
api.NodeImageFamilyAmazonLinux2: {
273272
X86x64: ekstypes.AMITypesAl2X8664,
274-
GPU: ekstypes.AMITypesAl2X8664Gpu,
273+
X86GPU: ekstypes.AMITypesAl2X8664Gpu,
275274
ARM: ekstypes.AMITypesAl2Arm64,
276275
},
277276
api.NodeImageFamilyBottlerocket: {
278277
X86x64: ekstypes.AMITypesBottlerocketX8664,
278+
X86GPU: ekstypes.AMITypesBottlerocketX8664Nvidia,
279279
ARM: ekstypes.AMITypesBottlerocketArm64,
280+
ARMGPU: ekstypes.AMITypesBottlerocketArm64Nvidia,
280281
},
281282
}
282283

@@ -286,8 +287,11 @@ func getAMIType(ng *api.ManagedNodeGroup, instanceType string) ekstypes.AMITypes
286287
}
287288

288289
switch {
290+
291+
case instanceutils.IsGPUInstanceType(instanceType) && instanceutils.IsARMInstanceType(instanceType):
292+
return amiType.ARMGPU
289293
case instanceutils.IsGPUInstanceType(instanceType):
290-
return amiType.GPU
294+
return amiType.X86GPU
291295
case instanceutils.IsARMInstanceType(instanceType):
292296
return amiType.ARM
293297
default:

pkg/cfn/builder/managed_nodegroup_ami_type_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,27 @@ var _ = DescribeTable("Managed Nodegroup AMI type", func(e amiTypeEntry) {
135135
},
136136
expectedAMIType: "BOTTLEROCKET_ARM_64",
137137
}),
138+
Entry("Bottlerocket ARM GPU instance type", amiTypeEntry{
139+
nodeGroup: &api.ManagedNodeGroup{
140+
NodeGroupBase: &api.NodeGroupBase{
141+
Name: "test",
142+
AMIFamily: api.NodeImageFamilyBottlerocket,
143+
InstanceType: "g5g.xlarge",
144+
},
145+
},
146+
expectedAMIType: "BOTTLEROCKET_ARM_64_NVIDIA",
147+
}),
148+
149+
Entry("Bottlerocket x86 Nvidia GPU instance type", amiTypeEntry{
150+
nodeGroup: &api.ManagedNodeGroup{
151+
NodeGroupBase: &api.NodeGroupBase{
152+
Name: "test",
153+
AMIFamily: api.NodeImageFamilyBottlerocket,
154+
InstanceType: "g4dn.xlarge",
155+
},
156+
},
157+
expectedAMIType: "BOTTLEROCKET_x86_64_NVIDIA",
158+
}),
138159

139160
Entry("non-native Ubuntu", amiTypeEntry{
140161
nodeGroup: &api.ManagedNodeGroup{

0 commit comments

Comments
 (0)