Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement v1 AMI selection #6450

Merged
merged 9 commits into from
Jul 16, 2024
Merged

Conversation

jmdeal
Copy link
Contributor

@jmdeal jmdeal commented Jul 3, 2024

Fixes #N/A

Description
This PR updates AMISelectorTerms for v1 by implementing the alias term.

EKS optimized AMIs can now be selected using the alias term. In addition to supporting the same behavior as v1beta1, users can also pin to a specific EKS optimized AMI by version.

Example:

apiVersion: karpenter.sh/v1
kind: EC2NodeClass
spec:
  amiSelectorTerms:
    - alias: "al2023@latest"
    # Or pin to a specific version
    # - alias: "al2023@v20240625"

The following aliases are supported:

  • al2023@<version>
  • al2@<version>
  • bottlerocket@<version>
  • windows2019@<version>
  • windows2022@<version>

Additionally, this test:

  • Drops support for the Ubuntu AMI family
  • Drops EC2NodeClass.Spec.AMIFamily

How was this change tested?

Does this change impact docs?

  • Yes, PR includes docs updates
  • Yes, issue opened: #
  • No

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@jmdeal jmdeal requested a review from a team as a code owner July 3, 2024 16:25
@jmdeal jmdeal requested a review from rschalo July 3, 2024 16:25
Copy link

netlify bot commented Jul 3, 2024

Deploy Preview for karpenter-docs-prod canceled.

Name Link
🔨 Latest commit 32f50c1
🔍 Latest deploy log https://app.netlify.com/sites/karpenter-docs-prod/deploys/669697a623ec010008890829

@jmdeal jmdeal changed the title feat: implement v1 AMI selection [WIP] feat: implement v1 AMI selection Jul 3, 2024
@jmdeal jmdeal force-pushed the feat/v1-ami-selection-rev2 branch 9 times, most recently from 5577ae0 to eada787 Compare July 3, 2024 23:59
Copy link
Contributor

@njtran njtran left a comment

Choose a reason for hiding this comment

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

Cool to see progress on this! Good work!

pkg/providers/amifamily/al2.go Show resolved Hide resolved
pkg/providers/amifamily/al2.go Outdated Show resolved Hide resolved
pkg/providers/amifamily/al2.go Outdated Show resolved Hide resolved
pkg/providers/amifamily/al2.go Outdated Show resolved Hide resolved
pkg/providers/amifamily/al2.go Show resolved Hide resolved
pkg/providers/amifamily/suite_test.go Outdated Show resolved Hide resolved
pkg/providers/amifamily/types.go Show resolved Hide resolved
pkg/providers/ssm/provider.go Show resolved Hide resolved
pkg/test/nodeclass.go Outdated Show resolved Hide resolved
test/suites/scheduling/suite_test.go Outdated Show resolved Hide resolved
@jmdeal jmdeal force-pushed the feat/v1-ami-selection-rev2 branch from eada787 to 0a647fc Compare July 9, 2024 00:21
Copy link
Contributor

@njtran njtran left a comment

Choose a reason for hiding this comment

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

checkpointing

pkg/apis/crds/karpenter.k8s.aws_ec2nodeclasses.yaml Outdated Show resolved Hide resolved
pkg/apis/crds/karpenter.k8s.aws_ec2nodeclasses.yaml Outdated Show resolved Hide resolved
pkg/apis/crds/karpenter.k8s.aws_ec2nodeclasses.yaml Outdated Show resolved Hide resolved
pkg/apis/v1/ec2nodeclass_validation.go Outdated Show resolved Hide resolved
pkg/apis/v1/ec2nodeclass_validation.go Outdated Show resolved Hide resolved
pkg/fake/ssmapi.go Show resolved Hide resolved
pkg/providers/amifamily/al2.go Outdated Show resolved Hide resolved
pkg/providers/amifamily/al2.go Outdated Show resolved Hide resolved
pkg/providers/amifamily/ami.go Outdated Show resolved Hide resolved
pkg/providers/amifamily/ami.go Show resolved Hide resolved
@jmdeal jmdeal force-pushed the feat/v1-ami-selection-rev2 branch 3 times, most recently from 02ba685 to 339106f Compare July 15, 2024 18:35
@coveralls
Copy link

