共用方式為


使用 Azure Resource Manager 在受控叢集上管理應用程式生命週期

有多種選擇可讓您在 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 部署 Service Fabric 應用程式資源。
  • 使用 Resource Manager 升級 service fabric 應用程式資源。
  • 刪除 Service Fabric 應用程式資源。

注意

本檔是四部分教學課程系列的第四部分,從部署 Service Fabric 受控叢集開始。 因此,您應該在此步驟之前部署叢集。 不過,如果您想要將叢集和應用程式一起部署在相同的 ARM 或 Bicep 範本中,請知道 versions 必須相依於 nodeType。 否則,部署會失敗。

部署 Service Fabric 應用程式資源

使用 Resource Manager 應用程式資源模型來部署應用程式及其服務的概略步驟如下:

  1. 封裝應用程式程式碼。
  2. 上傳封裝。
  3. 在 Resource Manager 範本中參考封裝的位置當作應用程式資源。

如需詳細資訊,請參閱封裝應用程式

接著,建立 Resource Manager 範本、以應用程式詳細資料來更新參數檔案,然後在 Service Fabric 受控叢集上部署範本。 探索範例

建立儲存體帳戶

若要從 Resource Manager 範本部署應用程式,您必須有儲存體帳戶。 儲存體帳戶用來暫存應用程式映像。

您可以重複使用現有的儲存體帳戶,或建立新的儲存體帳戶,以暫存應用程式。 如果您使用現有的儲存體帳戶,則可以跳過此步驟。

建立儲存體帳戶

警告

對儲存體帳戶中的 Blob 資料進行匿名公用存取會產生安全性風險。 當您建立儲存體帳戶時,建議您將 AllowBlobPublicAccess 屬性設定為 false,在帳戶層級停用對 Blob 資料的匿名公用存取。 如需詳細資訊,請參閱補救對 Blob 資料的匿名公用讀取存取 (Azure Resource Manager 部署)

設定儲存體帳戶

建立儲存體帳戶之後,您可以建立可暫存應用程式的 Blob 容器。 在 Azure 入口網站中,移至您要用來儲存應用程式的 Azure 儲存體帳戶。 選取 [Blob]>[新增容器]

您可以採取下列其中一種方式授與容器的存取權:

將應用程式暫存在儲存體帳戶中

您先必須將應用程式暫存在 Blob 儲存體中,才可以部署應用程式。 在本教學課程中,我們會手動建立應用程式封裝。 請記住,這個步驟可以自動化。 如需詳細資訊,請參閱封裝應用程式

在本教學課程中,我們使用 Voting 應用程式範例

  1. 在 Visual Studio 中,以滑鼠右鍵按一下 Voting 專案,然後選取 [封裝]

    封裝應用程式

  2. 移至 .\service-fabric-dotnet-quickstart\Voting\pkg\Debug 目錄。 將內容壓縮成名為 Voting.zip 的檔案。 ApplicationManifest.xml 檔案應該在 ZIP 檔案中的根目錄。

    Zip 應用程式

  3. 重新命名檔案,將副檔名從 .zip 變更為 .sfpkg

  4. 在 Azure 入口網站中,在儲存體帳戶的 apps 容器中選取 [上傳],然後上傳 Voting.sfpkg

    上傳應用程式套件

現在,應用程式已暫存,您可以建立 Resource Manager 範本來部署應用程式。

建立 Resource Manager 範本

應用程式範例包含 Azure Resource Manager 範本,可用來部署應用程式。 範本檔案名稱為 UserApp.json 和 UserApp.Parameters.json

注意

必須以您的叢集名稱更新 UserApp.Parameters.json 檔案。

參數 描述 範例 註解
clusterName 叢集名稱,代表您要部署到此叢集 sf-cluster123
應用程式 應用程式的名稱 投票
version 應用程式的資源識別碼、應用程式類型和版本。 /providers/Microsoft.ServiceFabric/managedClusters/sf-cluster-123/applicationTypes/VotingType/versions/1.0.0 必須符合 ApplicationManifest.xml
serviceName 服務的名稱 VotingWeb 必須為 ServiceType 格式
serviceTypeName 服務的類型名稱 VotingWebType 必須符合 ServiceManifest.xml
appPackageUrl 應用程式的 Blob 儲存體 URL https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg 在 Blob 儲存體中,應用程式封裝的 URL (本文稍後說明設定 URL 的程序)
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

部署 Service Fabric 應用程式

執行 New-AzResourceGroupDeployment Cmdlet,將應用程式部署至叢集所在的資源群組:

New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose

使用 Resource Manager 升級 Service Fabric 應用程式

重要

透過 Azure Resource Manager (ARM) 範本部署的任何服務,都必須從相應 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": "VotingData"
    },
    "serviceTypeName2": {
        "value": "VotingDataType"
    }
    
  • 現有服務的新版本新增至應用程式。 例如,應用程式的程式碼變更,以及應用程式類型版本和名稱更新。 針對此升級,請如下更新 UserApp.Parameters.json:

     "applicationTypeVersion": {
        "value": "1.0.1"
    }
    

刪除 Service Fabric 應用程式資源

注意

請勿透過 Azure Resource Manager (ARM) 範本刪除應用程式,因為沒有宣告如何清除個別資源

若要刪除在 Resource Manager 中使用應用程式資源模型部署的 Service Fabric 應用程式:

  1. 使用 Get-AzResource Cmdlet 取得應用程式的資源識別碼:

    Get-AzResource  -Name <String> | f1
    
  2. 使用 Remove-AzServiceFabricApplication Cmdlet 刪除應用程式資源:

    Remove-AzServiceFabricApplication -ResourceId <String> [-Force]
    

從傳統移轉至受控叢集

如果要將應用程式從傳統遷移至受控叢集,請務必確認已正確指定類型,否則會發生錯誤。

特別指出下列項目是因為常用,並不表示差異僅止於此。

  • upgradeReplicaSetCheckTimeout 現在是受控的整數,但在傳統 SFRP 上是字串。

如需屬性和類型的完整清單,請參閱受控叢集應用程式資源類型

下一步

深入了解受控叢集應用程式部署: