Service Fabric 應用程式資源模型
有多種選擇可讓您在 Service Fabric 叢集上部署 Azure Service Fabric 應用程式。 建議使用 Azure Resource Manager。 如果使用 Resource Manager,您可以採用 JSON 來描述應用程式和服務,然後部署在與叢集相同的 Resource Manager 範本中。 不同於使用 PowerShell 或 Azure CLI 來部署和管理應用程式,如果您使用 Resource Manager,則不需要等待叢集準備就緒;應用程式註冊、佈建和部署全都可以在一個步驟中進行。 使用 Resource Manager 是在叢集上管理應用程式生命週期的最佳方式。 如需詳細資訊,請參閱最佳做法:基礎結構即程式碼。
在 Resource Manager 中將資源當成應用程式來管理,可協助您改進這幾方面:
- 稽核線索:Resource Manager 稽核每個作業,並保留詳細的活動記錄。 活動記錄可協助您追蹤對應用程式和叢集所做的任何變更。
- 角色型存取控制:您可以使用相同的 Resource Manager 範本,管理以何種權限存取叢集和部署於叢集的應用程式。
- 管理效率:使用 Resource Manager 讓您集中一處 (Azure 入口網站) 來管理叢集和重要的應用程式部署。
在本文中,您將了解如何:
- 使用 Resource Manager 來部署應用程式資源。
- 使用 Resource Manager 來升級應用程式資源。
- 刪除應用程式資源。
部署應用程式資源
使用 Resource Manager 應用程式資源模型來部署應用程式及其服務的概略步驟如下:
- 封裝應用程式程式碼。
- 上傳封裝。
- 在 Resource Manager 範本中參考封裝的位置當作應用程式資源。
如需詳細資訊,請參閱封裝應用程式。
接著,建立 Resource Manager 範本、以應用程式詳細資料來更新參數檔案,然後在 Service Fabric 叢集上部署範本。 探索範例。
建立儲存體帳戶
若要從 Resource Manager 範本部署應用程式,您必須有儲存體帳戶。 儲存體帳戶用來暫存應用程式映像。
您可以重複使用現有的儲存體帳戶,或建立新的儲存體帳戶,以暫存應用程式。 如果您使用現有的儲存體帳戶,則可以跳過此步驟。
設定儲存體帳戶
建立儲存體帳戶之後,您可以建立可暫存應用程式的 Blob 容器。 在 Azure 入口網站中,移至您要用來儲存應用程式的 Azure 儲存體帳戶。 選取 [Blob]>[新增容器]。
將公用存取層級設定為私人可保護叢集上的資源。 您可以透過多種方式授與存取權:
- 使用 Azure 入口網站中的 Azure RBAC 來授權存取 Azure Blob 和佇列資料。
- 使用共用存取簽章來委派存取權。
下列螢幕擷取畫面中的範例使用 Blob 的匿名讀取存取。
將應用程式暫存在儲存體帳戶中
您先必須將應用程式暫存在 Blob 儲存體中,才可以部署應用程式。 在本教學課程中,我們會手動建立應用程式封裝。 請記住,這個步驟可以自動化。 如需詳細資訊,請參閱封裝應用程式。
在本教學課程中,我們使用 Voting 應用程式範例。
在 Visual Studio 中,以滑鼠右鍵按一下 Voting 專案,然後選取 [封裝]。
移至 .\service-fabric-dotnet-quickstart\Voting\pkg\Debug 目錄。 將內容壓縮成名為 Voting.zip 的檔案。 ApplicationManifest.xml 檔案應該在 ZIP 檔案中的根目錄。
重新命名檔案,將副檔名從 .zip 變更為 .sfpkg。
在 Azure 入口網站中,在儲存體帳戶的 apps 容器中選取 [上傳],然後上傳 Voting.sfpkg。
現在,應用程式已暫存,您可以建立 Resource Manager 範本來部署應用程式。
建立 Resource Manager 範本
應用程式範例包含 Azure Resource Manager 範本,可用來部署應用程式。 範本檔案名稱為 UserApp.json 和 UserApp.Parameters.json。
注意
必須以您的叢集名稱更新 UserApp.Parameters.json 檔案。
參數 | 描述 | 範例 | 註解 |
---|---|---|---|
clusterName | 叢集名稱,代表您要部署到此叢集 | sf-cluster123 | |
應用程式 | 應用程式的名稱 | 投票 | |
applicationTypeName | 應用程式的類型名稱 | VotingType | 必須符合 ApplicationManifest.xml |
applicationTypeVersion | 應用程式類型的版本 | 1.0.0 | 必須符合 ApplicationManifest.xml |
serviceName | 服務的名稱 | Voting~VotingWeb | 格式必須是 ApplicationName~ServiceType |
serviceTypeName | 服務的類型名稱 | VotingWeb | 必須符合 ServiceManifest.xml |
appPackageUrl | 應用程式的 Blob 儲存體 URL | https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg | 在 Blob 儲存體中,應用程式封裝的 URL (本文稍後說明設定 URL 的程序) |
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications/services",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
"location": "[variables('clusterLocation')]"
}
部署應用程式
執行 New-AzResourceGroupDeployment Cmdlet,將應用程式部署至叢集所在的資源群組:
New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose
使用 Resource Manager 升級 Service Fabric 應用程式
重要
透過 ARM JSON 定義所部署的任何服務,都必須從相應 ApplicationManifest.xml 檔案的 DefaultServices 區段中移除。
基於下列其中一個原因,您可能升級已部署至 Service Fabric 叢集的應用程式:
新的服務新增至應用程式。 將服務新增至應用程式時,必須在 service-manifest.xml 和 application-manifest.xml 檔案中新增服務定義。 為了反映應用程式的新版本,您也必須在 UserApp.Parameters.json 中將應用程式類型版本從 1.0.0 變更為 1.0.1:
"applicationTypeVersion": { "value": "1.0.1" }, "serviceName2": { "value": "Voting~VotingData" }, "serviceTypeName2": { "value": "VotingDataType" }
現有服務的新版本新增至應用程式。 例如,應用程式的程式碼變更,以及應用程式類型版本和名稱更新。 針對此升級,請如下更新 UserApp.Parameters.json:
"applicationTypeVersion": { "value": "1.0.1" },
刪除應用程式資源
若要刪除在 Resource Manager 中使用應用程式資源模型部署的應用程式:
使用 Get-AzResource Cmdlet 取得應用程式的資源識別碼:
Get-AzResource -Name <String> | f1
使用 Remove-AzResource Cmdlet 刪除應用程式資源:
Remove-AzResource -ResourceId <String> [-Force] [-ApiVersion <String>]
常見問題和解答
錯誤:「應用程式名稱必須是服務名稱的前置詞」解答:請確定服務名稱的格式如下:ProfileVetSF~CallTicketDataWebApi。
下一步
取得應用程式資源模型的相關資訊: