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