Service Fabric 受控叢集中的每個節點類型都由虛擬機器擴展集支援。 若要允許受控識別與受控叢集節點類型搭配使用,已將屬性 vmManagedIdentity 新增至節點類型定義,其中包含可使用的 userAssignedIdentities身分識別清單。 功能會鏡像如何在非受控叢集中使用受控識別,例如使用受控識別搭配 Azure Key Vault 虛擬機器擴展集延伸模組。
如需在節點類型上使用受控識別的 Service Fabric 受控叢集部署範例,請參閱 這些範本。 此範例有兩個範本:
受控識別和角色指派:建立受控識別和角色指派的範本,以允許 Service Fabric RP 將身分識別指派給受控叢集的虛擬機器擴展集。 在節點類型資源上使用受控識別之前,這應該只部署一次。
受控叢集和節點類型:使用先前建立的受控識別,用於 Service Fabric 受控叢集和節點類型資源的範本。
備註
此功能目前僅支援使用者指派的身分。
備註
請參閱 在 Service Fabric 受控叢集上設定和使用具有受控識別的應用程式, 以進行應用程式設定。
先決條件
在開始之前:
1. 建立身分和角色指派
建立使用者指派的管理型身分識別
您可以在 Azure Resource Manager (ARM) 範本的資源區段中定義使用者指派的受控識別,以便在部署時建立:
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[parameters('userAssignedIdentityName')]",
"apiVersion": "2023-01-31",
"location": "[resourceGroup().location]"
}
或透過 PowerShell 建立:
New-AzResourceGroup -Name <managedIdentityRGName> -Location <location>
New-AzUserAssignedIdentity -ResourceGroupName <managedIdentityRGName> -Name <userAssignedIdentityName>
使用 Service Fabric 資源提供者新增角色指派
使用 Service Fabric 資源提供者應用程式,將角色指派新增至受控識別。 此指派可讓 Service Fabric 資源提供者將上一個步驟所建立的身分識別指派給受控叢集的虛擬機器擴展集。 這是一次性動作
取得 Service Fabric 資源提供者應用程式的服務主體:
Login-AzAccount
Select-AzSubscription -SubscriptionId <SubId>
Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
備註
請確定您位於正確的訂用帳戶中,如果訂用帳戶位於不同的租用戶中,主體識別碼將會變更。
ServicePrincipalNames : {00001111-aaaa-2222-bbbb-3333cccc4444}
ApplicationId : 00001111-aaaa-2222-bbbb-3333cccc4444
ObjectType : ServicePrincipal
DisplayName : Azure Service Fabric Resource Provider
Id : 00000000-0000-0000-0000-000000000000
在範本或 PowerShell 命令上,將先前輸出的 識別碼 用作 principalId ,並將以下的角色定義識別碼用作 roleDefinitionId :
| 角色定義名稱 | 角色定義識別碼 |
|---|---|
| 受控識別操作員 | f1a07417-d97a-45cb-824c-7a7467783830 |
此角色指派可以在資源區段範本中使用主體識別碼和角色定義識別碼來定義:
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"name": "[parameters('vmIdentityRoleNameGuid')]",
"scope": "[concat('Microsoft.ManagedIdentity/userAssignedIdentities', '/', parameters('userAssignedIdentityName'))]",
"dependsOn": [
"[concat('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
],
"properties": {
"roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', 'f1a07417-d97a-45cb-824c-7a7467783830')]",
"principalId": "<Service Fabric Resource Provider ID>"
}
}
備註
vmIdentityRoleNameGuid 應該是有效的 GUID。 如果您再次部署包含此角色指派的相同範本,請確保 GUID 與最初使用的相同。否則,請移除此資源,因為該資源只需建立一次。
或使用主體識別碼和角色定義名稱透過 PowerShell 建立:
New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Managed Identity Operator" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>"
部署受控識別和角色指派。
執行 New-AzResourceGroupDeployment Cmdlet 來建立受控識別並新增角色指派:
New-AzResourceGroupDeployment -ResourceGroupName <managedIdentityRGName> -TemplateFile ".\MangedIdentityAndSfrpRoleAssignment.json" -TemplateParameterFile ".\MangedIdentityAndSfrpRoleAssignment.Parameters.json" -Verbose
2.將身分指派給節點類型資源
將受控識別屬性新增至節點類型定義
最後,使用第一個步驟上所建立身分識別的完整資源識別碼,將 vmManagedIdentity 和 userAssignedIdentities 屬性新增至受控叢集的節點類型定義。 請務必使用 2021-05-01 或更新版本的 apiVersion。
{
"type": "Microsoft.ServiceFabric/managedClusters/nodeTypes",
"apiVersion": "2022-01-01",
"properties": {
"isPrimary": true,
"vmInstanceCount": 5,
"dataDiskSizeGB": 100,
"vmSize": "Standard_D2_v2",
"vmImagePublisher": "MicrosoftWindowsServer",
"vmImageOffer": "WindowsServer",
"vmImageSku": "2019-Datacenter",
"vmImageVersion": "latest",
"vmManagedIdentity": {
"userAssignedIdentities": [
"[parameters('userAssignedIdentityResourceId')]"
]
}
}
}
部署指派身分識別的節點類型資源
執行 New-AzResourceGroupDeployment Cmdlet 來部署 Service Fabric 受控叢集範本,以將受控識別指派給節點類型資源。
New-AzResourceGroupDeployment -ResourceGroupName <sfmcRGName> -TemplateFile ".\SfmcVmMangedIdentity.json" -TemplateParameterFile ".\SfmcVmMangedIdentity.Parameters.json" -Verbose
部署之後,建立的受控識別已新增至指定節點類型的虛擬機器擴展集,而且可以如預期般使用,就像在任何非受控叢集中一樣。
故障排除
如果無法正確新增角色指派,部署時會遇到下列錯誤:
在此情況下,請確定已成功使用角色「受控識別操作員」建立角色指派。 您可以在 Azure 入口網站 的受控識別資源存取控制下找到角色指派,如下所示。