Share via


使用 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 應用程式資源

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

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

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

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

建立儲存體帳戶

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

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

Create a storage account

警告

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

設定儲存體帳戶

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

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

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

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

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

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

    Package Application

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

    Zip Application

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

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

    Upload App Package

現在,應用程式已暫存,您可以建立 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 上是字串。

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

下一步

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