Размещение Функции 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 CLI
- Портал Azure
- GitHub Actions
- Задачи Azure Pipeline
- Шаблоны ARM
- Шаблоны Bicep
- Azure Functions Core Tools
Настройка правил масштабирования
Функции 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" также находится в предварительной версии, с помощью справки, предоставленной в репозитории.