Skip to content

Commit 0e9cb0c

Browse files
committed
OCPBUGS-66244: fix default image for confidential VMs
The installer still creates an image gallery for confidfential VMs, and we can tell its a confidential VM from the machine provider spec, so this updates the default to point to an installer-created gallery rather than the marketplace image.
1 parent 1e243fb commit 0e9cb0c

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

pkg/webhooks/machine_webhook.go

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,22 @@ var (
6565
defaultAzureNetworkResourceGroup = func(clusterID string) string {
6666
return fmt.Sprintf("%s-rg", clusterID)
6767
}
68-
defaultAzureImage = func() machinev1beta1.Image {
69-
if arch == ARM64 {
68+
defaultAzureGalleryImage = func(clusterID string) machinev1beta1.Image {
69+
// image gallery names cannot have dashes
70+
galleryName := strings.Replace(clusterID, "-", "_", -1)
71+
imageName := fmt.Sprintf("%s-gen2", clusterID) // Confidential VMs are gen2 only
72+
imgID := fmt.Sprintf("/resourceGroups/%s/providers/Microsoft.Compute/galleries/gallery_%s/images/%s/versions/%s", clusterID+"-rg", galleryName, imageName, azureRHCOSVersion)
73+
return machinev1beta1.Image{ResourceID: imgID}
74+
}
75+
defaultAzureImage = func(securityProfile *machinev1beta1.SecurityProfile, clusterID string) machinev1beta1.Image {
76+
switch {
77+
case securityProfile != nil: // Confidential VMs are x86-only
78+
return defaultAzureGalleryImage(clusterID)
79+
case arch == ARM64:
7080
return urnToImage(defaultAzureARMImageURN)
81+
default:
82+
return urnToImage(defaultAzureX86ImageURN)
7183
}
72-
return urnToImage(defaultAzureX86ImageURN)
7384
}
7485
defaultAzureManagedIdentiy = func(clusterID string) string {
7586
return fmt.Sprintf("%s-identity", clusterID)
@@ -1017,7 +1028,7 @@ func defaultAzure(m *machinev1beta1.Machine, config *admissionConfig) (bool, []s
10171028
}
10181029

10191030
if providerSpec.Image == (machinev1beta1.Image{}) {
1020-
providerSpec.Image = defaultAzureImage()
1031+
providerSpec.Image = defaultAzureImage(providerSpec.SecurityProfile, config.clusterID)
10211032
}
10221033

10231034
if providerSpec.UserDataSecret == nil {

pkg/webhooks/machine_webhook_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1712,7 +1712,7 @@ func TestMachineUpdate(t *testing.T) {
17121712
Vnet: defaultAzureVnet(azureClusterID),
17131713
Subnet: defaultAzureSubnet(azureClusterID),
17141714
NetworkResourceGroup: defaultAzureNetworkResourceGroup(azureClusterID),
1715-
Image: defaultAzureImage(),
1715+
Image: defaultAzureImage(nil, azureClusterID),
17161716
ManagedIdentity: defaultAzureManagedIdentiy(azureClusterID),
17171717
ResourceGroup: defaultAzureResourceGroup(azureClusterID),
17181718
UserDataSecret: &corev1.SecretReference{
@@ -3765,7 +3765,7 @@ func TestDefaultAzureProviderSpec(t *testing.T) {
37653765
VMSize: defaultInstanceType,
37663766
Vnet: defaultAzureVnet(clusterID),
37673767
Subnet: defaultAzureSubnet(clusterID),
3768-
Image: defaultAzureImage(),
3768+
Image: defaultAzureImage(nil, clusterID),
37693769
UserDataSecret: &corev1.SecretReference{
37703770
Name: defaultUserDataSecret,
37713771
},

pkg/webhooks/machineset_webhook_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ func TestMachineSetUpdate(t *testing.T) {
602602
Vnet: defaultAzureVnet(azureClusterID),
603603
Subnet: defaultAzureSubnet(azureClusterID),
604604
NetworkResourceGroup: defaultAzureNetworkResourceGroup(azureClusterID),
605-
Image: defaultAzureImage(),
605+
Image: defaultAzureImage(nil, azureClusterID),
606606
ManagedIdentity: defaultAzureManagedIdentiy(azureClusterID),
607607
ResourceGroup: defaultAzureResourceGroup(azureClusterID),
608608
UserDataSecret: &corev1.SecretReference{

0 commit comments

Comments
 (0)