Создание и развертывание рабочих процессов приложений логики на основе одного арендатора с помощью Logic Apps с поддержкой Azure Arc (предварительная версия)

Примечание.

Эта возможность входит в предварительную версию, и на нее распространяются Дополнительные условия использования предварительных версий Microsoft Azure.

С помощью Logic Apps с поддержкой Azure Arc и портала Azure можно создавать и развертывать рабочие процессы приложений логики на основе одного клиента в инфраструктуре Kubernetes, которой вы управляете. Приложения логики выполняются в пользовательском расположении, сопоставленном с кластером Kubernetes с поддержкой Azure Arc, в котором установлен и включен пакет расширений платформы Службы приложений Azure.

Например, этот кластер может быть Службой Azure Kubernetes, Kubernetes без операционной системы или другой службой. Пакет расширений позволяет запускать службы платформы, такие как Azure Logic Apps, Служба приложений Azure и Функции Azure, в кластере Kubernetes.

Дополнительные сведения см. в следующей документации:

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

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

  • Учетная запись Azure с активной подпиской. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись.

  • Среда Kubernetes с кластером Kubernetes с поддержкой Azure Arc и пользовательским расположением, где можно размещать и запускать Azure Logic Apps, Службу приложений Azure и Функции Azure.

    Важно!

    Используйте одно и то же расположение ресурсов для среды Kubernetes, пользовательского расположения и приложения логики.

    При создании расширения набора Службы приложений в кластере Kubernetes можно изменить поведение масштабирования по умолчанию для запуска рабочих процессов приложений логики. При создании расширения с помощью команды Azure CLI, az k8s-extension create, обязательно включите параметр конфигурации keda.enabled=true:

    az k8s-extension create {other-command-options} --configuration-settings "keda.enabled=true"

    Дополнительные сведения см. в следующей документации:

  • Собственное удостоверение Microsoft Entra

    Если рабочие процессы должны использовать любые подключения, размещенные в Azure, например Office 365 Outlook или служба хранилища Azure, приложение логики должно использовать удостоверение Microsoft Entra для проверки подлинности. Logic Apps с поддержкой Azure Arc может выполняться в любой инфраструктуре, но для нее требуется удостоверение с разрешениями на использование размещенных в Azure соединений. Чтобы настроить это удостоверение, создайте регистрацию приложения в идентификаторе Microsoft Entra, который приложение логики использует в качестве требуемого удостоверения.

    Примечание.

    Поддержка управляемого удостоверения в настоящее время недоступна для Logic Apps с поддержкой Azure Arc.

    Чтобы создать регистрацию приложения Microsoft Entra с помощью Azure CLI, выполните следующие действия.

    1. Создайте регистрацию приложения с помощью команды az ad sp create.

    2. Чтобы проверить все данные, выполните команду az ad sp show.

    3. В выходных данных обеих команд найдите и сохраните идентификатор клиента, идентификатор объекта, идентификатор арендатора и значения секрета клиента, которые потребуются вам для последующего использования.

    Чтобы создать регистрацию приложения Microsoft Entra с помощью портал Azure, выполните следующие действия.

    1. Создайте регистрацию приложения Microsoft Entra с помощью портал Azure.

    2. После завершения создания найдите новую регистрацию приложения на портале.

    3. В меню регистрации выберите Обзори сохраните значения идентификатора клиента, идентификатора арендатора и секрета клиента.

    4. Чтобы найти идентификатор объекта, рядом с полем Управляемое приложение в локальном каталоге выберите имя для регистрации приложения. В представлении свойств скопируйте идентификатор объекта.

Создание и развертывание приложений логики

В зависимости от того, хотите ли вы использовать Azure CLI, Visual Studio Code или портал Azure, откройте соответствующую вкладку для просмотра конкретных предварительных требований и шагов.

Перед началом работы вам потребуется следующее:

Проверка версии среды и CLI

  1. Войдите на портал Azure. Убедитесь, что ваша подписка активна, выполнив следующую команду:

    az login
    
  2. Проверьте версию Azure CLI в терминале или в командном окне, выполнив следующую команду:

    az --version
    

    Сведения о последней версии см. в заметках о выпуске.

  3. Если у вас нет последней версии, обновите установку, следуя указаниям в руководстве по установке операционной системы или платформы.