coveralls commented Jul 15, 2024

Pull Request Test Coverage Report for Build 9960136463

Details

  • 385 of 454 (84.8%) changed or added relevant lines in 18 files are covered.
  • 47 unchanged lines in 8 files lost coverage.
  • Overall coverage decreased (-0.9%) to 79.099%

Changes Missing Coverage Covered Lines Changed/Added Lines %
pkg/providers/amifamily/custom.go 0 2 0.0%
pkg/controllers/nodeclass/status/readiness.go 3 6 50.0%
pkg/operator/operator.go 0 3 0.0%
pkg/providers/amifamily/types.go 39 42 92.86%
pkg/providers/amifamily/bottlerocket.go 27 31 87.1%
pkg/providers/ssm/provider.go 23 27 85.19%
pkg/apis/v1/ec2nodeclass.go 27 32 84.38%
pkg/providers/amifamily/windows.go 26 32 81.25%
pkg/providers/amifamily/ami.go 74 81 91.36%
pkg/fake/ssmapi.go 64 72 88.89%
Files with Coverage Reduction New Missed Lines %
pkg/providers/amifamily/bottlerocket.go 1 92.86%
pkg/providers/amifamily/windows.go 1 89.23%
pkg/operator/operator.go 1 9.7%
pkg/providers/amifamily/al2.go 1 82.09%
pkg/providers/amifamily/custom.go 1 66.67%
pkg/providers/amifamily/al2023.go 1 81.58%
pkg/providers/amifamily/ami.go 3 92.37%
pkg/providers/amifamily/ubuntu.go 38 0.0%
Totals Coverage Status
Change from base Build 9949603547: -0.9%
Covered Lines: 5934
Relevant Lines: 7502

💛 - Coveralls

Copy link
Contributor Author

@jmdeal jmdeal left a comment

Choose a reason for hiding this comment

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

/karpenter snapshot

Copy link
Contributor

Snapshot successfully published to oci://021119463062.dkr.ecr.us-east-1.amazonaws.com/karpenter/snapshot/karpenter:0-339106fc25f98eb51b90da2631ba3773541ce4cd.
To install you must login to the ECR repo with an AWS account:

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 021119463062.dkr.ecr.us-east-1.amazonaws.com

helm upgrade --install karpenter oci://021119463062.dkr.ecr.us-east-1.amazonaws.com/karpenter/snapshot/karpenter --version "0-339106fc25f98eb51b90da2631ba3773541ce4cd" --namespace "kube-system" --create-namespace \
  --set "settings.clusterName=${CLUSTER_NAME}" \
  --set "settings.interruptionQueue=${CLUSTER_NAME}" \
  --set controller.resources.requests.cpu=1 \
  --set controller.resources.requests.memory=1Gi \
  --set controller.resources.limits.cpu=1 \
  --set controller.resources.limits.memory=1Gi \
  --wait

Copy link
Contributor

@engedaam engedaam left a comment

Choose a reason for hiding this comment

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

Nice work! just a few comments on the conversion webhooks

pkg/apis/v1/ec2nodeclass.go Show resolved Hide resolved
pkg/apis/v1beta1/labels.go Outdated Show resolved Hide resolved
pkg/providers/version/version.go Show resolved Hide resolved
pkg/apis/v1/ec2nodeclass_conversion.go Outdated Show resolved Hide resolved
pkg/apis/apis.go Outdated Show resolved Hide resolved
pkg/apis/crds/karpenter.k8s.aws_ec2nodeclasses.yaml Outdated Show resolved Hide resolved
pkg/apis/crds/karpenter.k8s.aws_ec2nodeclasses.yaml Outdated Show resolved Hide resolved
pkg/apis/v1/ec2nodeclass_conversion_test.go Outdated Show resolved Hide resolved
pkg/apis/v1/labels.go Show resolved Hide resolved
pkg/fake/ssmapi.go Outdated Show resolved Hide resolved
pkg/providers/amifamily/al2.go Outdated Show resolved Hide resolved
pkg/providers/amifamily/types.go Show resolved Hide resolved
test/suites/drift/suite_test.go Outdated Show resolved Hide resolved
@jmdeal jmdeal force-pushed the feat/v1-ami-selection-rev2 branch 3 times, most recently from 1a04848 to 162c5a4 Compare July 16, 2024 01:59
@jmdeal jmdeal force-pushed the feat/v1-ami-selection-rev2 branch from 162c5a4 to 66c228d Compare July 16, 2024 02:05
 Please enter the commit message for your changes. Lines starting
