Модель ресурсов приложения Service Fabric
Существует несколько вариантов развертывания приложений Azure Service Fabric в кластере 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, необходимо иметь учетную запись хранения. Учетная запись хранения используется для подготовки образа приложения.
Можно повторно использовать существующую учетную запись хранения или создать новую для подготовки приложений. Если использовать существующую учетную запись хранения, этот шаг можно пропустить.
Настройка учетной записи хранения
После создания учетной записи хранения создайте контейнер больших двоичных объектов, в котором можно подготавливать приложения. На портале Azure перейдите в учетную запись службы хранилища Azure, в которой нужно сохранить приложения. Выберите BLOB-объекты>Добавить контейнер.
Ресурсы в кластере можно защитить, задав для общего уровня доступа значение частный. Предоставить доступ можно несколькими способами.
- Предоставление доступа к BLOB-объектам Azure и создание очереди данных с использованием RBAC Azure на портале Azure.
- Делегирование доступа с помощью подписанного URL-адреса.
В примере на следующем снимке экрана используется анонимный доступ на чтение для BLOB-объектов.
Подготовка приложения в учетной записи хранения
Перед развертыванием приложения необходимо подготовить приложение в хранилище BLOB-объектов. В этом руководстве мы создадим пакет приложения вручную. Помните, что этот шаг можно автоматизировать. Дополнительные сведения см. в разделе Создание пакета приложения.
В этом руководстве мы будем использовать Пример приложения Voting.
В Visual Studio щелкните правой кнопкой мыши проект Voting и выберите пункт Пакет.
Перейдите в каталог .\service-fabric-dotnet-quickstart\Voting\pkg\Debug. Заархивируйте содержимое в файл с именем Voting.zip. Файл ApplicationManifest.xml должен находиться в корневом каталоге ZIP-файла.
Переименуйте файл, чтобы изменить расширение с .zip на .sfpkg.
На портале Azure в контейнере Приложения для учетной записи хранения выберите Отправить, а затем отправьте пакет 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 | URL-адрес хранилища BLOB-объектов приложения | https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg | URL-адрес пакета приложения в хранилище BLOB-объектов (процедура для задания 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, чтобы развернуть приложение в группе ресурсов, содержащей кластер.
New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose
Обновление приложения Service Fabric с помощью Resource Manager
Внимание
Любая служба, развернутая с помощью определения JSON 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": "Voting~VotingData" }, "serviceTypeName2": { "value": "VotingDataType" }
В приложение добавляется новая версия существующей службы. Примеры включают изменения кода приложения и обновления для версии и имени типа приложения. Для этого обновления обновите UserApp.Parameters.json следующим образом.
"applicationTypeVersion": { "value": "1.0.1" },
Удаление ресурсов приложения
Чтобы удалить приложение, которое было развернуто с помощью модели ресурсов приложения, в Resource Manager выполните следующие действия.
Получите ИД ресурса для приложения с помощью командлета Get-AzResource.
Get-AzResource -Name <String> | f1
Удалите ресурсы приложения с помощью командлета Remove-AzResource.
Remove-AzResource -ResourceId <String> [-Force] [-ApiVersion <String>]
Общие вопросы и ответы
Ошибка: "Имя приложения должно быть префиксом имени службы" Ответ. Убедитесь, что имя службы отформатировано следующим образом: ProfileVetSF~CallTicketDataWebApi.
Следующие шаги
Получение сведений о модели ресурсов приложения