Размещение Функции Azure приложений контейнеров Azure

Функции Azure обеспечивает интегрированную поддержку для разработки, развертывания и управления контейнерными приложениями-функциями Приложения контейнеров Azure. Используйте службы "Приложения контейнеров Azure" для размещения контейнеров приложений-функций, если необходимо запустить функции на основе событий в Azure в той же среде, что и другие микрослужбы, API, веб-сайты, рабочие процессы или любые размещенные в контейнере программы. Размещение контейнерных приложений позволяет выполнять функции в среде на основе Kubernetes с встроенной поддержкой мониторинга с открытым кодом, mTLS, Dapr и KEDA.

Внимание

Поддержка размещения приложений-функций в приложениях контейнеров Azure в настоящее время доступна в предварительной версии.

Интеграция с контейнерными приложениями позволяет использовать существующую модель программирования функций для написания кода функции на предпочитаемом языке программирования или платформе, поддерживаемой Функции Azure. Вы по-прежнему получаете триггеры и привязки функций с масштабированием на основе событий. Контейнерные приложения используют возможности базовых Служба Azure Kubernetes (AKS) при удалении сложности работы с API Kubernetes.

Эта интеграция также означает, что можно использовать существующие клиентские средства функций и портал Azure для создания контейнеров, развертывания контейнеров приложений-функций в контейнерных приложениях и настройки непрерывного развертывания. Конфигурации сети и наблюдаемости определяются на уровне среды приложения контейнера и применяются ко всем микрослужбам, работающим в среде контейнеров, включая приложение-функцию. Вы также получаете другие облачные возможности контейнерных приложений, включая KEDA, Dapr, Envoy. Вы по-прежнему можете использовать приложение Аналитика для мониторинга выполнения функций.

Профили размещения и рабочей нагрузки

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

Размещение контейнерных приложений-функций поддерживается во всех регионах, поддерживающих контейнерные приложения.

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

Функции Azure в приложениях контейнеров Azure поддерживает размещение gpu в выделенном плане с профилями рабочей нагрузки.

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

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

Функции в контейнерах

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

При создании проекта "Функции" с помощью Функции Azure основных инструментов и включения --docker параметра Core Tools создает Dockerfile с правильным базовым изображением, которое можно использовать в качестве отправной точки при создании контейнера.

Внимание

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

Команда функций привержена публикации ежемесячных обновлений для этих базовых образов. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Необходимо регулярно обновлять контейнер из последнего базового образа и повторно развертывать обновленную версию контейнера.

При внесении изменений в код функций необходимо перестроить и повторно опубликовать образ контейнера. Дополнительные сведения см. в разделе "Обновление образа в реестре".

Параметры развертывания

Функции Azure в настоящее время поддерживает следующие методы развертывания контейнерного приложения-функции в приложениях контейнеров Azure:

Настройка правил масштабирования

Функции Azure в приложениях контейнеров предназначено для настройки параметров и правил масштабирования в зависимости от целевого объекта события. Вам не нужно беспокоиться о настройке масштабируемых объектов KEDA. При создании или изменении приложения-функции можно задать минимальное и максимальное количество реплика. Следующая команда Azure CLI задает минимальное и максимальное число реплика при создании нового приложения-функции в среде контейнеров приложений из Реестр контейнеров Azure:

az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD> --registry-server <LOGIN_SERVER>

Следующая команда задает одинаковое минимальное и максимальное количество реплика в существующем приложении-функции:

az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1

Управляемые группы ресурсов

Функция Azure в контейнерных приложениях запускает функциональные ресурсы контейнеров в специально управляемых группах ресурсов, что помогает защитить согласованность приложений, предотвращая непреднамеренное или несанкционированное изменение или удаление ресурсов в управляемой группе пользователями, группами или принципами службы. Эта управляемая группа ресурсов создается при первом создании ресурсов приложения-функции в среде контейнеров. Ресурсы контейнерных приложений, необходимые приложению-контейнерной функции, запускаются в этой управляемой группе ресурсов, и все другие приложения-функции, созданные в той же среде, используют эту существующую группу. Управляемая группа ресурсов автоматически удаляется после удаления всех ресурсов контейнера приложения-функции из среды. Хотя управляемая группа ресурсов видна, любые попытки изменить или удалить управляемую группу ресурсов приводят к ошибке. Чтобы удалить управляемую группу ресурсов из среды, удалите все ресурсы контейнера приложения-функции и удаляется для вас. Если у вас возникли проблемы с этими группами управляемых ресурсов, обратитесь в службу поддержки.

Рекомендации по размещению контейнерных приложений

Имейте в виду следующие рекомендации при развертывании контейнеров приложений-функций в контейнерных приложениях:

  • Хотя все триггеры можно использовать, при запуске в приложениях контейнеров могут динамически масштабироваться только следующие триггеры (от нуля экземпляров).
    • HTTP
    • Хранилище очередей Azure
    • Служебная шина Azure
    • Центры событий Azure
    • Kafka*
    • Таймер
      *Значение ssl протокола не поддерживается при размещении в приложениях контейнеров. Используйте другое значение протокола.
  • Для встроенных определений политик контейнерных приложений в настоящее время применяются только политики уровня среды к Функции Azure контейнерам.
  • В настоящее время невозможно переместить развертывание приложения-функции, размещенного в контейнерных приложениях, между группами ресурсов или между подписками. Вместо этого необходимо повторно создать существующее контейнерное развертывание приложения в новой группе ресурсов, подписке или регионе.
  • При использовании контейнерных приложений у вас нет прямого доступа к API Kubernetes нижнего уровня.
  • Расширение containerapp конфликтует с расширением appservice-kube в Azure CLI. Если вы ранее опубликовали приложения в Azure Arc, запустите az extension list и убедитесь, что appservice-kube они не установлены. Если это так, его можно удалить, выполнив команду az extension remove -n appservice-kube.
  • Расширение "Функции Dapr" также находится в предварительной версии, с помощью справки, предоставленной в репозитории.

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