@jmdeal jmdeal force-pushed the feat/v1-ami-selection-rev2 branch from 66c228d to 5bd17b1 Compare July 16, 2024 02:13
Copy link
Contributor Author

@jmdeal jmdeal left a comment

Choose a reason for hiding this comment

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

/karpenter snapshot

Copy link
Contributor

Snapshot successfully published to oci://021119463062.dkr.ecr.us-east-1.amazonaws.com/karpenter/snapshot/karpenter:0-5bd17b1a9fea3b1db78289c38315f6a2cc99ea89.
To install you must login to the ECR repo with an AWS account:

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 021119463062.dkr.ecr.us-east-1.amazonaws.com

helm upgrade --install karpenter oci://021119463062.dkr.ecr.us-east-1.amazonaws.com/karpenter/snapshot/karpenter --version "0-5bd17b1a9fea3b1db78289c38315f6a2cc99ea89" --namespace "kube-system" --create-namespace \
  --set "settings.clusterName=${CLUSTER_NAME}" \
  --set "settings.interruptionQueue=${CLUSTER_NAME}" \
  --set controller.resources.requests.cpu=1 \
  --set controller.resources.requests.memory=1Gi \
  --set controller.resources.limits.cpu=1 \
  --set controller.resources.limits.memory=1Gi \
  --wait

@jmdeal jmdeal force-pushed the feat/v1-ami-selection-rev2 branch from b681659 to 8de360c Compare July 16, 2024 07:06
@jmdeal jmdeal changed the title [WIP] feat: implement v1 AMI selection feat: implement v1 AMI selection Jul 16, 2024
Copy link
Contributor Author

@jmdeal jmdeal left a comment

Choose a reason for hiding this comment

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

/karpenter snapshot

Copy link
Contributor

Snapshot successfully published to oci://021119463062.dkr.ecr.us-east-1.amazonaws.com/karpenter/snapshot/karpenter:0-8de360cbe040c010cdc93dab8762f882c9588229.
To install you must login to the ECR repo with an AWS account:

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 021119463062.dkr.ecr.us-east-1.amazonaws.com

helm upgrade --install karpenter oci://021119463062.dkr.ecr.us-east-1.amazonaws.com/karpenter/snapshot/karpenter --version "0-8de360cbe040c010cdc93dab8762f882c9588229" --namespace "kube-system" --create-namespace \
  --set "settings.clusterName=${CLUSTER_NAME}" \
  --set "settings.interruptionQueue=${CLUSTER_NAME}" \
  --set controller.resources.requests.cpu=1 \
  --set controller.resources.requests.memory=1Gi \
  --set controller.resources.limits.cpu=1 \
  --set controller.resources.limits.memory=1Gi \
  --wait

@jmdeal jmdeal force-pushed the feat/v1-ami-selection-rev2 branch from 8de360c to 0d1d4c1 Compare July 16, 2024 15:46
njtran
njtran previously approved these changes Jul 16, 2024
Copy link
Contributor

@njtran njtran left a comment

Choose a reason for hiding this comment

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

LGTM! Nice work!!

@jmdeal jmdeal enabled auto-merge (squash) July 16, 2024 15:49
@jmdeal jmdeal merged commit 3ea95c4 into aws:main Jul 16, 2024
18 checks passed
@jmdeal jmdeal deleted the feat/v1-ami-selection-rev2 branch August 14, 2024 22:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants