Service Fabric 관리형 클러스터 노드 유형에 관리 ID 추가
Service Fabric 관리형 클러스터의 각 노드 형식은 가상 머신 확장 집합을 통해 백업됩니다. 관리 ID를 관리형 클러스터 노드 형식에 사용할 수 있도록 vmManagedIdentity
속성이 사용할 수 있는 ID의 목록이 포함된 노드 형식 정의 userAssignedIdentities
에 추가되었습니다. 이 기능은 관리 ID를 Azure Key Vault 가상 머신 확장 집합 확장에서 사용하는 경우와 같이 비 관리형 클러스터에서 관리 ID를 사용하는 방법을 미러링합니다.
특정 노드 형식에서 관리 ID를 사용하는 Service Fabric 관리형 클러스터 배포의 예는 이 템플릿을 참조하세요. 이 예제에는 다음과 같은 두 개의 템플릿이 있습니다.
관리 ID 및 역할 할당: 관리 ID 및 역할 할당을 만들기 위한 템플릿으로, Service Fabric RP가 관리 클러스터의 가상 머신 확장 집합에 ID를 할당할 수 있도록 합니다. 이는 노드 유형 리소스에서 관리 ID를 사용하기 전에 한 번만 배포해야 합니다.
관리 클러스터 및 노드 유형: 이전에 생성한 관리 ID를 사용한 서비스 패브릭 관리 클러스터 및 노드 유형 리소스에 대한 템플릿입니다.
참고 항목
현재, 이 기능에는 사용자 할당 ID만 지원됩니다.
참고 항목
애플리케이션 구성은 Service Fabric 관리형 클러스터에서 관리 ID로 애플리케이션 구성 및 사용을 참조하세요.
필수 조건
시작하기 전에 다음을 수행하십시오.
1. ID 및 역할 할당 만들기
사용자 할당 관리 ID 만들기
사용자 할당 관리 ID는 ARM(Azure Resource Manager) 템플릿의 리소스에서 배포 시에 만들도록 정의할 수 있습니다.
{
"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 리소스 공급자 애플리케이션을 사용하여 관리 ID에 역할 할당을 추가합니다. 이 할당을 통해 Service Fabric 리소스 공급자가 관리형 클러스터의 가상 머신 확장 집합에 이전 단계에서 생성한 ID를 할당할 수 있습니다. 이 조치는 한 번만 수행하면 됩니다
Service Fabric 리소스 공급자 애플리케이션에 대한 서비스 주체를 가져옵니다.
Login-AzAccount
Select-AzSubscription -SubscriptionId <SubId>
Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
참고 항목
올바른 구독에 있는지 확인합니다. 구독이 다른 테넌트에 있는 경우 보안 주체 ID가 변경됩니다.
ServicePrincipalNames : {74cb6831-0dbb-4be1-8206-fd4df301cdc2}
ApplicationId : 74cb6831-0dbb-4be1-8206-fd4df301cdc2
ObjectType : ServicePrincipal
DisplayName : Azure Service Fabric Resource Provider
Id : 00000000-0000-0000-0000-000000000000
이전 출력의 ID를 principalId로 사용하고 아래의 역할 정의 ID를 roleDefinitionId로 사용합니다(템플릿 또는 PowerShell 명령에 적용 가능한 경우).
역할 정의 이름 | 역할 정의 ID |
---|---|
관리 ID 운영자 | f1a07417-d97a-45cb-824c-7a7467783830 |
이 역할 할당은 주체 ID 및 역할 정의 ID를 사용하여 리소스 섹션 템플릿에서 정의할 수 있습니다.
{
"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가 원래 사용된 것과 동일한지 확인합니다. 또는 한 번만 만들면 되므로 이 리소스를 제거합니다.
또는 보안 주체 ID 및 역할 정의 이름을 사용하여 PowerShell을 통해 생성할 수 있습니다.
New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Managed Identity Operator" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>"
관리 ID 및 역할 할당을 배포합니다.
New-AzResourceGroupDeployment cmdlet을 실행하여 관리 ID를 생성하고 역할 할당을 추가합니다.
New-AzResourceGroupDeployment -ResourceGroupName <managedIdentityRGName> -TemplateFile ".\MangedIdentityAndSfrpRoleAssignment.json" -TemplateParameterFile ".\MangedIdentityAndSfrpRoleAssignment.Parameters.json" -Verbose
2. ID를 노드 유형 리소스에 할당
노드 형식 정의에 관리 ID 속성 추가
마지막으로, 첫 번째 단계에서 생성한 ID의 전체 리소스 ID를 사용하여 관리 클러스터의 노드 형식 정의에 vmManagedIdentity
및 userAssignedIdentities
속성을 추가합니다. apiVersion
에 대해 2021-05-01 이상을 사용해야 합니다.
{
"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')]"
]
}
}
}
ID를 할당하는 노드 유형 리소스 배포
New-AzResourceGroupDeployment cmdlet을 실행하여 관리 ID를 노드 형식 리소스에 할당하는 service fabric 관리 클러스터 템플릿을 배포합니다.
New-AzResourceGroupDeployment -ResourceGroupName <sfmcRGName> -TemplateFile ".\SfmcVmMangedIdentity.json" -TemplateParameterFile ".\SfmcVmMangedIdentity.Parameters.json" -Verbose
배포 후에는 생성된 관리 ID가 지정된 노드 형식의 가상 머신 확장 집합에 추가되고 비 관리형 클러스터에서와 마찬가지로 사용할 수 있습니다.
문제 해결
역할 할당을 올바르게 추가하지 못하면 배포 시 다음 오류가 발생합니다.
이 경우 역할 "관리 ID 연산자"를 사용하여 역할 할당이 성공적으로 생성되었는지 확인합니다. 역할 할당은 아래와 같이 관리 ID 리소스의 액세스 제어 아래에 있는 Azure Portal에서 찾을 수 있습니다.