Установка расширения Azure Logic Apps (стандартная версия) для Azure CLI

Установите предварительную версию расширения Azure Logic Apps с одним клиентом (стандартная версия) для Azure CLI, выполнив следующую команду:

az extension add --yes --source "https://aka.ms/logicapp-latest-py2.py3-none-any.whl"

Создать группу ресурсов

Если у вас еще нет группы ресурсов для приложения логики, создайте ее с помощью команды az group create. Если вы еще не настроили подписку по умолчанию для учетной записи Azure, обязательно используйте параметр --subscription с идентификатором или именем подписки. В противном случае использовать параметр --subscription не требуется.

Совет

Чтобы задать подписку по умолчанию, выполните следующую команду и замените MySubscription на имя или идентификатор подписки.

az account set --subscription MySubscription

Например, следующая команда создает группу ресурсов MyResourceGroupName с использованием подписки Azure MySubscription в расположении eastus:

az group create --name MyResourceGroupName 
   --subscription MySubscription 
   --location eastus

Если группа ресурсов успешно создана, provisioningState в выходных данных отображается как Succeeded:

<...>
   "name": "testResourceGroup",
   "properties": {
      "provisioningState": "Succeeded"
    },
<...>

Создание приложения логики

Чтобы создать приложение логики с поддержкой Azure Arc, выполните команду az logicapp create с указанными ниже обязательными параметрами. Для приложения логики, пользовательского расположения и среды Kubernetes необходимо использовать одно и то же расположение ресурсов.

Параметры Description
--name -n Уникальное имя для вашего приложения логики.
--resource-group -g Имя группы ресурсов, в которой нужно создать приложение логики. Если у вас ее пока нет, создайте группу ресурсов.
--storage-account -s Учетная запись хранения для использования с приложением логики. Для учетных записей хранения в одной группе ресурсов используйте строковое значение. Для учетных записей хранения в другой группе ресурсов используйте идентификатор ресурса.
az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation

Чтобы создать приложение логики с поддержкой Azure Arc с помощью частного образа Реестра контейнеров Azure (ACR), выполните команду az logicapp create со следующими обязательными параметрами:

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   --deployment-container-image-name myacr.azurecr.io/myimage:tag
   --docker-registry-server-password MyPassword 
   --docker-registry-server-user MyUsername

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

Чтобы показать сведения о приложении логики с поддержкой Azure Arc, выполните команду az logicapp show со следующими обязательными параметрами:

az logicapp show --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Развертывание приложения логики

Чтобы развернуть приложение логики с поддержкой Azure Arc посредством развертывания с помощью ZIP-файла Kudu Службы приложений Azure, выполните команду az logicapp deployment source config-zip со следующими обязательными параметрами:

Важно!

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

MyStatefulWorkflow1-Folder
MyStatefulWorkflow2-Folder
connections.json
host.json
az logicapp deployment source config-zip --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --src MyBuildArtifact.zip

Запуск приложения логики

Чтобы запустить приложение логики с поддержкой Azure Arc, выполните команду az logicapp start со следующими обязательными параметрами:

az logicapp start --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Остановка приложения логики

Чтобы остановить приложение логики с поддержкой Azure Arc, выполните команду az logicapp stop со следующими обязательными параметрами:

az logicapp stop --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Перезапуск приложения логики

Чтобы перезапустить приложение логики с поддержкой Azure Arc, выполните команду az logicapp restart со следующими обязательными параметрами:

az logicapp restart --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

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

Чтобы удалить приложение логики с поддержкой Azure Arc, выполните команду az logicapp delete со следующими обязательными параметрами:

az logicapp delete --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Настройка проверки подлинности соединения

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

Вместо этого необходимо создать собственную регистрацию приложения в идентификаторе Microsoft Entra. Затем эту регистрацию приложения можно использовать как удостоверение для приложений логики, развернутых и выполняемых в Logic Apps с поддержкой Azure Arc. Дополнительные сведения см. в предварительных требованиях верхнего уровня.

При регистрации приложения вам потребуется идентификатор клиента, идентификатор объекта, идентификатор арендатора и секрет клиента. Если вы используете Visual Studio Code для развертывания, у вас есть встроенный интерфейс для настройки приложения логики с помощью удостоверения Microsoft Entra. Дополнительные сведения см. в статье Создание и развертывание рабочих процессов логических приложений — Visual Studio Code.

