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


Настройка развертывания DevOps для приложений логики Уровня "Стандартный" в azure Logic Apps с одним клиентом

Область применения: Azure Logic Apps (стандартная версия)

В этом руководстве в основном показано, как настроить развертывание для проекта приложения логики уровня "Стандартный" в Visual Studio Code в инфраструктуре с помощью средств и процессов DevOps. Если приложение логики уровня "Стандартный" существует в портал Azure вместо этого, вы можете скачать артефакты приложения логики для использования с развертыванием DevOps. В зависимости от того, хотите ли вы использовать GitHub или Azure DevOps, выберите путь и средства, которые лучше всего работают в сценарии развертывания.

Если у вас нет стандартного приложения логики, вы по-прежнему можете следовать этому руководству с помощью связанных примеров проектов приложения логики "Стандартный" и примеров развертывания в Azure через GitHub или Azure DevOps. Дополнительные сведения см. в обзоре развертывания DevOps для Azure Logic Apps с одним клиентом.

Необходимые компоненты

Развертывание ресурсов инфраструктуры

Чтобы попробовать работу с развертыванием DevOps без предыдущего приложения логики уровня "Стандартный" или настройки инфраструктуры, используйте следующие примеры проектов, чтобы настроить развертывание для примера приложения логики "Стандартный" и инфраструктуры на основе того, следует ли использовать GitHub или Azure DevOps:

Оба примера включают следующие ресурсы, используемые приложением логики "Стандартный" для выполнения:

Имя ресурса Обязательное поле Описание
Стандартное приложение логики Да Этот ресурс Azure содержит рабочие процессы, выполняемые в службе Azure Logic Apps с одним клиентом.

Важно. В проекте приложения логики каждый рабочий процесс имеет workflow.json файл, содержащий определение рабочего процесса, который включает определения триггера и действия.
Подключения API Да, если существуют подключения API Эти ресурсы Azure определяют любые управляемые подключения API, используемые рабочими процессами для выполнения управляемых операций с соединителем, таких как Office 365, SharePoint и т. д.

Важно! В проекте приложения логики файл connections.json содержит метаданные, конечные точки и ключи для любых управляемых подключений API и функций Azure, используемых рабочими процессами. Чтобы в каждой среде использовать разные подключения и функции, не забудьте параметризовать этот файл connections.json и обновить конечные точки.

Дополнительные сведения см. в статье Ресурсы подключения API и политики доступа.
План размещения функций уровня "Премиум" или службы приложений Да В этом ресурсе Azure указываются ресурсы размещения, используемые для запуска приложения логики (например, вычисление, обработка, хранение, сетевые подключения и т. д.).

Важно. В текущем интерфейсе ресурс приложения логики "Стандартный" требует плана размещения рабочего процесса "Стандартный", который основан на плане размещения Функции Azure Premium.
Учетная запись хранения Azure Да, для рабочих процессов с отслеживанием и без отслеживания состояния В этом ресурсе Azure хранятся метаданные, ключи для управления доступом, состояние, входные и выходные данные, журнал выполнения и другие сведения о рабочих процессах.
Application Insights Необязательно Этот ресурс Azure предоставляет возможности мониторинга рабочих процессов.
Шаблон Azure Resource Manager (ARM) Необязательно Этот ресурс Azure определяет базовое развертывание инфраструктуры, которое можно использовать повторно или экспортировать.

Ресурсы подключения API и политики доступа

В Azure Logic Apps с одним клиентом каждый ресурс подключения к управляемому API в рабочем процессе требует связанной политики доступа. Эта политика требует удостоверения приложения логики, чтобы предоставить правильные разрешения для доступа к управляемой инфраструктуре соединителя. Прилагаемые образцы проектов включают шаблон ARM, содержащий все необходимые ресурсы инфраструктуры, в том числе эти политики доступа.

Например, на следующей схеме показаны зависимости между проектом приложения логики "Стандартный" и ресурсами инфраструктуры:

Концептуальная схема показывает зависимости инфраструктуры для проекта приложения логики

Скачивание артефактов приложения логики уровня "Стандартный" на портале

Если приложение логики "Стандартный" находится в портал Azure, можно скачать ZIP-файл, содержащий файлы артефактов приложения логики, включая workflow.json, connections.json, host.json и local.settings.json.

  1. В портал Azure найдите и откройте ресурс приложения логики "Стандартный".

  2. В меню приложения логики выберите Overview (Обзор).

  3. На панели инструментов "Обзор" выберите "Скачать содержимое приложения". В появившемся поле подтверждения нажмите кнопку "Скачать".

  4. Когда появится запрос, выберите "Сохранить как", перейдите к нужной локальной папке и нажмите кнопку "Сохранить ", чтобы сохранить ZIP-файл.

  5. Извлеките ZIP-файл.

  6. В Visual Studio Code откройте папку, содержащую распакуированные файлы.

    При открытии папки Visual Studio Code автоматически создает рабочую область.

  7. Измените содержимое папки, чтобы включить только папки и файлы, необходимые для развертывания с помощью DevOps.

  8. По завершении сохраните изменения.

Создание и развертывание приложения логики (zip-развертывание)

Вы можете настроить конвейеры сборки и выпуска либо внутри, ни за пределами Azure, которые развертывают приложения логики уровня "Стандартный" в инфраструктуре.

