共用方式為


在 Service Fabric 受控叢集中使用 Azure 應用程式閘道

Azure 應用程式閘道是網路流量負載平衡器,可讓您管理 Web 應用程式的流量。 使用應用程式閘道有幾項優點。 Service Fabric 受控叢集支援 Azure 應用程式閘道,並可讓您將節點類型連線至應用程式閘道。 您可以建立 Azure 應用程式閘道,並將資源識別碼傳遞至 Service Fabric 受控叢集 ARM 範本。

如何在 Service Fabric 受控叢集中使用應用程式閘道

需求

使用 Service Fabric API 版本 2022-08-01-Preview (或更新版本)。

步驟

下一節說明在 Service Fabric 受控叢集中使用 Azure 應用程式閘道所應採取的步驟:

  1. 請遵循快速入門:使用入口網站引導 Web 流量 - Azure 應用程式閘道中的步驟。 請記下資源識別碼,以供後續步驟使用。

  2. 將應用程式閘道連結至 Service Fabric 受控叢集的節點類型。 若要這樣做,您必須授與 SFMC 加入應用程式閘道的權限。 在應用程式閘道資源上指派 SFMC「網路參與者」角色來授與此權限,如下列步驟所述:

    A. 從訂用帳戶取得 Service Fabric 資源提供者應用程式的服務 Id

    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
    

    請記下先前輸出的 Id 來作為 principalId,以供稍後的步驟使用

    角色定義名稱 角色定義識別碼
    網路參與者 4d97b98b-1d4f-4787-a291-c67834d212e7

    請記下 Role definition nameRole definition ID 屬性值,以供稍後的步驟使用

    B. 範例 ARM 部署範本將角色指派新增至具有參與者存取權的應用程式閘道。 如需 Azure 角色的詳細資訊,請參閱 Azure 內建角色 - Azure RBAC。 此角色指派定義於範本的資源章節中,其中 PrincipalId 和角色定義識別碼是由第一個步驟所決定。

    "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>
    
  3. 使用範例 ARM 部署範本,其可指派角色並新增應用程式閘道設定 (作為 Service Fabric 受控叢集建立的一部分)。 使用上述取得的 principalIdappGatewayNameappGatewayBackendPoolId 來更新範本。

  4. 您也可以在採用應用程式閘道之資源識別碼的 Microsoft.ServiceFabric/managedClusters 資源下修改現有 ARM 範本並新增新屬性 appGatewayBackendPoolId

    ARM 範本:

     "frontendConfigurations": [ 
       { 
         "applicationGatewayBackendAddressPoolId": "<appGatewayBackendPoolId>" 
       } 
     ]