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


Использование функций Azure в приложениях контейнеров Azure

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

Предпосылки

Ресурс Описание
Учетная запись Azure Учетная запись Azure с активной подпиской.

Если у вас нет учетной записи, вы можете создать ее бесплатно.
Учетная запись хранения Azure Учетная запись хранения BLOB-объектов для хранения состояния функций Azure.
Azure Application Insights Экземпляр Azure Application Insights для сбора данных о приложении-контейнере.

Создание приложения "Функции"

Ниже показано, как использовать образец образа контейнера для создания вашего приложения контейнера. Если вы хотите использовать эту процедуру с пользовательским образом контейнера, см. статью "Создание первого приложения-функции в приложениях контейнеров Azure".

  1. Перейдите на портал Azure и найдите приложения-контейнеры в строке поиска.

  2. Выберите Приложения-контейнеры.

  3. Нажмите кнопку "Создать".

  4. Выберите Container App.

  5. В разделе "Основные сведения" введите следующие значения.

    В окне Сведения о проекте:

    Недвижимость Ценность
    Подписка Выберите подписку Azure.
    Группа ресурсов Выберите "Создать группу ресурсов", назовите ее my-aca-functions-group и нажмите кнопку "ОК".
    Имя приложения-контейнера Введите my-aca-functions-app.
  6. Рядом с параметром "Оптимизация для функций Azure" установите флажок.

    Скриншот портала Azure при создании контейнерного приложения, предварительно настроенного для функций Azure.

  7. В разделе "Среда приложений контейнеров" введите следующее:

    Недвижимость Ценность
    Регион Выберите ближайший к вам регион.
    Среда Контейнеров приложений Выберите Создать новую среду.
  8. В окне установки среды введите:

    Недвижимость Ценность
    Имя среды Введите my-aca-functions-environment
    Избыточность зон Выберите Отключено.
  9. Нажмите кнопку "Создать", чтобы сохранить значения.

  10. Нажмите кнопку "Далее": контейнер для переключения в раздел "Контейнер ".

  11. Рядом с использовать образ быстрой настройки оставьте этот флажок незаполненным.

  12. В разделе сведений о контейнере введите следующие значения.

    Недвижимость Ценность
    Имя Это поле предварительно заполнено выбранным вариантом в предыдущем разделе.
    Источник изображения Выберите Docker Hub или другие реестры
    Подписка Выберите подписку.
    Тип изображения Выберите Общедоступный.
    Сервер входа в реестр Введите mcr.microsoft.com
    Изображение и тег Введите k8se/quickstart-functions:latest
  13. В разделе переменные среды введите значения для следующих переменных:

    • AzureWebJobsStorage
    • APPINSIGHTS_INSTRUMENTATIONKEY или APPLICATIONINSIGHTS_CONNECTION_STRING

    Введите значения управляемого удостоверения или строки подключения для этих переменных. Используйте управляемое удостоверение.

    Переменная AzureWebJobsStorage является обязательной строкой подключения учетной записи хранения Azure для функций Azure. Эта учетная запись хранения хранит журналы выполнения функций, управляет триггерами и привязками и сохраняет состояние для устойчивых функций.

    Application Insights — это служба мониторинга и диагностики, которая предоставляет аналитические сведения о производительности и использовании функций Azure. Этот мониторинг помогает отслеживать частоту запросов, время отклика, частоту сбоев и другие метрики.

  14. Нажмите "Next > Ingress", чтобы перейти в раздел "Ingress" и введите следующие значения.

    Недвижимость Ценность
    Вход Отметьте флажок "Включен" для разрешения доступа.
    Входящий трафик Выберите "Принять трафик" из любого места.
    Тип входящего трафика Выберите HTTP.
    Целевой порт Введите 80.
  15. Выберите Review + Create.

  16. Нажмите кнопку "Создать".

  17. По завершении развертывания выберите элемент Перейти к ресурсу.

  18. На странице обзора выберите ссылку рядом с URL-адресом приложения , чтобы открыть приложение на новой вкладке браузера.

  19. Добавьте /api/HttpExample в конец URL-адреса.

    Сообщение о том, что функция триггера HTTP обрабатывает запрос, возвращается в браузере.