Сборка проекта

  1. Отправьте проект приложения логики уровня "Стандартный" и файлы артефактов в исходный репозиторий, например GitHub или Azure DevOps.

  2. Настройте конвейер сборки на основе типа проекта приложения логики, выполнив следующие соответствующие действия:

    Тип проекта Описание и действия
    На основе NuGet Структура проекта с использованием NuGet основана на платформе .NET Framework. Для сборки этих проектов обязательно выполните этапы сборки .NET Standard. Дополнительные сведения см. в документации Создание пакета NuGet с помощью MSBuild.
    На основе пакета Проект на основе набора расширений не зависит от языка и не требует каких-либо действий по сборке, зависящих от языка.
  3. Запакуйте файлы проекта с помощью любого нужного метода.

    Внимание

    Убедитесь, что ZIP-файл содержит фактические артефакты сборки проекта на корневом уровне, включая все папки рабочего процесса, файлы конфигурации, такие как host.json, connections.json, local.settings.json и другие связанные файлы. Не добавляйте дополнительные папки и не помещайте артефакты в папки, которые до этого отсутствовали в структуре проекта.

    Например, в следующем списке показан пример структуры файлов MyBuildArtifacts.zip :

    MyStatefulWorkflow1-Folder
    MyStatefulWorkflow2-Folder
    connections.json
    host.json
    local.settings.json
    

Перед выпуском в Azure

Управляемые подключения API в файле connections.json проекта приложения логики создаются непосредственно для локального использования в Visual Studio Code. Прежде чем вы сможете освободить артефакты проекта из Visual Studio Code в Azure, необходимо обновить эти артефакты. Для использования управляемых подключений API в Azure необходимо обновить их методы проверки подлинности, чтобы они имели правильный формат для использования в Azure.

Обновление типа проверки подлинности

Для каждого управляемого подключения API, использующего проверку подлинности, необходимо обновить authentication объект из локального формата в Visual Studio Code в формате портал Azure, как показано в первом и втором примерах кода соответственно:

Формат Visual Studio Code

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/westus/managedApis/sql"
         },
         "connection": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
         },
         "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
         "authentication": {
            "type": "Raw",
            "scheme": "Key",
            "parameter": "@appsetting('sql-connectionKey')"
         }
      }
   }
}

Формат портала Azure

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/westus/managedApis/sql"
         },
         "connection": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
         },
         "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
         "authentication": {
            "type": "ManagedServiceIdentity",
         }
      }
   }
}

Создание подключений API по мере необходимости

Если вы развертываете приложение логики уровня "Стандартный" в регионе Azure или подписке, отличной от локальной среды разработки, перед развертыванием необходимо также создать эти управляемые подключения API. Самый простой способ создания управляемых подключений API — развертывание шаблона Azure Resource Manager (шаблона ARM).

В следующем примере показано определение ресурса подключения API, управляемого SQL, в шаблоне ARM:

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows", 
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

Чтобы найти необходимые значения для properties объекта, чтобы завершить определение ресурса подключения, используйте следующий API для определенного соединителя:

GET https://management.azure.com/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/{connector-name}?api-version=2016-06-01

В ответе найдите connectionParameters объект, содержащий необходимые сведения для завершения определения ресурса для этого конкретного соединителя. Далее приведен пример определения ресурса для управляемого подключения SQL:

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows",
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

В качестве альтернативы можно записать и проверить трассировку сети при создании подключения с помощью конструктора рабочих процессов в Azure Logic Apps. PUT Найдите вызов, который отправляется в API управляемого соединителя, как описано ранее, и просмотрите текст запроса для всех необходимых сведений.

Определение ресурсов локального шлюза данных

Если подключение использует локальный ресурс шлюза данных, это определение ресурса существует отдельно от определения ресурса соединителя. Сведения об определении ресурсов шлюза данных см. в статье "Автоматизация развертывания для Azure Logic Apps" с помощью шаблонов Azure Resource Manager и Microsoft.Web connectionGateways.

Выпуск в Azure

Чтобы настроить конвейер выпуска, развертываемого в Azure, выполните соответствующие шаги для GitHub, Azure DevOps или Azure CLI.

Для развертываний GitHub можно развернуть приложение логики с помощью GitHub Actions (например, используя GitHub Actions в Функциях Azure). Для этого действия необходимо передать следующие сведения:

  • Имя приложения логики, используемое для развертывания
  • ZIP-файл, содержащий фактические артефакты сборки, включая все папки рабочего процесса, файлы конфигурации, такие как host.json, connections.json, local.settings.json и любые другие связанные файлы.
  • Профиль публикации, используемый для проверки подлинности.
- name: 'Run Azure Functions Action'
  uses: Azure/functions-action@v1
  id: fa
  with:
   app-name: 'MyLogicAppName'
   package: 'MyBuildArtifact.zip'
   publish-profile: 'MyLogicAppPublishProfile'

Дополнительные сведения см. в статье "Непрерывная доставка" с помощью GitHub Action.

После развертывания в Azure

У каждого подключения API есть политики доступа. После завершения развертывания ZIP необходимо открыть ресурс приложения логики уровня "Стандартный" в портал Azure и создать политики доступа для каждого подключения API, чтобы настроить разрешения для развернутого приложения логики. При развертывании ZIP-файла параметры приложения не создаются автоматически. После развертывания необходимо создать эти параметры приложения на основе файла local.settings.json в проекте приложения логики.

Мы хотели бы узнать о вашем опыте работы со службой Azure Logic Apps с одним клиентом!