Однако если для разработки используется Visual Studio Code, но для развертывания используется Azure CLI или автоматизированные конвейеры, выполните следующие действия.

Настройка параметров соединения и приложения в проекте

  1. В файле connections.json проекта приложения логики найдите объект управляемого соединения authentication. Замените содержимое этого объекта сведениями о регистрации приложения, которые были созданы ранее в предварительных требованиях верхнего уровня:

    "authentication": {
       "type": "ActiveDirectoryOAuth",
       "audience": "https://management.core.windows.net/",
       "credentialType": "Secret",
       "clientId": "@appsetting('WORKFLOWAPP_AAD_CLIENTID')",
       "tenant": "@appsetting('WORKFLOWAPP_AAD_TENANTID')",
       "secret": "@appsetting('WORKFLOWAPP_AAD_CLIENTSECRET')"
    } 
    
  2. В файле local.settings.json проекта приложения логики добавьте идентификатор клиента, идентификатор объекта, идентификатор арендатора и секрет клиента. После развертывания эти параметры становятся параметрами приложения логики.

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "WORKFLOWAPP_AAD_CLIENTID":"<my-client-ID>",
          "WORKFLOWAPP_AAD_OBJECTID":"<my-object-ID",
          "WORKFLOWAPP_AAD_TENANTID":"<my-tenant-ID>",
          "WORKFLOWAPP_AAD_CLIENTSECRET":"<my-client-secret>"
       }
    }
    

Важно!

В случае рабочих сценариев или сред обязательно защитите секреты и конфиденциальные сведения, например, используя хранилище ключей.

Добавление политик доступа

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

Шаблон ARM

В шаблоне Azure Resource Manager (ARM) включите следующее определение ресурса для каждого управляемого соединения API и укажите следующие сведения.

Параметр Описание
<имя_соединения> Имя управляемого соединения API, например office365
<object-ID> Идентификатор объекта для удостоверения Microsoft Entra, ранее сохраненный из регистрации приложения
<ИД клиента> Идентификатор клиента для удостоверения Microsoft Entra, ранее сохраненный из регистрации приложения
{
   "type": "Microsoft.Web/connections/accessPolicies",
   "apiVersion": "2016-06-01",
   "name": "[concat('<connection-name>'),'/','<object-ID>')]",
   "location": "<location>",
   "dependsOn": [
      "[resourceId('Microsoft.Web/connections', parameters('connection_name'))]"
   ],
   "properties": {
      "principal": {
         "type": "ActiveDirectory",
         "identity": {
            "objectId": "<object-ID>",
            "tenantId": "<tenant-ID>"
         }
      }
   }
}

Дополнительные сведения см. в документации Microsoft.Web/connections/accesspolicies (шаблон ARM).

Портал Azure

Для этой задачи используйте ранее сохраненный идентификатор клиента в качестве идентификатора приложения.

  1. На портале Azure найдите приложение логики и откройте его. В меню приложения логики в разделе Рабочие процессы выберите Соединения. Отобразится список всех соединений в рабочих процессах приложения логики.

  2. В разделе Соединения API выберите соединение, в данном примере это office365.

  3. В меню соединения в разделе Параметры выберите Политики доступа>Добавить.

  4. В области Добавление политики доступа в поле поиска найдите и выберите ранее сохраненный идентификатор клиента.

  5. Закончив, нажмите кнопку Добавить.

  6. Повторите эти действия для каждого соединения, размещенного в Azure, в приложении логики.

Автоматизация развертывания DevOps

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

Стандартное развертывание (без контейнера)

Если вы используете ZIP-развертывание для развертывания приложения логики, не нужно настраивать реестр Docker для размещения образов контейнеров. Несмотря на то, что приложения логики в Kubernetes технически выполняются в контейнерах, Logic Apps на основе Azure Arc управляет этими контейнерами за вас. Для этого сценария выполните следующие задачи при настройке инфраструктуры.

В шаблоне Azure Resource Manager (ARM) включите следующие значения.

