Размещение Функции Azure приложений контейнеров Azure
Функции Azure обеспечивает интегрированную поддержку для разработки, развертывания и управления контейнерными приложениями-функциями Приложения контейнеров Azure. Используйте службы "Приложения контейнеров Azure" для размещения контейнеров приложений-функций, если необходимо запустить функции на основе событий в Azure в той же среде, что и другие микрослужбы, API, веб-сайты, рабочие процессы или любые размещенные в контейнере программы. Размещение контейнерных приложений позволяет выполнять функции в полностью управляемой среде на основе Kubernetes с встроенной поддержкой мониторинга с открытым кодом, mTLS, Dapr и Kubernetes На основе событий (KEDA).
Код функции можно написать в любом стеке языков, поддерживаемых функциями. Вы можете использовать те же триггеры и привязки функций с масштабированием на основе событий. Можно также использовать существующие клиентские средства функций и портал Azure для создания контейнеров, развертывания контейнеров приложений-функций в приложениях-контейнерах и настройки непрерывного развертывания.
Интеграция контейнерных приложений также означает, что конфигурации сети и наблюдаемости, определенные на уровне среды приложения-контейнера, применяются к приложению-функции по мере их применения ко всем микрослужбам, работающим в среде "Приложения контейнеров". Вы также получаете другие облачные возможности контейнерных приложений, включая KEDA, Dapr, Envoy. Вы по-прежнему можете использовать Application Insights для мониторинга выполнения функций, а приложение-функция может получить доступ к тем же ресурсам виртуальной сети, предоставляемым средой.
Общие сведения о вариантах размещения контейнеров для Функции Azure см. в Функции Azure поддержке контейнеров Linux.
Профили размещения и рабочей нагрузки
Существует два основных плана размещения для контейнерных приложений, бессерверный план потребления и выделенный план, который использует профили рабочей нагрузки для более эффективного управления ресурсами развертывания. Профиль рабочей нагрузки определяет объем вычислительных ресурсов и памяти, доступных для приложений-контейнеров, развернутых в среде. Эти профили настроены в соответствии с различными потребностями приложений.
Профиль рабочей нагрузки потребления — это профиль по умолчанию, добавленный к каждому типу среды профилей рабочей нагрузки. Вы можете добавить в среду профили выделенной рабочей нагрузки при создании среды или после ее создания. Дополнительные сведения о профилях рабочей нагрузки см. в разделе "Профили рабочей нагрузки" в приложениях контейнеров Azure.
Размещение контейнерных приложений-функций поддерживается во всех регионах, поддерживающих контейнерные приложения.
Если у приложения нет конкретных требований к оборудованию, вы можете запустить среду в плане потребления или в выделенном плане с помощью профиля рабочей нагрузки потребления по умолчанию. При выполнении функций в контейнерных приложениях плата взимается только за использование контейнерных приложений. Дополнительные сведения см. на странице цен на приложения контейнеров Azure.
Функции Azure в приложениях контейнеров Azure поддерживает размещение gpu в выделенном плане с профилями рабочей нагрузки.
Сведения о создании и развертывании контейнера приложения-функции в контейнерных приложениях в плане потребления по умолчанию см. в статье "Создание первых контейнерных функций в приложениях контейнеров Azure".
Сведения о создании среды "Приложения-контейнеры" с профилями рабочей нагрузки и развертывании контейнера приложения-функции в определенной рабочей нагрузке см. в профилях рабочих нагрузок контейнеров.
Функции в контейнерах
Чтобы использовать размещение контейнерных приложений, код должен выполняться в приложении-функции в контейнере Linux, который вы создаете и обслуживаете. Функции поддерживают набор базовых образов для конкретного языка, которые можно использовать для создания контейнерных приложений-функций.
При создании проекта кода с помощью Функции Azure Core Tools и включения --docker
параметра Core Tools создает Dockerfile с правильным базовым изображением, которое можно использовать в качестве отправной точки при создании контейнера.
Внимание
При создании собственных контейнеров необходимо сохранить базовый образ контейнера обновленным до последнего поддерживаемого базового образа. Поддерживаемые базовые образы для Функции Azure относятся к языку и находятся в репозитории базовых образов Функции Azure.
Команда функций привержена публикации ежемесячных обновлений для этих базовых образов. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Необходимо регулярно обновлять контейнер из последнего базового образа и повторно развертывать обновленную версию контейнера.
При внесении изменений в код функций необходимо перестроить и повторно опубликовать образ контейнера. Дополнительные сведения см. в разделе "Обновление образа в реестре".
Параметры развертывания
Функции Azure в настоящее время поддерживает следующие методы развертывания контейнерного приложения-функции в приложениях контейнеров Azure:
- Apache Maven
- Шаблоны ARM
- Azure CLI
- Azure Developer CLI (azd)
- Azure Functions Core Tools
- Задачи Azure Pipeline
- Портал Azure
- Файлы Bicep
- GitHub Actions
- Visual Studio Code
Интеграция виртуальной сети
При размещении приложений-функций в среде контейнерных приложений ваши функции могут воспользоваться преимуществами как внутренних, так и внешних виртуальных сетей. Дополнительные сведения о сетях среды см. в статье "Сети" в среде "Приложения контейнеров 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 в контейнерных приложениях выполняет ресурсы приложения-функции контейнера в специально управляемых группах ресурсов. Эти управляемые группы ресурсов помогают защитить согласованность приложений, предотвращая непреднамеренное или несанкционированное изменение или удаление ресурсов в управляемой группе даже субъектами-службами.
Управляемая группа ресурсов создается при первом создании ресурсов приложения-функции в среде контейнеров. Ресурсы контейнерных приложений, необходимые приложению-контейнерной функции, запускаются в этой управляемой группе ресурсов. Все другие приложения-функции, создаваемые в той же среде, используют эту существующую группу.
Управляемая группа ресурсов автоматически удаляется после удаления всех ресурсов контейнера приложения-функции из среды. Хотя управляемая группа ресурсов видна, любые попытки изменить или удалить управляемую группу ресурсов приводят к ошибке. Чтобы удалить управляемую группу ресурсов из среды, удалите все ресурсы контейнера приложения-функции и удаляется для вас.
Если у вас возникли проблемы с этими группами управляемых ресурсов, обратитесь в службу поддержки.
Рекомендации по размещению контейнерных приложений
Имейте в виду следующие рекомендации при развертывании контейнеров приложений-функций в контейнерных приложениях:
- Хотя все триггеры можно использовать, только следующие триггеры могут динамически масштабироваться (от нуля экземпляров) при выполнении в среде приложений контейнеров:
- Сетку событий Azure
- Центры событий Azure
- Хранилище BLOB-объектов Azure (на основе событий)
- Хранилище очередей Azure
- Служебная шина Azure
- Устойчивые функции (поставщик хранилища MSSQL)
- HTTP
- Kafka
- Таймер
- Эти ограничения применяются к триггерам Kafka:
- Значение
ssl
протокола не поддерживается при размещении в приложениях контейнеров. Используйте другое значение протокола. - Чтобы триггер Kafka динамически масштабировался при подключении к Центрам событий,
username
свойство должно разрешаться в параметр приложения, содержащий фактическое значение имени пользователя. Если используется значение по умолчанию$ConnectionString
, триггер Kafka не сможет динамически масштабировать приложение.
- Значение
- Для встроенных определений политик контейнерных приложений в настоящее время применяются только политики уровня среды к Функции Azure контейнерам.
- Управляемые удостоверения можно использовать для этих подключений:
- В настоящее время невозможно переместить развертывание приложения-функции, размещенного в контейнерных приложениях, между группами ресурсов или между подписками. Вместо этого необходимо повторно создать существующее контейнерное развертывание приложения в новой группе ресурсов, подписке или регионе.
- При использовании контейнерных приложений у вас нет прямого доступа к API Kubernetes нижнего уровня.
- Расширение
containerapp
конфликтует с расширениемappservice-kube
в Azure CLI. Если вы ранее опубликовали приложения в Azure Arc, запуститеaz extension list
и убедитесь, чтоappservice-kube
они не установлены. Если это так, его можно удалить, выполнив командуaz extension remove -n appservice-kube
.