Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функции Azure в Контейнеры приложений Azure предлагает полностью управляемую бессерверную среду размещения, которая объединяет возможности на основе событий Функции Azure с надежными функциями контейнерных приложений. Эта интеграция включает в себя расширенные возможности, такие как оркестрация на основе Kubernetes, встроенное автомасштабирование на основе KEDA (Автомасштабирование на основе событий Kubernetes), интеграция Dapr (распределенная среда выполнения приложений), поддержка рабочих нагрузок GPU, поддержка сайдкаров, подключение к виртуальной сети (VNet) и управление версиями.
Этот подход полезен, если вы хотите, чтобы функции выполнялись вместе с другими контейнерными приложениями, такими как микрослужбы, API или веб-сайты. Кроме того, контейнеризация функциональных приложений может помочь, когда вам нужны пользовательские зависимости или вы хотели бы воспользоваться преимуществами масштабирования до нуля для снижения затрат. Если вы выполняете ресурсоемкие задачи, такие как инференс ИИ, контейнерные приложения также поддерживают использование GPU посредством бессерверного предложения для GPU и профилей выделенной рабочей нагрузки.
В качестве интегрированной возможности в Контейнеры приложений Azure можно развернуть образы Функции Azure непосредственно на Контейнеры приложений Azure, используя ресурс Майкрософт.App как поставщика, и передав параметр kind=functionapp при вызове az containerapp create. Приложения, созданные таким образом, имеют доступ ко всем Контейнеры приложений Azure функциям. При развертывании с помощью портала Azure можно включить параметр Optimize for Functions во время установки. Дополнительные сведения см. в разделе "Развертывание и настройка ".
Ключевые преимущества
Модель размещения контейнерных приложений основана на гибкости контейнеризованных рабочих нагрузок и событийно-ориентированном характере Функции Azure. Он предлагает следующие ключевые преимущества:
- Запускать Функции Azure в контейнерах с пользовательскими зависимостями и языковыми стеками.
- Снижение масштаба до нуля и увеличение масштаба до 1000 экземпляров с помощью KEDA.
- Безопасная сеть с полной интеграцией виртуальной сети.
- Расширенные функции контейнерных приложений, такие как многоверсионность, разделение трафика, интеграция Dapr и компоненты мониторинга.
- Поддержка бессерверных и выделенных GPU для рабочих нагрузок с интенсивным вычислением.
- Среда унифицированных контейнерных приложений для запуска функций вместе с микрослужбами, API и фоновыми заданиями.
В следующей таблице показано, как сравнить функции функций в контейнерных приложениях с планом потребления Flex.
| Функция | Приложения в контейнерах | План гибкого потребления |
|---|---|---|
| Сведение к нулю | ✅ Да (через KEDA) | ✅ Да |
| Максимальное масштабирование | 1000 (по умолчанию 10, настраиваемый) | 1 000 |
| Экземпляры Always-on (постоянно включенные) |
✅ Да (через minReplicas) |
✅ Да (с помощью всегда готовых экземпляров) |
| Интеграция с виртуальной сетью | ✅ Да | ✅ Да |
| Поддержка пользовательских контейнеров | ✅ Да (принести собственный образ) | ❌ Ограничено (не предусмотрена возможность использования собственного контейнера) |
| Поддержка GPU | ✅ Да (с помощью безсерверного профиля выделенной рабочей нагрузки GPU) | ❌ Нет |
| Встроенные функции | Поддержка функций контейнерных приложений. Например, KEDA, Dapr, многоразовые ревизии, mTLS, боковые процессы, управление входом и многое другое | Особенности только для функций |
| Модель выставления счетов | Цены на контейнерные приложения: план потребления (vCPU, память, запросы) и выделенный план (на основе профиля рабочей нагрузки) | Время выполнения и всегда готовые экземпляры |
Полное сравнение функций в приложениях-контейнерах с планом потребления Flex и всеми другими типами планов и размещения см. в разделе "Параметры масштабирования и размещения функций".
Сценарии
Функции Azure в контейнерных приложениях идеально подходят для широкого спектра вариантов использования, особенно если требуется выполнение на основе событий, гибкость контейнера или безопасная интеграция с другими службами:
- API для бизнес-приложений: Интеграция настраиваемых библиотек, пакетов и API с Функции Azure для бизнес-приложений.
- Миграция и модернизация: Миграция локальных устаревших и(или) монолитных приложений в облачные микрослужбы на контейнерах.
- Обработка, основанная на событиях: Обрабатывайте события из Event Grid, служебная шина, Event Hubs и других источников событий с использованием модели программирования функций.
- Рабочие нагрузки ИИ и 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 или ARM/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-адрес и вставьте его в веб-браузер.
На портале Azure выберите параметр Оптимизация для Функции Azure во время создания контейнерного приложения, чтобы упростить настройку.
Поддерживаются все стандартные методы развертывания, включая:
- Azure CLI
- портал Azure
- Шаблоны ARM / Bicep
- Конвейеры CI/CD (например, GitHub Actions, Azure Pipelines)
Подробные инструкции и примеры см. в официальной документации по началу работы.
Цены и выставление счетов
Функции Azure в контейнерных приложениях Azure используют ту же модель ценообразования, что и сами контейнерные приложения Azure. Выставление счетов основывается на типе плана, который вы выберете для своей среды: потребительский или выделенный.
- План потребления. Этот бессерверный вариант вычислений выставляет счета только за ресурсы, которые используются в приложениях во время их работы.
- Выделенный план. Этот параметр предоставляет настраиваемые вычислительные ресурсы, выставление счетов за экземпляры, выделенные для каждого профиля рабочей нагрузки.
Выбор плана определяет, как выполняются расчеты выставления счетов. Различные приложения в среде могут использовать разные планы.
Ключевые моменты, которые следует отметить:
- Дополнительные расходы на использование модели программирования Функции Azure в контейнерных приложениях не взимается.
- Устойчивые функции и другие расширенные шаблоны поддерживаются и выставляются в рамках той же модели ценообразования для контейнерных приложений. Для получения подробной информации о механике выставления счетов и примерах см. документацию по выставлению счетов в Контейнеры приложений Azure.
Масштабирование, управляемое событиями
Функции Azure в контейнерных приложениях поддерживают все основные языковые среды выполнения, доступные в Функции Azure, включая C#, JavaScript или TypeScript (Node.js), Python, Java, PowerShell и пользовательские контейнеры (с собственными образами).
Функции Azure, запущенные в Контейнеры приложений Azure автоматически настраивают правила масштабирования на основе источника событий, что устраняет необходимость в определениях правил масштабирования KEDA вручную. Именно поэтому кнопка "Добавить правила масштабирования" на портале Azure отключена для функций в приложениях контейнеров. Однако можно определить минимальное и максимальное количество реплик, чтобы установить границы масштабирования и обеспечить контроль над выделением ресурсов.
Платформа автоматически преобразует параметры триггеров Functions (из конфигурации или атрибутов триггера) в соответствующие параметры масштабировщика KEDA. Подробные сведения о сопоставлении конфигураций триггеров Functions с параметрами масштабирования KEDA см. в документе сопоставления масштабирования Функции Azure KEDA.
Поддерживаются все стандартные триггеры и привязки Функции Azure в приложениях контейнеров со следующими исключениями:
- Автоматическое масштабирование триггера хранилища Blob: работает только при использовании Event Grid в качестве источника. Узнайте больше о вызове Функции Azure для контейнеров BLOB-объектов с помощью подписки на события.
- Автоматическое масштабирование в Устойчивые функции: поддерживаются только поставщики хранилищ MSSQL (Microsoft SQL Server) и DTS (Durable Task Scheduler). Дополнительные рекомендации по развертыванию устойчивых функций с помощью MSSQL
- Автоматическое масштабирование не поддерживается для:
- Кэш Azure для Redis
- Azure SQL
Управляемые удостоверения поддерживаются для триггеров и привязок, где это возможно. Они также доступны для:
- Учетная запись хранения по умолчанию (AzureWebJobsStorage)
- Реестр контейнеров Azure (ACR)
- Подключение к источникам событий триггера
Для неподдерживаемых триггеров используйте фиксированные счетчики реплик (то есть задайте minReplicas > 0) в Функции Azure на Контейнеры приложений Azure. Дополнительные сведения см. в руководстве разработчика функций.
Масштабирование и производительность
Функции Azure в контейнерных приложениях автоматически масштабируются на основе событий с использованием KEDA, без необходимости настраивать правила масштабирования вручную. Вы все еще можете задать минимальное/максимальное число реплик для управления поведением масштабирования.
- масштабирование, обусловленное событиями: автоматически масштабируется на основе триггеров, таких как Event Grid, служебная шина или HTTP.
- Масштабирование до нуля: неактивные приложения масштабируются до нуля, чтобы снизить затраты.
- Cold start control: вы можете узнать о сокращении времени холодного старта на Контейнеры приложений Azure.
- Параллелизм. Каждый экземпляр может обрабатывать несколько событий параллельно.
- Высокий масштаб: горизонтальное масштабирование до 1000 экземпляров для каждого приложения (по умолчанию — 10).
- Поддержка GPU: выполнение вычислительных рабочих нагрузок, таких как вывод искусственного интеллекта с помощью узлов с поддержкой GPU.
Это делает контейнерные приложения идеальными для рабочих нагрузок со скачкообразными и стационарными состояниями. Дополнительные сведения см. в статье Set scaling rules in Контейнеры приложений Azure
Сетевые подключения и безопасность
Функции Azure в приложениях контейнеров получают выгоду от надежных функций сети и безопасности, обеспечивая безопасные и масштабируемые развертывания.
- Интеграция виртуальной сети: обеспечение безопасного доступа к частным ресурсам через внутренние конечные точки и частные базы данных.
- Managed identity: Аутентификация в Azure с использованием заданных системой или пользователем удостоверений без необходимости в секретах или строках подключения.
- Поддержка Dapr: включение вызова pub/sub, управления состоянием и безопасного вызова службы через боковики Dapr. Дополнительные сведения см. в разделе API микросервисов, работающих под управлением Dapr.
- Ingress и TLS: обеспечение безопасного доступа к HTTP-эндпоинтам через TLS/mTLS, пользовательские домены или оставляя их внутренними.
- Изоляция среды. Функции совместно используют границы контейнерных приложений для безопасного, ограниченного взаимодействия.
Эти возможности делают функции, размещенные в приложениях контейнеров, идеальными для корпоративных, защищенных бессерверных приложений.
Мониторинг и ведение журнала
Функции Azure в контейнерных приложениях легко интегрируются с средствами наблюдения Azure для отслеживания производительности и диагностики проблем:
- Application Insights: Предоставляет телеметрию для запросов, зависимостей, исключений и пользовательских трассировок. Дополнительные сведения см. в разделе Monitor Функции Azure.
- Log Analytics: Записывает события жизненного цикла контейнера и масштабирования (например, записи FunctionsScalerInfo). Дополнительные сведения см. в разделе Журналирование приложений в Контейнеры приложений Azure.
- Настраиваемое ведение журнала: Поддерживает стандартные платформы, такие как ILogger и ведение журнала консоли для структурированных выходных данных.
- Централизованный мониторинг: Среда контейнерных приложений предлагает унифицированные панели мониторинга и оповещения во всех приложениях.
Переменные среды
Функции Azure, запущенные в приложениях контейнеров, имеют доступ к системным переменным среды. Переменная CONTAINER_NAME среды автоматически присваивается имени реплики для приложения-функции. Используйте эту переменную для ведения журнала, корреляции и отладки в сценариях с несколькими репликами.
Полный список системных переменных окружения см. в разделе Переменные окружения в Контейнеры приложений Azure.
Соображения
При использовании Функции Azure на Контейнеры приложений Azure следует учитывать следующие рекомендации.
- Требование входящего трафика для автоматического масштабирования. Чтобы включить автоматическое масштабирование на основе событий, необходимо включить входящий трафик ( общедоступный или внутри внутренней среды приложений контейнеров).
- Обязательная учетная запись хранения. Каждое приложение функций, развернутое в контейнерных приложениях, должно быть связано с учетной записью хранения. Это необходимо для управления триггерами, журналами и состоянием. Ознакомьтесь с руководством по лучшим практикам для учетной записи для хранения данных.
- Хранилище с несколькими редакциями. При развертывании с несколькими активными редакциями назначьте выделенную учетную запись хранения каждой редакции. Использование выделенной учетной записи хранения помогает предотвратить конфликты и обеспечить правильную изоляцию. Кроме того, если не требуется одновременная редакция, рассмотрите возможность использования режима единой редакции по умолчанию для упрощенного управления.
- Триггеры с несколькими ревизиями: если вы используете режим с несколькими ревизиями и триггер с выборкой, используйте другой источник событий для каждой ревизии, чтобы избежать конфликтов, связанных с конкурирующими потребителями. Функции, использующие триггеры Хранилище очередей Azure, Центры событий Azure, Служебная шина Azure или Устойчивые функции, являются примерами триггеров на основе извлечения.
- Задержка холодного запуска: когда приложение-контейнер масштабируется до нуля во время простоя, первый запрос после неактивности инициирует холодный запуск. Узнайте больше о снижении времени холодного запуска.
- Интеграция Application Insights: для надежного мониторинга и диагностики свяжите приложение "Функции" с Application Insights. Дополнительные сведения см. в статье "Интеграция App Insights с функциями".
- Прокси-серверы функций: не поддерживается. Для сценариев шлюза 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: подробное представление о триггерах, привязках, поведении среды выполнения и настройке.