Предпосылки

Создание приложения "Функции"

Чтобы войти в Azure из ИНТЕРФЕЙСА командной строки, выполните следующую команду и следуйте инструкциям, чтобы завершить процесс проверки подлинности.

  1. Войдите в Azure.

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

    az upgrade
    
  3. Установите или обновите расширение приложений контейнеров Azure для интерфейса командной строки.

    Если при выполнении az containerapp команд в Azure CLI или командлетах из Az.App модуля PowerShell возникают ошибки о отсутствующих параметрах, убедитесь, что у вас установлена последняя версия расширения "Приложения контейнеров Azure".

    az extension add --name containerapp --allow-preview true --upgrade
    
    
    

    Теперь, когда установлено текущее расширение или модуль, зарегистрируйте пространства имен Microsoft.App и Microsoft.OperationalInsights.

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    
  4. Создайте переменные среды.

    RESOURCE_GROUP_NAME="my-aca-functions-group"
    CONTAINER_APP_NAME="my-aca-functions-app"
    ENVIRONMENT_NAME="my-aca-functions-environment"
    LOCATION="westus"
    STORAGE_ACCOUNT_NAME="storage-account-name"
    STORAGE_ACCOUNT_SKU="storage-account-sku"
    APPLICATION_INSIGHTS_NAME="application-insights-name"
    
  5. Создайте группу ресурсов.

    az group create \
      --name $RESOURCE_GROUP_NAME \
      --location $LOCATION \
      --output none
    
  6. Создайте среду "Приложения контейнеров".

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION \
        --output none
    
  7. Создание учетной записи хранения

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --sku $STORAGE_ACCOUNT_SKU
    
  8. Получение строки подключения учетной записи хранилища

    $STORAGE_ACCOUNT_CONNECTION_STRING = az storage account show-connection-string \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  9. Создание Службы "Аналитика приложений Azure"

    az monitor app-insights component create \
    --app $APPLICATION_INSIGHTS_NAME \
    --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --application-type web
    
  10. Получение строки подключения для Application Insights

    $APPLICATION_INSIGHTS_CONNECTION_STRING = az monitor app-insights component show \
      --app $APPLICATION_INSIGHTS_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  11. Создайте приложение контейнера Функций Azure.

    az containerapp create \
      --resource-group $RESOURCE_GROUP_NAME \
      --name $CONTAINER_APP_NAME \
      --environment $ENVIRONMENT_NAME \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0 \
      --ingress external \
      --target-port 80 \
      --kind functionapp \
      --query properties.outputs.fqdn
    

    Эта команда возвращает URL-адрес приложения "Функции". Скопируйте этот URL-адрес и вставьте его в веб-браузер.

  12. Создание приложения контейнера Azure Functions с --revisions-mode multiple для сценария с несколькими ревизиями

    az containerapp create \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $CONTAINERAPPS_ENVIRONMENT \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0 \
      --target-port 80 \
      --ingress external \
      --kind functionapp \
      --workload-profile-name $WORKLOAD_PROFILE_NAME \
      --env-vars AzureWebJobsStorage="$STORAGE_ACCOUNT_CONNECTION_STRING" APPLICATIONINSIGHTS_CONNECTION_STRING="$APPLICATION_INSIGHTS_CONNECTION_STRING"
    
  13. Для многоверсионного сценария обновите приложение-контейнер и разделите трафик.

    az containerapp update \
      --resource-group $RESOURCE_GROUP \
      --name $CONTAINERAPP_NAME \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:latest
    
    az containerapp ingress traffic set -resource-group \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --revision-weight {revision1_name}=50 \
      --revision-weight {revision2_name}=50
    
  14. Добавьте /api/HttpExample в конец URL-адреса.

    Сообщение о том, что функция триггера HTTP обрабатывает запрос, возвращается в браузере.