Skip to content

Commit d66d0b7

Browse files
authored
Merge pull request #5874 from jhjaggars/feat/nested-virtualization
✨ add NestedVirtualization to CPUOptions in v1beta2 API
2 parents c08a0f2 + e227373 commit d66d0b7

10 files changed

+253
-21
lines changed

api/v1beta2/types.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,17 @@ const (
615615
AWSConfidentialComputePolicySEVSNP AWSConfidentialComputePolicy = "AMDEncryptedVirtualizationNestedPaging"
616616
)
617617

618+
// NestedVirtualizationPolicy represents the nested virtualization configuration for the instance.
619+
// +kubebuilder:validation:Enum=enabled;disabled
620+
type NestedVirtualizationPolicy string
621+
622+
const (
623+
// NestedVirtualizationPolicyEnabled enables nested virtualization for the instance.
624+
NestedVirtualizationPolicyEnabled NestedVirtualizationPolicy = "enabled"
625+
// NestedVirtualizationPolicyDisabled disables nested virtualization for the instance.
626+
NestedVirtualizationPolicyDisabled NestedVirtualizationPolicy = "disabled"
627+
)
628+
618629
// CPUOptions defines CPU-related settings for the instance, including the confidential computing policy.
619630
// +kubebuilder:validation:MinProperties=1
620631
type CPUOptions struct {
@@ -632,4 +643,10 @@ type CPUOptions struct {
632643
// which is subject to change without notice. The current default is Disabled.
633644
// +optional
634645
ConfidentialCompute AWSConfidentialComputePolicy `json:"confidentialCompute,omitempty"`
646+
647+
// NestedVirtualization specifies whether to enable nested virtualization on the instance.
648+
// Nested virtualization is supported on C8i, M8i, and R8i instance types.
649+
// Valid values are: enabled, disabled
650+
// +optional
651+
NestedVirtualization NestedVirtualizationPolicy `json:"nestedVirtualization,omitempty"`
635652
}

config/crd/bases/controlplane.cluster.x-k8s.io_awsmanagedcontrolplanes.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1265,6 +1265,15 @@ spec:
12651265
- Disabled
12661266
- AMDEncryptedVirtualizationNestedPaging
12671267
type: string
1268+
nestedVirtualization:
1269+
description: |-
1270+
NestedVirtualization specifies whether to enable nested virtualization on the instance.
1271+
Nested virtualization is supported on C8i, M8i, and R8i instance types.
1272+
Valid values are: enabled, disabled
1273+
enum:
1274+
- enabled
1275+
- disabled
1276+
type: string
12681277
type: object
12691278
dynamicHostAllocation:
12701279
description: |-
@@ -3677,6 +3686,15 @@ spec:
36773686
- Disabled
36783687
- AMDEncryptedVirtualizationNestedPaging
36793688
type: string
3689+
nestedVirtualization:
3690+
description: |-
3691+
NestedVirtualization specifies whether to enable nested virtualization on the instance.
3692+
Nested virtualization is supported on C8i, M8i, and R8i instance types.
3693+
Valid values are: enabled, disabled
3694+
enum:
3695+
- enabled
3696+
- disabled
3697+
type: string
36803698
type: object
36813699
dynamicHostAllocation:
36823700
description: |-

config/crd/bases/infrastructure.cluster.x-k8s.io_awsclusters.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2286,6 +2286,15 @@ spec:
22862286
- Disabled
22872287
- AMDEncryptedVirtualizationNestedPaging
22882288
type: string
2289+
nestedVirtualization:
2290+
description: |-
2291+
NestedVirtualization specifies whether to enable nested virtualization on the instance.
2292+
Nested virtualization is supported on C8i, M8i, and R8i instance types.
2293+
Valid values are: enabled, disabled
2294+
enum:
2295+
- enabled
2296+
- disabled
2297+
type: string
22892298
type: object
22902299
dynamicHostAllocation:
22912300
description: |-

config/crd/bases/infrastructure.cluster.x-k8s.io_awsmachines.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,6 +731,15 @@ spec:
731731
- Disabled
732732
- AMDEncryptedVirtualizationNestedPaging
733733
type: string
734+
nestedVirtualization:
735+
description: |-
736+
NestedVirtualization specifies whether to enable nested virtualization on the instance.
737+
Nested virtualization is supported on C8i, M8i, and R8i instance types.
738+
Valid values are: enabled, disabled
739+
enum:
740+
- enabled
741+
- disabled
742+
type: string
734743
type: object
735744
dynamicHostAllocation:
736745
description: |-

config/crd/bases/infrastructure.cluster.x-k8s.io_awsmachinetemplates.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,15 @@ spec:
650650
- Disabled
651651
- AMDEncryptedVirtualizationNestedPaging
652652
type: string
653+
nestedVirtualization:
654+
description: |-
655+
NestedVirtualization specifies whether to enable nested virtualization on the instance.
656+
Nested virtualization is supported on C8i, M8i, and R8i instance types.
657+
Valid values are: enabled, disabled
658+
enum:
659+
- enabled
660+
- disabled
661+
type: string
653662
type: object
654663
dynamicHostAllocation:
655664
description: |-

go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ require (
1010
github.com/apparentlymart/go-cidr v1.1.0
1111
github.com/aws/amazon-vpc-cni-k8s v1.15.5
1212
github.com/aws/aws-lambda-go v1.41.0
13-
github.com/aws/aws-sdk-go-v2 v1.39.2
13+
github.com/aws/aws-sdk-go-v2 v1.41.1
1414
github.com/aws/aws-sdk-go-v2/config v1.31.12
1515
github.com/aws/aws-sdk-go-v2/credentials v1.18.16
1616
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.12
1717
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.52.4
1818
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.52.0
1919
github.com/aws/aws-sdk-go-v2/service/configservice v1.56.0
20-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.233.0
20+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.288.0
2121
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.36.0
2222
github.com/aws/aws-sdk-go-v2/service/efs v1.39.0
2323
github.com/aws/aws-sdk-go-v2/service/eks v1.64.0
@@ -29,7 +29,7 @@ require (
2929
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.28.6
3030
github.com/aws/aws-sdk-go-v2/service/ssm v1.59.1
3131
github.com/aws/aws-sdk-go-v2/service/sts v1.38.6
32-
github.com/aws/smithy-go v1.23.0
32+
github.com/aws/smithy-go v1.24.0
3333
github.com/awslabs/goformation/v4 v4.19.5
3434
github.com/blang/semver v3.5.1+incompatible
3535
github.com/coreos/ignition v0.35.0
@@ -108,15 +108,15 @@ require (
108108
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
109109
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 // indirect
110110
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9 // indirect
111-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9 // indirect
112-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9 // indirect
111+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect
112+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect
113113
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
114114
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.9 // indirect
115115
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.50.0
116116
github.com/aws/aws-sdk-go-v2/service/eventbridge v1.39.3
117-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 // indirect
117+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect
118118
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.0 // indirect
119-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9 // indirect
119+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect
120120
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9 // indirect
121121
github.com/aws/aws-sdk-go-v2/service/organizations v1.27.3 // indirect
122122
github.com/aws/aws-sdk-go-v2/service/servicequotas v1.21.4

go.sum

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ github.com/aws/amazon-vpc-cni-k8s v1.15.5 h1:/mqTXB4HoGYg4CiU4Gco9iEvZ+V/309Na4H
4747
github.com/aws/amazon-vpc-cni-k8s v1.15.5/go.mod h1:jV4wNtmgT2Ra1/oZU99DPOFsCUKnf0mYfIyzDyAUVAY=
4848
github.com/aws/aws-lambda-go v1.41.0 h1:l/5fyVb6Ud9uYd411xdHZzSf2n86TakxzpvIoz7l+3Y=
4949
github.com/aws/aws-lambda-go v1.41.0/go.mod h1:jwFe2KmMsHmffA1X2R09hH6lFzJQxzI8qK17ewzbQMM=
50-
github.com/aws/aws-sdk-go-v2 v1.39.2 h1:EJLg8IdbzgeD7xgvZ+I8M1e0fL0ptn/M47lianzth0I=
51-
github.com/aws/aws-sdk-go-v2 v1.39.2/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY=
50+
github.com/aws/aws-sdk-go-v2 v1.41.1 h1:ABlyEARCDLN034NhxlRUSZr4l71mh+T5KAeGh6cerhU=
51+
github.com/aws/aws-sdk-go-v2 v1.41.1/go.mod h1:MayyLB8y+buD9hZqkCW3kX1AKq07Y5pXxtgB+rRFhz0=
5252
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 h1:i8p8P4diljCr60PpJp6qZXNlgX4m2yQFpYk+9ZT+J4E=
5353
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1/go.mod h1:ddqbooRZYNoJ2dsTwOty16rM+/Aqmk/GOXrK8cg7V00=
5454
github.com/aws/aws-sdk-go-v2/config v1.31.12 h1:pYM1Qgy0dKZLHX2cXslNacbcEFMkDMl+Bcj5ROuS6p8=
@@ -59,10 +59,10 @@ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9 h1:Mv4Bc0mWmv6oDuSWTKnk+wg
5959
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9/go.mod h1:IKlKfRppK2a1y0gy1yH6zD+yX5uplJ6UuPlgd48dJiQ=
6060
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.12 h1:ofHawDLJTI6ytDIji+g4dXQ6u2idzTb04tDlN9AS614=
6161
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.12/go.mod h1:f5pL4iLDfbcxj1SZcdRdIokBB5eHbuYPS/Fs9DwUPRQ=
62-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9 h1:se2vOWGD3dWQUtfn4wEjRQJb1HK1XsNIt825gskZ970=
63-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9/go.mod h1:hijCGH2VfbZQxqCDN7bwz/4dzxV+hkyhjawAtdPWKZA=
64-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9 h1:6RBnKZLkJM4hQ+kN6E7yWFveOTg8NLPHAkqrs4ZPlTU=
65-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9/go.mod h1:V9rQKRmK7AWuEsOMnHzKj8WyrIir1yUJbZxDuZLFvXI=
62+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 h1:xOLELNKGp2vsiteLsvLPwxC+mYmO6OZ8PYgiuPJzF8U=
63+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17/go.mod h1:5M5CI3D12dNOtH3/mk6minaRwI2/37ifCURZISxA/IQ=
64+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 h1:WWLqlh79iO48yLkj1v3ISRNiv+3KdQoZ6JWyfcsyQik=
65+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17/go.mod h1:EhG22vHRrvF8oXSTYStZhJc1aUgKtnJe+aOiFEV90cM=
6666
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
6767
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
6868
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.9 h1:w9LnHqTq8MEdlnyhV4Bwfizd65lfNCNgdlNC6mM5paE=
@@ -75,8 +75,8 @@ github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.52.0 h1:Wgjh6Igu7HS57d8AjRIG0
7575
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.52.0/go.mod h1:TSIIBxkIwUawJ9JyiymBksYZYsvIv8GIF2DkrlcTc5o=
7676
github.com/aws/aws-sdk-go-v2/service/configservice v1.56.0 h1:BFDPvTQk/+BM9T8I6uHhtmur8uaroCXoJ0AI2kpNO1U=
7777
github.com/aws/aws-sdk-go-v2/service/configservice v1.56.0/go.mod h1:46dDCtKXik+9IWU9oEOKBWzfQnyqn7EsmPnFUT7zqQw=
78-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.233.0 h1:VxmOsv7MswuKQcSEIurxe4RK9tC6zYnosw9vBvv74lA=
79-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.233.0/go.mod h1:35jGWx7ECvCwTsApqicFYzZ7JFEnBc6oHUuOQ3xIS54=
78+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.288.0 h1:cRu1CgKDK0qYNJRZBWaktwGZ6fvcFiKZm1Huzesc47s=
79+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.288.0/go.mod h1:Uy+C+Sc58jozdoL1McQr8bDsEvNFx+/nBY+vpO1HVUY=
8080
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.36.0 h1:8GcatvIKYx5WkwjwY4H+K7egBHOddC3wwS6fIbpOUlQ=
8181
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.36.0/go.mod h1:yz4NeCWotlbHoT41Vc9NofCbKEyiNlKYZFT4SiqVQCY=
8282
github.com/aws/aws-sdk-go-v2/service/efs v1.39.0 h1:nxn7P1nAd7ThB1B0WASAKvjddJQcvLzaOo9iN4tp3ZU=
@@ -91,12 +91,12 @@ github.com/aws/aws-sdk-go-v2/service/eventbridge v1.39.3 h1:T6L7fsONflMeXuvsT8qZ
9191
github.com/aws/aws-sdk-go-v2/service/eventbridge v1.39.3/go.mod h1:sIrUII6Z+hAVAgcpmsc2e9HvEr++m/v8aBPT7s4ZYUk=
9292
github.com/aws/aws-sdk-go-v2/service/iam v1.32.0 h1:ZNlfPdw849gBo/lvLFbEEvpTJMij0LXqiNWZ+lIamlU=
9393
github.com/aws/aws-sdk-go-v2/service/iam v1.32.0/go.mod h1:aXWImQV0uTW35LM0A/T4wEg6R1/ReXUu4SM6/lUHYK0=
94-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM=
95-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8=
94+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 h1:0ryTNEdJbzUCEWkVXEXoqlXV72J5keC1GvILMOuD00E=
95+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4/go.mod h1:HQ4qwNZh32C3CBeO6iJLQlgtMzqeG17ziAA/3KDJFow=
9696
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.0 h1:X0FveUndcZ3lKbSpIC6rMYGRiQTcUVRNH6X4yYtIrlU=
9797
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.0/go.mod h1:IWjQYlqw4EX9jw2g3qnEPPWvCE6bS8fKzhMed1OK7c8=
98-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9 h1:5r34CgVOD4WZudeEKZ9/iKpiT6cM1JyEROpXjOcdWv8=
99-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9/go.mod h1:dB12CEbNWPbzO2uC6QSWHteqOg4JfBVJOojbAoAUb5I=
98+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 h1:RuNSMoozM8oXlgLG/n6WLaFGoea7/CddrCfIiSA+xdY=
99+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17/go.mod h1:F2xxQ9TZz5gDWsclCtPQscGpP0VUOc8RqgFM3vDENmU=
100100
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9 h1:wuZ5uW2uhJR63zwNlqWH2W4aL4ZjeJP3o92/W+odDY4=
101101
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.9/go.mod h1:/G58M2fGszCrOzvJUkDdY8O9kycodunH4VdT5oBAqls=
102102
github.com/aws/aws-sdk-go-v2/service/organizations v1.27.3 h1:CnPWlONzFX9/yO6IGuKg9sWUE8WhKztYRFbhmOHXjJI=
@@ -119,8 +119,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1 h1:5fm5RTONng73/QA73LhCNR7U
119119
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1/go.mod h1:xBEjWD13h+6nq+z4AkqSfSvqRKFgDIQeaMguAJndOWo=
120120
github.com/aws/aws-sdk-go-v2/service/sts v1.38.6 h1:p3jIvqYwUZgu/XYeI48bJxOhvm47hZb5HUQ0tn6Q9kA=
121121
github.com/aws/aws-sdk-go-v2/service/sts v1.38.6/go.mod h1:WtKK+ppze5yKPkZ0XwqIVWD4beCwv056ZbPQNoeHqM8=
122-
github.com/aws/smithy-go v1.23.0 h1:8n6I3gXzWJB2DxBDnfxgBaSX6oe0d/t10qGz7OKqMCE=
123-
github.com/aws/smithy-go v1.23.0/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
122+
github.com/aws/smithy-go v1.24.0 h1:LpilSUItNPFr1eY85RYgTIg5eIEPtvFbskaFcmmIUnk=
123+
github.com/aws/smithy-go v1.24.0/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
124124
github.com/awslabs/goformation/v4 v4.19.5 h1:Y+Tzh01tWg8gf//AgGKUamaja7Wx9NPiJf1FpZu4/iU=
125125
github.com/awslabs/goformation/v4 v4.19.5/go.mod h1:JoNpnVCBOUtEz9bFxc9sjy8uBUCLF5c4D1L7RhRTVM8=
126126
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=

pkg/cloud/endpoints/partitions.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/cloud/services/ec2/instances.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1404,6 +1404,14 @@ func getInstanceCPUOptionsRequest(cpuOptions infrav1.CPUOptions) *types.CpuOptio
14041404
default:
14051405
}
14061406

1407+
switch cpuOptions.NestedVirtualization {
1408+
case infrav1.NestedVirtualizationPolicyEnabled:
1409+
request.NestedVirtualization = types.NestedVirtualizationSpecificationEnabled
1410+
case infrav1.NestedVirtualizationPolicyDisabled:
1411+
request.NestedVirtualization = types.NestedVirtualizationSpecificationDisabled
1412+
default:
1413+
}
1414+
14071415
if *request == (types.CpuOptionsRequest{}) {
14081416
return nil
14091417
}

0 commit comments

Comments
 (0)