Позиция Свойство JSON Description
Местонахождение location Используйте расположение (регион Azure), совпадающее с вашим пользовательским расположением и расположением среды Kubernetes. Для приложения логики, пользовательского расположения и среды Kubernetes необходимо использовать одно и то же расположение ресурсов.

Примечание. Это значение не совпадает с именем пользовательского расположения.

Тип приложения kind Тип развертываемого приложения, чтобы платформа Azure могла опознать ваше приложение. Для Azure Logic Apps эти сведения выглядят аналогично показанному в следующем примере: kubernetes,functionapp,workflowapp,linux
Расширенное расположение extendedLocation Для этого объекта требуется "name" вашего пользовательского расположения для среды Kubernetes, а параметр "type" должен иметь значение "CustomLocation".
Идентификатор ресурса плана размещения serverFarmId Идентификатор ресурса связанного плана Служба приложений отформатирован следующим образом:

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

строка подключения к хранилищу; AzureWebJobsStorage Строка подключения для учетной записи хранения

Важно. Необходимо указать строку подключения для своей учетной записи хранения в шаблоне ARM. В случае рабочих сценариев или сред обязательно защитите секреты и конфиденциальные сведения, например, используя хранилище ключей.

Шаблон ARM

В следующем примере продемонстрировано определение ресурса Logic Apps с поддержкой Azure Arc, которое вы можете использовать в своем шаблоне ARM. Дополнительные сведения см. в документации Microsoft.Web/sites template format (JSON).

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": "kubernetes,functionapp,workflowapp,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "clientAffinityEnabled": false,
      "name": "[parameters('name')]",
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "node"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "Node|12"
      }
   }
}

Контейнерное развертывание

Если вы предпочитаете использовать средства контейнеров и процессы развертывания, вы можете контейнеризовать приложения логики и развернуть их в Logic Apps с поддержкой Azure Arc. Для этого сценария выполните следующие высокоуровневые задачи при настройке инфраструктуры.

  • Настройте реестр Docker для размещения образов контейнеров.

  • Чтобы контейнеризовать приложение логики, добавьте следующий Dockerfile в корневую папку проекта приложения логики и следуйте инструкциям по созданию и публикации образа в реестре Docker. Например, см. Учебник по созданию и развертыванию образов контейнеров в облаке с помощью задач реестра контейнеров Azure.

    Примечание.

    Если в качестве поставщика хранилища используется SQL, убедитесь, что вы используете образ функций Azure 3.3.1 или более поздней версии.

    FROM mcr.microsoft.com/azure-functions/node:3.3.1
    ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true \
    FUNCTIONS_V2_COMPATIBILITY_MODE=true
    COPY . /home/site/wwwroot
    RUN cd /home/site/wwwroot
    
  • Сообщите поставщику ресурсов, что вы создаете приложение логики в Kubernetes.

  • В шаблоне развертывания укажите реестр Docker и образ контейнера, в котором планируется выполнить развертывание. Azure Logic Apps на основе одного клиента использует эти сведения для получения образа контейнера из реестра Docker.

  • Включите план службы приложений в развертывание. Дополнительные сведения см. в разделе Включение плана службы приложений в развертывание.

В шаблоне Azure Resource Manager (ARM) включите следующие значения.

Позиция Свойство JSON Description
Местонахождение location Используйте расположение (регион Azure), совпадающее с вашим пользовательским расположением и расположением среды Kubernetes. Для приложения логики, пользовательского расположения и среды Kubernetes необходимо использовать одно и то же расположение ресурсов.

Примечание. Это значение не совпадает с именем пользовательского расположения.

Тип приложения kind Тип развертываемого приложения, чтобы платформа Azure могла опознать ваше приложение. Для Azure Logic Apps эти сведения выглядят аналогично показанному в следующем примере: kubernetes,functionapp,workflowapp,container
Расширенное расположение extendedLocation Для этого объекта требуется "name" вашего пользовательского расположения для среды Kubernetes, а параметр "type" должен иметь значение "CustomLocation".
Имя контейнера linuxFxVersion Имя контейнера, отформатированное следующим образом: DOCKER\|<container-name>
Идентификатор ресурса плана размещения serverFarmId Идентификатор ресурса связанного плана Служба приложений отформатирован следующим образом:

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

строка подключения к хранилищу; AzureWebJobsStorage Строка подключения для учетной записи хранения

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

