Azure 应用程序网关是一种 Web 流量负载均衡器,可用于管理 Web 应用程序的流量。 使用应用程序网关有几个好处。 Service Fabric 托管群集支持 Azure 应用程序网关,并允许将节点类型连接到应用程序网关。 可以创建 Azure 应用程序网关并将资源 ID 传递给 Service Fabric 托管群集 ARM 模板。
使用 Service Fabric API 版本 2022-08-01-Preview(或更高版本)。
以下部分介绍在 Service Fabric 托管群集中使用 Azure 应用程序网关时应执行的步骤:
按照“快速入门:使用门户引导 Web 流量 - Azure 应用程序网关”中的步骤操作。 记下在后面的步骤中使用的资源 ID。
将应用程序网关链接到 Service Fabric 托管群集的节点类型。 为此,必须授予 SFMC 加入应用程序网关的权限。 通过向应用程序网关资源分配 SFMC“网络参与者”角色来授予此权限,如以下步骤中所述:
A. 从 Service Fabric 资源提供程序应用程序的订阅中获取服务
Id
。Connect-AzAccount -Environment AzureChinaCloud 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 网络参与者 4d97b98b-1d4f-4787-a291-c67834d212e7 请记下
Role definition name
和Role definition ID
属性值,以便在后面的步骤中使用B. 示例 ARM 部署模板向具有参与者访问权限的应用程序网关添加角色分配。 有关 Azure 角色的详细信息,请参阅 Azure 内置角色 - Azure RBAC。 此角色分配在模板的资源部分中定义,其中包含 PrincipalId 和从第一步确定的角色定义 ID。
"variables": { "sfApiVersion": "2022-08-01-preview", "networkApiVersion": "2020-08-01", "clusterResourceId": "[resourceId('Microsoft.ServiceFabric/managedclusters', parameters('clusterName'))]", "rgRoleAssignmentId": "[guid(resourceGroup().id, 'SFRP-NetworkContributor')]", "auxSubnetName": "AppGateway", "auxSubnetNsgName": "AppGatewayNsg", "auxSubnetNsgID": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('auxSubnetNsgName'))]", "frontendIPName": "[concat(parameters('clusterName'), '-AppGW-IP')]", "appGatewayName": "[concat(parameters('clusterName'), '-AppGW')]", "appGatewayDnsName": "[concat(parameters('clusterName'), '-appgw')]", "appGatewayResourceId": "[resourceId('Microsoft.Network/applicationGateways', variables('appGatewayName'))]", "appGatewayFrontendPort": 80, "appGatewayBackendPort": 8000, "appGatewayBackendPool": "AppGatewayBackendPool", "frontendConfigAppGateway": [ { "applicationGatewayBackendAddressPoolId": "[resourceId('Microsoft.Network/applicationGateways/backendAddressPools', variables('appGatewayName'), variables('appGatewayBackendPool'))]" } ], "primaryNTFrontendConfig": "[if(parameters('enableAppGateway'), variables('frontendConfigAppGateway'), createArray())]", "secondaryNTFrontendConfig": "[if(parameters('enableAppGateway'), variables('frontendConfigAppGateway'), createArray())]" }, "resources": [ { "type": "Microsoft.Authorization/roleAssignments", "apiVersion": "2020-04-01-preview", "name": "[variables('rgRoleAssignmentId')]", "properties": { "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7')]", "principalId": "[parameters('sfrpPrincipalId')]" } },
或者,也可以使用从第一步确定的 PrincipalId 和角色定义名称“参与者”(如果适用),通过 PowerShell 添加角色分配。
New-AzRoleAssignment -PrincipalId "sfrpPrincipalId" ` -RoleDefinitionId "4d97b98b-1d4f-4787-a291-c67834d212e7" ` -ResourceName <resourceName> ` -ResourceType <resourceType> ` -ResourceGroupName <resourceGroupName>
使用分配角色并在创建 Service Fabric 托管群集的过程中添加应用程序网关配置的示例 ARM 部署模板。 使用上方获取的
principalId
、appGatewayName
和appGatewayBackendPoolId
更新模板。还可以修改现有的 ARM 模板,并在 Microsoft.ServiceFabric/managedClusters 资源下添加新属性
appGatewayBackendPoolId
,该资源采用应用程序网关的资源 ID。
"frontendConfigurations": [
{
"applicationGatewayBackendAddressPoolId": "<appGatewayBackendPoolId>"
}
]