Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функции Azure on Контейнеры приложений Azure предоставляет полностью управляемую безсерверную хостинговую среду, сочетающую события-ориентированные возможности Функции Azure с функциями Container Apps. Эти возможности включают оркестрацию на базе Kubernetes, встроенное автомасштабирование на базе Kubernetes Event-driven Autoscaling (KEDA), интеграцию с DAPR, поддержку нагрузки на GPU, поддержку sidecar, подключение к виртуальной сети (VNet) и управление версиями.
Этот подход полезен, когда вы хотите, чтобы ваши функции работали наряду с другими контейнерными приложениями, такими как микросервисы, API или веб-сайты. Контейнеризация функциональных приложений также может помочь, когда нужны пользовательские зависимости или хотите масштабироваться до нуля для снижения затрат. Для задач с высокой нагрузкой на вычисления, таких как инференция с помощью ИИ, Container Apps поддерживает хостинг на базе GPU через бессерверные GPU и профили выделенной рабочей нагрузки.
Как интегрированная функция в Контейнеры приложений Azure, вы можете развернуть образы контейнеров Функции Azure напрямую в Контейнеры приложений Azure, используя Microsoft.App провайдер ресурсов и настройки kind=functionapp при вызове az containerapp create. Приложения, созданные таким образом, имеют доступ ко всем Контейнеры приложений Azure функциям. В Azure portal выберите опцию Optimize for Функции Azure during setup. Для получения дополнительной информации смотрите раздел «Развертывание и настройка».
Ключевые преимущества
Модель размещения контейнерных приложений основана на гибкости контейнеризованных рабочих нагрузок и событийно-ориентированном характере Функции Azure. Он предлагает следующие ключевые преимущества:
- Запускать Функции Azure в контейнерах с пользовательскими зависимостями и языковыми стеками.
- Масштабируйте до нуля и масштабируйте до 1000 экземпляров с помощью KEDA.
- Безопасная сеть с полной интеграцией виртуальной сети.
- Функции Container Apps , такие как множественные версии, разделение трафика, интеграция с Dapr и компоненты наблюдаемости.
- Поддержка бессерверных и выделенных GPU для рабочих нагрузок с интенсивным вычислением.
- Среда унифицированных контейнерных приложений для запуска функций вместе с микрослужбами, API и фоновыми заданиями.
Следующая таблица помогает сравнить функции Functions on Container Apps с планом Flex Consumption.
| Функция | Приложения в контейнерах | План гибкого потребления |
|---|---|---|
| Сведение к нулю | ✅ Да (через KEDA) | ✅ Да |
| Максимальное масштабирование | 1000 (по умолчанию 10, настраиваемый) | 1 000 |
| Экземпляры Always-on (постоянно включенные) |
✅ Да (через minReplicas) |
✅ Да (с помощью всегда готовых экземпляров) |
| Интеграция с виртуальной сетью | ✅ Да | ✅ Да |
| Поддержка пользовательских контейнеров | ✅ Да (принести собственный образ) | ❌ Ограничено (не предусмотрена возможность использования собственного контейнера) |
| Поддержка GPU | ✅ Да (с помощью безсерверного профиля выделенной рабочей нагрузки GPU) | ❌ Нет |
| Встроенные функции | Поддержка функций контейнерных приложений. Например, KEDA, Dapr, многоразовые ревизии, mTLS, боковые процессы, управление входом и многое другое | Особенности только для функций |
| Модель выставления счетов | Цены на контейнерные приложения: план потребления (vCPU, память, запросы) и выделенный план (на основе профиля рабочей нагрузки) | Время выполнения и всегда готовые экземпляры |
Полное сравнение функций в приложениях-контейнерах с планом потребления Flex и всеми другими типами планов и размещения см. в разделе "Параметры масштабирования и размещения функций".
Сценарии
Функции Azure в контейнерных приложениях идеально подходят для широкого спектра вариантов использования, особенно если требуется выполнение на основе событий, гибкость контейнера или безопасная интеграция с другими службами:
- API для бизнес-приложений: Интеграция настраиваемых библиотек, пакетов и API с Функции Azure для бизнес-приложений.
- Миграция и модернизация: Миграция локальных устаревших и/или монолитных приложений в облачные микросервисы на контейнерах.
- Обработка, управляемая событиями: Обрабатывайте события из Event Grid, служебная шина, Event Hubs и других источников событий, используя модель программирования Функции Azure.
- Нагрузки на ИИ и GPU: Обрабатывайте видео, изображения, транскрипты и другие вычислительные нагрузки, требующие ресурсов GPU. Дополнительные сведения см. в разделе Использование серверных GPU в Контейнеры приложений Azure.
- Микросервисы: Интеграция Функции Azure с другими службами, размещенными в контейнерных приложениях.
- Пользовательские контейнеры: Упакуйте функции с пользовательскими средами выполнения или сайдкарами.
- Частные приложения: Защита функций, предназначенных исключительно для внутреннего использования, с помощью виртуальной сети и внутреннего доступа.
- .NET Aspire: Интеграция .NET Aspire с Функции Azure позволяет разрабатывать, отлаживать и оркестрировать проект Функции Azure .NET в составе узла приложения .NET Aspire. Узнайте больше о Функции Azure с помощью .NET Aspire
- General Functions: Запуск всех поддерживаемых стандартных сценариев Функции Azure (например, таймеров, обработки файлов, триггеров базы данных).
Развертывание и настройка
Чтобы развернуть Функции Azure на Контейнеры приложений Azure, упаковайте ваше функциональное приложение как кастомный образ контейнера и разверните его как любое другое контейнерное приложение с одним ключевым отличием. Задайте это kind=functionapp свойство при использовании шаблонов Azure CLI, Azure Resource Manager или Bicep. Для подробных шагов и примеров см. Создание функционального приложения.
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CONTAINER_APP_NAME \
--environment $ENVIRONMENT_NAME \
--image mcr.microsoft.com/k8se/quickstart-functions:latest \
--ingress external \
--target-port 80 \
--kind functionapp \
--query properties.outputs.fqdn
Эта команда возвращает URL вашего функционального приложения. Скопируйте этот URL-адрес и вставьте его в веб-браузер.
In the Azure portal выберите опцию Optimize for Функции Azure during container app creation, чтобы использовать конфигурацию Функции Azure.
Поддерживаются все стандартные методы развертывания, включая:
- Azure CLI;
- портал Azure
- Шаблоны ARM / Bicep
- Конвейеры CI/CD (например, GitHub Actions, Azure Pipelines)
Подробные инструкции и примеры см. в официальной документации по началу работы.
Цены и выставление счетов
Функции Azure в контейнерных приложениях Azure используют ту же модель ценообразования, что и сами контейнерные приложения Azure. Выставление счетов основывается на типе плана, который вы выберете для своей среды: потребительский или выделенный.
- План потребления. Этот бессерверный вариант вычислений выставляет счета только за ресурсы, которые используются в приложениях во время их работы.
- Выделенный план. Этот параметр предоставляет настраиваемые вычислительные ресурсы, выставление счетов за экземпляры, выделенные для каждого профиля рабочей нагрузки.
Выбор плана определяет, как выполняются расчеты выставления счетов. Различные приложения в среде могут использовать разные планы.
Детали выставления счетов:
- Дополнительные расходы на использование модели программирования Функции Azure в контейнерных приложениях не взимается.
- Устойчивые функции и другие расширенные шаблоны поддерживаются и выставляются в рамках той же модели ценообразования для контейнерных приложений. Для получения подробной информации о механике выставления счетов и примерах см. документацию по выставлению счетов в Контейнеры приложений Azure.
Масштабирование, управляемое событиями
Функции Azure on Container Apps поддерживает все основные среды выполнения языков, доступные в Функции Azure, включая C#, JavaScript / TypeScript (Node.js), Python, Java, PowerShell и пользовательские контейнеры (с собственным образом).
Функции Azure, запущенные в Контейнеры приложений Azure, автоматически настраивают правила масштабирования на основе источника событий, устраняя необходимость вручную определять правила масштабирования KEDA в стандартном варианте. Именно поэтому кнопка "Добавить правила масштабирования" на портале Azure отключена для функций в приложениях контейнеров. Однако можно определить минимальное и максимальное количество реплик, чтобы установить границы масштабирования и обеспечить контроль над выделением ресурсов.
Если вам нужно предоставить собственные правила масштабирования, вы можете отказаться от правил, созданных платформой, с помощью allowScalingRuleOverride. Дополнительные сведения см. в разделе Переопределение автоматически созданных правил масштабирования KEDA для Функции Azure в Azure Container Apps.
Платформа автоматически преобразует параметры триггеров Functions (из конфигурации или атрибутов триггера) в соответствующие параметры масштабировщика KEDA. Подробные сведения о сопоставлении конфигураций триггеров Functions с параметрами масштабирования KEDA см. в документе сопоставления масштабирования Функции Azure KEDA.
Поддерживаются все стандартные триггеры и привязки Функции Azure в приложениях контейнеров со следующими исключениями:
- Автоматическое масштабирование триггера хранилища Blob: работает только при использовании Event Grid в качестве источника. Узнайте больше о вызове Функции Azure для контейнеров BLOB-объектов с помощью подписки на события.
- Устойчивые функции autoscaling: поддерживает только Microsoft SQL Server и поставщики хранилища Durable Task Scheduler. Для получения дополнительной информации см. раздел Deploy Устойчивые функции with SQL Server.
- Автомасштабирование не поддерживается для:
- Кэш Azure для Redis
- Azure SQL
Управляемые удостоверения поддерживаются для триггеров и привязок, где это возможно. Они также доступны для:
- Учетная запись хранения по умолчанию (AzureWebJobsStorage)
- Реестр контейнеров Azure (ACR)
- Подключение к источникам событий триггера
Для неподдерживаемых триггеров используйте фиксированные счетчики реплик (то есть задайте minReplicas > 0) в Функции Azure на Контейнеры приложений Azure. Дополнительные сведения см. в руководстве разработчика функций.
Масштабирование и производительность
Функции Azure в приложениях контейнеров автоматически масштабируются на основе событий с помощью KEDA по умолчанию. Вы все еще можете задать минимальное/максимальное число реплик для управления поведением масштабирования. Можно также использовать allowScalingRuleOverride для предоставления пользовательских правил масштабирования.
- масштабирование, обусловленное событиями: автоматически масштабируется на основе триггеров, таких как Event Grid, служебная шина или HTTP.
- Масштабирование до нуля: неактивные приложения масштабируются до нуля, чтобы снизить затраты.
- Cold start control: вы можете узнать о сокращении времени холодного старта на Контейнеры приложений Azure.
- Параллелизм. Каждый экземпляр может обрабатывать несколько событий параллельно.
- Высокий масштаб: горизонтальное масштабирование до 1000 экземпляров для каждого приложения (по умолчанию — 10).
- Поддержка GPU: выполнение вычислительных рабочих нагрузок, таких как вывод искусственного интеллекта с помощью узлов с поддержкой GPU.
Это делает контейнерные приложения идеальными для рабочих нагрузок со скачкообразными и стационарными состояниями. Дополнительные сведения см. в статье Set scaling rules in Контейнеры приложений Azure
Сетевые подключения и безопасность
Функции Azure on Container Apps использует сетевые и безопасные функции Container Apps:
- Интеграция виртуальной сети: обеспечение безопасного доступа к частным ресурсам через внутренние конечные точки и частные базы данных.
- Управляемая идентичность: Аутентификация с помощью сервисов Azure с использованием системных или пользовательских идентификаторов. Вам не нужно управлять секретами или строками соединения.
- Поддержка Dapr: включение вызова pub/sub, управления состоянием и безопасного вызова службы через боковики Dapr. Дополнительные сведения см. в разделе API микросервисов, работающих под управлением Dapr.
- Ingress и TLS: обеспечение безопасного доступа к HTTP-эндпоинтам через TLS/mTLS, пользовательские домены или оставляя их внутренними.
- Изоляция среды: функции разделяют границы среды контейнерных приложений для безопасной и ограниченной коммуникации.
Мониторинг и ведение журнала
Функции Azure on Container Apps интегрируется с Azure observability tools для отслеживания производительности и диагностики проблем:
- Application Insights: Предоставляет телеметрию для запросов, зависимостей, исключений и пользовательских трассировок. Дополнительные сведения см. в разделе Monitor Функции Azure.
-
Log Analytics: фиксирует жизненный цикл контейнера и события масштабирования, такие как
FunctionsScalerInfoзаписи. Для получения дополнительной информации см. Логирование приложений в Контейнеры приложений Azure. - Настраиваемое ведение журнала: Поддерживает стандартные платформы, такие как ILogger и ведение журнала консоли для структурированных выходных данных.
- Централизованный мониторинг: Среда контейнерных приложений предлагает унифицированные панели мониторинга и оповещения во всех приложениях.
Переменные среды
Функции Azure, запущенные в приложениях контейнеров, имеют доступ к системным переменным среды. Переменная CONTAINER_NAME среды автоматически присваивается имени реплики для приложения-функции. Используйте эту переменную для ведения журналов, корреляции и отладки в сценарии с несколькими репликами.
Полный список системных переменных окружения см. в разделе Переменные окружения в Контейнеры приложений Azure.
Соображения
При использовании Функции Azure на Контейнеры приложений Azure следует учитывать следующие рекомендации.
- Требование входа для автомасштабирования: Чтобы включить автоматическое масштабирование на основе событий, включите входящий режим — как публично, так и внутри внутренней среды Container Apps.
- Обязательный аккаунт хранения: Каждое функциональное приложение, развернутое в Container Apps, должно быть связано с аккаунтом хранения. Эта учетная запись хранилища управляет триггерами, журналами и состоянием. Ознакомьтесь с руководством по лучшим практикам для учетной записи для хранения данных.
- Хранилище с несколькими редакциями. При развертывании с несколькими активными редакциями назначьте выделенную учетную запись хранения каждой редакции. Использование выделенной учетной записи хранения помогает предотвратить конфликты и обеспечить правильную изоляцию. Кроме того, если не требуется одновременная редакция, рассмотрите возможность использования режима единой редакции по умолчанию для упрощенного управления.
- Триггеры с несколькими ревизиями: если вы используете режим с несколькими ревизиями и триггер с выборкой, используйте другой источник событий для каждой ревизии, чтобы избежать конфликтов, связанных с конкурирующими потребителями. Функции, использующие триггеры Хранилище очередей Azure, Центры событий Azure, Служебная шина Azure или Устойчивые функции, являются примерами триггеров на основе извлечения.
- Задержка холодного запуска: когда приложение-контейнер масштабируется до нуля во время простоя, первый запрос после неактивности инициирует холодный запуск. Узнайте больше о снижении времени холодного запуска.
- Интеграция Application Insights: Для мониторинга и диагностики вашего функционального приложения подключите его к Application Insights. Для получения дополнительной информации см. раздел Application Insights integration with Functions.
- Прокси-серверы функций: не поддерживается. Для сценариев шлюза API вместо этого интегрируются с Azure API Management.
- Слоты развертывания: тестовые и продакшн слоты недоступны. Используйте стратегии развертывания сине-зеленого цвета для выпусков нулевого простоя .
- Ключи доступа к функциям: использование портала для создания ключей доступа к функциям не поддерживается. Рекомендуется использовать Azure Key Vault для хранения ключей. Вы также можете использовать следующие параметры для защиты конечных точек HTTP в рабочей среде:
- Квоты и ограничения ресурсов: Среды приложений контейнеров имеют ограничения по умолчанию для памяти, ЦП и количества экземпляров в каждом регионе. Дополнительные сведения см. в разделе об ограничениях среды и квотах по умолчанию. Если для рабочей нагрузки требуется больше ресурсов, можно запросить увеличение квоты.
- Настройка правил масштабирования вручную: кнопка "Добавить правила масштабирования" на портале Azure отключена для Функции Azure, размещённых в контейнерных приложениях, так как правила масштабирования автоматически настраиваются на основе источника событий. Определения правил KEDA вручную не требуются в этой настройке.
Отправка отзывов
Отправьте запрос на проблему или функцию в репозиторий Контейнеры приложений Azure GitHub.
Дальнейшие действия / дополнительные ресурсы
Чтобы продолжить обучение и создание с помощью Функции Azure в контейнерных приложениях, ознакомьтесь со следующими ресурсами:
- Getting started: пошаговое руководство по развертыванию и настройке Функции Azure в Контейнеры приложений Azure.
- документация Контейнеры приложений Azure. Полный справочник по функциям контейнерных приложений, включая масштабирование, сеть, Dapr и профили рабочей нагрузки.
- Цены на Контейнеры приложений Azure: сведения о выставлении счетов на основе потребления и затратах на выделенный план.
- Варианты хостинга Функции Azure: Сравнение планов хостинга, включая Контейнерные Приложения, Flex Consumption, Premium и Выделенные.
- руководство разработчика Функции Azure: подробное представление о триггерах, привязках, поведении среды выполнения и настройке.