Для ссылки на реестр и образ контейнера Docker включите следующие значения в шаблон:

Позиция Свойство JSON Description
URL-адрес сервера реестра Docker DOCKER_REGISTRY_SERVER_URL URL-адрес для сервера реестра Docker
Сервер реестра Docker DOCKER_REGISTRY_SERVER_USERNAME Имя пользователя для доступа к серверу реестра Docker
Пароль для сервера реестра Docker DOCKER_REGISTRY_SERVER_PASSWORD Пароль для доступа к серверу реестра Docker

Шаблон ARM

В следующем примере продемонстрировано определение ресурса Logic Apps с поддержкой Azure Arc, которое вы можете использовать в своем шаблоне ARM. Дополнительные сведения см. в документации Microsoft.Web/sites template format (ARM template).

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": " kubernetes,functionapp,workflowapp,container",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "name": "[parameters('name')]",
      "clientAffinityEnabled": false,
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "node"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }, 
            {
               "name": "DOCKER_REGISTRY_SERVER_URL",
               "value": "<docker-registry-server-URL>"
            },
            { 
               "name": "DOCKER_REGISTRY_SERVER_USERNAME",
               "value": "<docker-registry-server-username>"
            },
            {
               "name": "DOCKER_REGISTRY_SERVER_PASSWORD",
               "value": "<docker-registry-server-password>"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "DOCKER|<container-name>"
      }
   }
}

Включение плана службы приложений в развертывание

Независимо от типа развертывания (стандартное или с контейнером) необходимо включить в него план службы приложений. Несмотря на то что этот план менее релевантен для среды Kubernetes, для развертывания, стандартного или с контейнером, по-прежнему требуется план службы приложений.

Хотя другие параметры создания обычно обрабатывают подготовку ресурса Azure для этого плана, если в развертываниях используются шаблоны "инфраструктура как код", необходимо явно создать ресурс Azure для плана. Ресурс плана размещения не изменяется, изменяются только сведения sku.

В шаблоне Azure Resource Manager (ARM) включите следующие значения.

Позиция Свойство JSON Description
Местонахождение location Используйте расположение (регион Azure), совпадающее с вашим пользовательским расположением и расположением среды Kubernetes. Для приложения логики, пользовательского расположения и среды Kubernetes необходимо использовать одно и то же расположение ресурсов.

Примечание. Это значение не совпадает с именем пользовательского расположения.

Вид kind Типом развертываемого плана службы приложений должен быть kubernetes,linux.
Расширенное расположение extendedLocation Для этого объекта требуется "name" вашего пользовательского расположения для среды Kubernetes, а параметр "type" должен иметь значение "CustomLocation".
Имя плана размещения name Имя плана службы приложений
Уровень плана sku: tier Уровень плана службы приложений, K1
Имя плана sku: name Имя плана службы приложений, Kubernetes

Шаблон ARM

В следующем примере описывается определение ресурса плана службы приложений, которое можно использовать с развертыванием приложения. Дополнительные сведения см. в документации Microsoft.Web/serverfarms template format (ARM template).

{
   "type": "Microsoft.Web/serverfarms",
   "apiVersion": "2020-12-01",
   "location": "<location>",
   "name": "<hosting-plan-name>",
   "kind": "kubernetes,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
   },
   "sku": {
      "tier": "Kubernetes",
      "name": "K1", 
      "capacity": 1
   },
   "properties": {
      "kubeEnvironmentProfile": {
         "id": "[parameters('kubeEnvironmentId')]"
      }
   }
}

Изменение поведения масштабирования по умолчанию

Logic Apps с поддержкой Azure Arc автоматически управляет масштабированием для приложений логики на основе количества заданий в очереди серверного хранилища. Однако можно изменить поведение при масштабировании по умолчанию.

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

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

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

Предварительные требования для изменения масштаба

В кластере Kubernetes с поддержкой Azure Arc в созданном ранее расширении пакета служб приложений для свойства keda.enabled должно быть задано значение true. Дополнительные сведения см. в предварительных требованиях верхнего уровня.

Изменение порога масштабирования

