Поделиться через


Управление жизненным циклом приложений в управляемом кластере с помощью 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) для управления кластером и критическими развертываниями приложений.

В этом документе вы узнаете, как:

  • Развертывание ресурсов приложения Service Fabric с помощью Resource Manager.
  • Обновление ресурсов приложения Service Fabric с помощью Resource Manager.
  • Удаление ресурсов приложения Service Fabric.

Примечание.

Этот документ является частью четырех частей серии учебников, начиная с развертывания управляемого кластера Service Fabric. Таким образом, предполагается, что вы развернули кластер перед этим шагом. Однако если вы планируете развернуть кластер и приложение вместе, в одном шаблоне ARM или Bicep знают, что versions должно иметь зависимость nodeType. В противном случае развертывание завершается ошибкой.

Развертывание ресурсов приложения Service Fabric.

Высокоуровневые шаги, которые необходимо выполнить для развертывания приложения и его служб с помощью модели ресурсов приложения Resource Manager

  1. Упаковка кода приложения.
  2. Отправьте пакет.
  3. Указание на расположение пакета в шаблоне Resource Manager в качестве ресурса приложения.

Дополнительные сведения см. в разделе Создание пакета приложения.

Затем вы создадите шаблон Resource Manager, обновите файл параметров, указав сведения о приложении, и развернете шаблон в управляемом кластере Service Fabric. Просмотр примеров.

Создание учетной записи хранилища

Чтобы развернуть приложение из шаблона Resource Manager, необходимо иметь учетную запись хранения. Учетная запись хранения используется для подготовки образа приложения.

Можно повторно использовать существующую учетную запись хранения или создать новую для подготовки приложений. Если использовать существующую учетную запись хранения, этот шаг можно пропустить.

Создание учетной записи хранилища

Внимание

Анонимный общедоступный доступ к данным BLOB-объектов в учетной записи хранения представляет угрозу безопасности. При создании учетной записи хранения рекомендуется отключить анонимный общедоступный доступ к данным BLOB-объектов на уровне учетной записи, установив для свойства AllowBlobPublicAccess значение false. Дополнительные сведения см. в разделе "Исправление анонимного общедоступного доступа на чтение" к данным BLOB-объектов (развертывания Azure Resource Manager).

Настройка учетной записи хранения

После создания учетной записи хранения создайте контейнер больших двоичных объектов, в котором можно подготавливать приложения. На портале Azure перейдите в учетную запись службы хранилища Azure, в которой нужно сохранить приложения. Выберите BLOB-объекты>Добавить контейнер.

Доступ к контейнеру можно предоставить одним из следующих способов:

  • Вы можете назначить роль Azure RBAC, которая предоставляет контейнеру разрешения субъекту безопасности, чтобы субъект безопасности смог получить доступ к данным в контейнере с помощью авторизации Microsoft Entra. Дополнительные сведения см. в разделе "Авторизация доступа к BLOB-объектам" с помощью идентификатора Microsoft Entra.
  • Вы можете делегировать доступ к контейнеру с помощью подписанного URL-адреса, чтобы предоставить клиенту доступ к BLOB-объектам в контейнере в течение ограниченного периода времени и с определенными разрешениями. Дополнительные сведения см. в статье Предоставление ограниченного доступа к ресурсам службы хранилища Azure с помощью подписанных URL-адресов (SAS).
  • Ключи доступа к учетной записи можно использовать для авторизации доступа к данным BLOB-объектов. Этот подход является наименее безопасным и поэтому не рекомендуется.

Подготовка приложения в учетной записи хранения

Перед развертыванием приложения необходимо подготовить приложение в хранилище BLOB-объектов. В этом руководстве мы создадим пакет приложения вручную. Помните, что этот шаг можно автоматизировать. Дополнительные сведения см. в разделе Создание пакета приложения.

В этом руководстве мы будем использовать Пример приложения Voting.

  1. В Visual Studio щелкните правой кнопкой мыши проект Voting и выберите пункт Пакет.

    Упаковка приложения

  2. Перейдите в каталог .\service-fabric-dotnet-quickstart\Voting\pkg\Debug. Заархивируйте содержимое в файл с именем Voting.zip. Файл ApplicationManifest.xml должен находиться в корневом каталоге ZIP-файла.

    Сжатие приложения

  3. Переименуйте файл, чтобы изменить расширение с .zip на .sfpkg.

  4. На портале Azure в контейнере Приложения для учетной записи хранения выберите Отправить, а затем отправьте пакет Voting.sfpkg.

    Передача пакета приложения

Теперь приложение подготовлено и можно создать шаблон Resource Manager для развертывания приложения.

Создание шаблона Resource Manager

Пример приложения содержит шаблоны Azure Resource Manager, которые можно использовать для развертывания приложения. Имена фалов шаблонов: UserApp.json и UserApp.Parameters.json.

Примечание.

Файл UserApp.Parameters.json необходимо обновить с использованием имени кластера.

Параметр Описание Пример Комментарии
clusterName Имя кластера, в который выполняется развертывание sf-cluster123
приложений Имя приложения Голосование
версия Идентификатор ресурса, тип приложения и версия приложения. /providers/Microsoft.ServiceFabric/managedClusters/sf-cluster-123/applicationTypes/VotingType/versions/1.0.0 Должно соответствовать ApplicationManifest.xml
serviceName Имя службы VotingWeb Необходим формат ServiceType
serviceTypeName Имя типа службы VotingWebType Должно соответствовать ServiceManifest.xml
appPackageUrl URL-адрес хранилища BLOB-объектов приложения https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg URL-адрес пакета приложения в хранилище BLOB-объектов (процедура для задания 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, чтобы развернуть приложение в группе ресурсов, содержащей кластер.

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

Обновление приложения Service Fabric с помощью Resource Manager

Внимание

Любая служба, развертываемая с помощью шаблона Azure Resource Manager (ARM), должна быть удалена из раздела DefaultServices соответствующего файла ApplicationManifest.xml.

Можно обновить приложение, которое уже развернуто в кластере Service Fabric, по одной из следующих причин.

  • В приложение добавляется новая служба. Определение службы необходимо добавить в файлы service-manifest.xml и application-manifest.xml при добавлении службы в приложение. Чтобы отразить новую версию приложения, необходимо также изменить версию типа приложения с 1.0.0 на 1.0.1 в UserApp.Parameters.json.

    "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), так как нет декларативного способа очистки отдельных ресурсов

Чтобы удалить приложение Service Fabric, которое было развернуто с помощью модели ресурсов приложения в Resource Manager, выполните следующие действия.

  1. Получите ИД ресурса для приложения с помощью командлета Get-AzResource.

    Get-AzResource  -Name <String> | f1
    
  2. Используйте командлет Remove-AzServiceFabricManagedClusterApplication, чтобы удалить ресурсы приложения:

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

Переход с классических на управляемые кластеры

При переносе приложений из классических в управляемые кластеры необходимо убедиться в правильном указании типов, чтобы избежать ошибок.

Следующие элементы вызываются из-за частоты использования, но не должны быть эксклюзивным списком различий.

  • upgradeReplicaSetCheckTimeout теперь является целым числом для управляемого кластера, но строкой для классического SFRP.

Полный список свойств и типов см. в статье Типы ресурсов приложений в управляемых кластерах.

Следующие шаги

Дополнительные сведения о развертывании приложений управляемого кластера: