Skip to content

Commit

Permalink
feat: add support for Bottlerocket FIPS AMIs
Browse files Browse the repository at this point in the history
  • Loading branch information
aufomin committed Feb 21, 2025
1 parent 4201bc9 commit 2915998
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 2 deletions.
2 changes: 2 additions & 0 deletions pkg/controllers/nodeclass/ami_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,8 @@ var _ = Describe("NodeClass AMI Status Controller", func() {
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s/arm64/latest/image_id", k8sVersion): "ami-arm64-standard",
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-nvidia/x86_64/latest/image_id", k8sVersion): "ami-amd64-nvidia",
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-nvidia/arm64/latest/image_id", k8sVersion): "ami-arm64-nvidia",
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-fips/x86_64/latest/image_id", k8sVersion): "ami-amd64-standard",
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-fips/arm64/latest/image_id", k8sVersion): "ami-arm64-standard",
}
nodeClass.Spec.AMISelectorTerms = []v1.AMISelectorTerm{{Alias: "bottlerocket@latest"}}
ExpectApplied(ctx, env.Client, nodeClass)
Expand Down
2 changes: 2 additions & 0 deletions pkg/providers/amifamily/bottlerocket.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ func (b Bottlerocket) DescribeImageQuery(ctx context.Context, ssmProvider ssm.Pr
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s/arm64/%s/image_id", k8sVersion, trimmedAMIVersion): {VariantStandard},
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-nvidia/x86_64/%s/image_id", k8sVersion, trimmedAMIVersion): {VariantNvidia},
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-nvidia/arm64/%s/image_id", k8sVersion, trimmedAMIVersion): {VariantNvidia},
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-fips/x86_64/%s/image_id", k8sVersion, trimmedAMIVersion): {VariantFips},
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-fips/arm64/%s/image_id", k8sVersion, trimmedAMIVersion): {VariantFips},
} {
imageID, err := ssmProvider.Get(ctx, ssm.Parameter{
Name: path,
Expand Down
2 changes: 2 additions & 0 deletions pkg/providers/amifamily/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,8 @@ var _ = Describe("AMIProvider", func() {
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-nvidia/x86_64/latest/image_id", version): amd64NvidiaAMI,
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s/arm64/latest/image_id", version): arm64AMI,
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-nvidia/arm64/latest/image_id", version): arm64NvidiaAMI,
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-fips/x86_64/latest/image_id", version): amd64AMI,
fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s-fips/arm64/latest/image_id", version): arm64AMI,
}
amis, err := awsEnv.AMIProvider.List(ctx, nodeClass)
Expect(err).ToNot(HaveOccurred())
Expand Down
5 changes: 3 additions & 2 deletions pkg/providers/amifamily/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,13 @@ var (
VariantStandard Variant = "standard"
VariantNvidia Variant = "nvidia"
VariantNeuron Variant = "neuron"
VariantFips Variant = "fips"
maxTime time.Time = time.Unix(math.MaxInt64, 0)
minTime time.Time = time.Unix(math.MinInt64, 0)
)

func NewVariant(v string) (Variant, error) {
var wellKnownVariants = sets.New(VariantStandard, VariantNvidia, VariantNeuron)
var wellKnownVariants = sets.New(VariantStandard, VariantNvidia, VariantNeuron, VariantFips)
variant := Variant(v)
if !wellKnownVariants.Has(variant) {
return variant, fmt.Errorf("%q is not a well-known variant", variant)
Expand All @@ -83,7 +84,7 @@ func NewVariant(v string) (Variant, error) {

func (v Variant) Requirements() scheduling.Requirements {
switch v {
case VariantStandard:
case VariantStandard, VariantFips:
return scheduling.NewRequirements(
scheduling.NewRequirement(v1.LabelInstanceAcceleratorCount, corev1.NodeSelectorOpDoesNotExist),
scheduling.NewRequirement(v1.LabelInstanceGPUCount, corev1.NodeSelectorOpDoesNotExist),
Expand Down

0 comments on commit 2915998

Please sign in to comment.