В Logic Apps с поддержкой Azure Arc длина очереди заданий активирует событие масштабирования и устанавливает порог, определяющий частоту масштабирования для приложения логики. Можно изменить длину очереди заданий, для которой в качестве значения по умолчанию задано 20. Чтобы менять масштаб реже, увеличьте длину очереди. Чтобы менять масштаб чаще, уменьшите длину очереди. Может потребоваться выполнять этот процесс методом проб и ошибок.

Чтобы изменить длину очереди, в файле host.json на корневом уровне проекта приложения логики задайте свойство Runtime.ScaleMonitor.KEDA.TargetQueueLength, например:

"extensions": {
   "workflow": {
      "settings": {
         "Runtime.ScaleMonitor.KEDA.TargetQueueLength": "10"
      }
   }
}

Изменение максимальной пропускной способности

В существующем ресурсе приложения логики можно изменить максимальное число экземпляров рабочих ролей. По умолчанию оно равно 2. Это значение управляет верхним пределом того, сколько экземпляров рабочих ролей могут отслеживать очереди заданий.

Чтобы изменить это максимальное значение, используйте Azure CLI (только для создания приложения логики) и портал Azure.

Azure CLI

Чтобы создать приложение логики, выполните команду az logicapp create со следующими параметрами:

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 1] [--max-worker-count 4]

Чтобы настроить максимальное число экземпляров, используйте параметр --settings:

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription
   --settings "K8SE_APP_MAX_INSTANCE_COUNT=10"

Портал Azure

В параметрах приложения логики на основе одного клиента добавьте или измените значение параметра K8SE_APP_MAX_INSTANCE_COUNT, выполнив следующие действия.

  1. На портале Azure найдите приложение логики на основе одного клиента и откройте его.

  2. В меню приложения логики в разделе Параметры выберите Настройка.

  3. В области Конфигурация в разделе Параметры приложения добавьте новый параметр приложения или измените существующее значение, если оно уже добавлено.

    1. Выберите Создать параметр приложение и добавьте параметр K8SE_APP_MAX_INSTANCE_COUNT с максимальным необходимым значением.

    2. Измените существующее значение параметра K8SE_APP_MAX_INSTANCE_COUNT.

  4. Сохраните изменения, когда закончите.

Изменение минимальной пропускной способности

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

Чтобы изменить это минимальное значение, используйте Azure CLI или портал Azure.

Azure CLI

Для существующего ресурса приложения логики выполните команду az logicapp scale со следующими параметрами:

az logicapp scale --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --instance-count 5 

Чтобы создать приложение логики, выполните команду az logicapp create со следующими параметрами:

az logicapp create --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 2] [--max-worker-count 4]

Портал Azure

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

  1. На портале Azure найдите приложение логики на основе одного клиента и откройте его.

  2. В меню приложения логики в разделе Параметры выберите Горизонтально увеличить масштаб.

  3. На панели Горизонтальное увеличение масштаба перетащите ползунок минимального числа экземпляров в нужное значение.

  4. Сохраните изменения, когда закончите.

Устранение неполадок

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

Доступ к параметрам и конфигурации приложения

Чтобы получить доступ к параметрам приложения, выполните команду az logicapp config appsettings со следующими параметрами:

az logicapp config appsettings list --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Чтобы настроить параметр приложения, выполните команду az logicapp config appsettings set с указанными ниже параметрами. Обязательно используйте параметр --settings с именем и значением нужного параметра.

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription 
   --settings "MySetting=1"

Чтобы удалить параметр приложения, выполните команду az logicapp config appsettings delete с указанными ниже параметрами. Обязательно используйте параметр --setting-names с именем параметра, который необходимо удалить.

az logicapp config appsettings delete --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription
   --setting-names MySetting

Просмотр свойств приложения логики

Чтобы просмотреть сведения и свойства приложения, выполните команду az logicapp show со следующими параметрами:

az logicapp show --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

Мониторинг активности рабочего процесса

Чтобы просмотреть действие для рабочего процесса в приложении логики, выполните следующие действия.

  1. Найдите свое развернутое приложение логики на портале Azure и откройте его.

  2. В меню приложения логики выберите Рабочие процессы, а затем выберите свой рабочий процесс.

  3. В меню «Рабочий процесс» выберите пункт Монитор.

Сбор журналов

Чтобы получить записанные в журнал данные о приложении логики, включите Application Insights в приложении логики, если оно еще не включено.

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