Skip to content

Commit f9b0eaa

Browse files
authored
Merge pull request #5937 from nojnhuh/vm-identity-prefix
[release-1.20] Fix mishandling of azure:// prefix on AzureMachine UserAssignedIdentities
2 parents 9b2fbc2 + 5e557bf commit f9b0eaa

File tree

36 files changed

+78
-71
lines changed

36 files changed

+78
-71
lines changed

azure/services/virtualmachines/virtualmachines.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ func (s *Service) checkUserAssignedIdentities(specIdentities []infrav1.UserAssig
171171

172172
// Check if the expected identities are present in the vm.
173173
for _, expectedIdentity := range specIdentities {
174-
_, exists := actualMap[expectedIdentity.ProviderID]
174+
_, exists := actualMap[strings.TrimPrefix(expectedIdentity.ProviderID, azureutil.ProviderIDPrefix)]
175175
if !exists {
176176
s.Scope.SetConditionFalse(infrav1.VMIdentitiesReadyCondition, infrav1.UserAssignedIdentityMissingReason, clusterv1.ConditionSeverityWarning, vmMissingUAI+expectedIdentity.ProviderID)
177177
return

azure/services/virtualmachines/virtualmachines_test.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
"sigs.k8s.io/cluster-api-provider-azure/azure/services/publicips"
3939
"sigs.k8s.io/cluster-api-provider-azure/azure/services/virtualmachines/mock_virtualmachines"
4040
gomockinternal "sigs.k8s.io/cluster-api-provider-azure/internal/test/matchers/gomock"
41+
azureutil "sigs.k8s.io/cluster-api-provider-azure/util/azure"
4142
"sigs.k8s.io/cluster-api-provider-azure/util/reconciler"
4243
)
4344

@@ -113,10 +114,16 @@ var (
113114
},
114115
}
115116
fakeUserAssignedIdentity = infrav1.UserAssignedIdentity{
116-
ProviderID: "azure:///subscriptions/123/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fake-provider-id",
117+
ProviderID: "/subscriptions/123/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fake-provider-id",
118+
}
119+
fakeUserAssignedIdentityWithPrefix = infrav1.UserAssignedIdentity{
120+
ProviderID: azureutil.ProviderIDPrefix + fakeUserAssignedIdentity.ProviderID,
117121
}
118122
fakeUserAssignedIdentity2 = infrav1.UserAssignedIdentity{
119-
ProviderID: "azure:///subscriptions/123/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/fake-provider-id-2",
123+
ProviderID: fakeUserAssignedIdentity.ProviderID + "-2",
124+
}
125+
fakeUserAssignedIdentity2WithPrefix = infrav1.UserAssignedIdentity{
126+
ProviderID: azureutil.ProviderIDPrefix + fakeUserAssignedIdentity2.ProviderID,
120127
}
121128
)
122129

@@ -324,14 +331,14 @@ func TestCheckUserAssignedIdentities(t *testing.T) {
324331
},
325332
{
326333
name: "matching user assigned identities",
327-
specIdentities: []infrav1.UserAssignedIdentity{fakeUserAssignedIdentity},
334+
specIdentities: []infrav1.UserAssignedIdentity{fakeUserAssignedIdentityWithPrefix},
328335
actualIdentities: []infrav1.UserAssignedIdentity{fakeUserAssignedIdentity},
329336
},
330337
{
331338
name: "less user assigned identities than expected",
332-
specIdentities: []infrav1.UserAssignedIdentity{fakeUserAssignedIdentity, fakeUserAssignedIdentity2},
339+
specIdentities: []infrav1.UserAssignedIdentity{fakeUserAssignedIdentity, fakeUserAssignedIdentity2WithPrefix},
333340
actualIdentities: []infrav1.UserAssignedIdentity{fakeUserAssignedIdentity},
334-
expectedKey: fakeUserAssignedIdentity2.ProviderID,
341+
expectedKey: fakeUserAssignedIdentity2WithPrefix.ProviderID,
335342
},
336343
{
337344
name: "more user assigned identities than expected",

docs/book/src/topics/workload-identity.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ to give the identity Contributor access to the Azure subscription where the work
142142
```yaml
143143
identity: UserAssigned
144144
userAssignedIdentities:
145-
- providerID: /subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${USER_ASSIGNED_IDENTITY_NAME}
145+
- providerID: azure:///subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${USER_ASSIGNED_IDENTITY_NAME}
146146
```
147147
148148
A sample `AzureMachineTemplate` after the edit should look like the below:
@@ -162,7 +162,7 @@ to give the identity Contributor access to the Azure subscription where the work
162162
sshPublicKey: ${AZURE_SSH_PUBLIC_KEY_B64:=""}
163163
identity: UserAssigned
164164
userAssignedIdentities:
165-
- providerID: /subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${USER_ASSIGNED_IDENTITY_NAME}
165+
- providerID: azure:///subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${USER_ASSIGNED_IDENTITY_NAME}
166166
vmSize: ${AZURE_NODE_MACHINE_TYPE}
167167
```
168168

templates/test/ci/cluster-template-prow-apiserver-ilb.yaml

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

templates/test/ci/cluster-template-prow-ci-version-dra.yaml

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

templates/test/ci/cluster-template-prow-ci-version-dual-stack.yaml

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

templates/test/ci/cluster-template-prow-ci-version-ipv6.yaml

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

templates/test/ci/cluster-template-prow-ci-version-md-and-mp.yaml

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

templates/test/ci/cluster-template-prow-ci-version.yaml

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

templates/test/ci/cluster-template-prow-custom-vnet.yaml

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

0 commit comments

Comments
 (0)