Поделиться через


Общие сведения о Функциях Azure в приложениях контейнеров Azure

Функции Azure в приложениях контейнеров Azure предлагают полностью управляемую бессерверную среду размещения, которая объединяет возможности, управляемые событиями функций Azure, с надежными функциями контейнерных приложений. Эта интеграция включает в себя расширенные возможности, такие как оркестрация на основе Kubernetes, встроенная автомасштабирование на основе KEDA (Автомасштабирование на основе Kubernetes), интеграция Dapr (распределенная среда выполнения приложений), поддержка рабочих нагрузок GPU, поддержка бокового автомобиля, подключение виртуальной сети (VNet) и управление версиями.

Этот подход полезен, если вы хотите, чтобы функции выполнялись вместе с другими контейнерными приложениями, такими как микрослужбы, API или веб-сайты. Кроме того, контейнеризация приложений-функций может помочь при необходимости пользовательских зависимостей или использовать преимущества масштабирования до нуля для экономии затрат. Если вы выполняете вычислительные задачи, такие как вывод ИИ, контейнерные приложения также поддерживают размещение на основе GPU с помощью бессерверного предложения GPU и профилей выделенной рабочей нагрузки.

В качестве интегрированной функции в приложениях контейнеров Azure можно развертывать образы функций Azure непосредственно в приложениях контейнеров Azure с помощью Microsoft.App поставщика ресурсов, установив параметр kind=functionapp при вызове az containerapp create. Приложения, созданные таким образом, имеют доступ ко всем функциям контейнеров Azure. При развертывании с помощью портала Azure можно включить параметр "Оптимизация для функций " во время установки. Дополнительные сведения см. в разделе "Развертывание и настройка ".

Ключевые преимущества

Модель размещения контейнерных приложений основана на гибкости контейнерных рабочих нагрузок и событийном характере функций Azure. Он предлагает следующие ключевые преимущества:

В следующей таблице показано, как сравнить функции функций в контейнерных приложениях с планом потребления Flex.

Функция Приложения в контейнерах План потребления Flex
Сведение к нулю ✅ Да (через KEDA) ✅ Да
Максимальное масштабирование 1000 (по умолчанию 10, настраиваемый) 1 000
Экземпляры Always-on (постоянно включенные) ✅ Да (через minReplicas) ✅ Да (с помощью всегда готовых экземпляров)
Интеграция с виртуальной сетью ✅ Да ✅ Да
Поддержка пользовательских контейнеров ✅ Да (принести собственный образ) ❌ Ограничено (не предусмотрена возможность использования собственного контейнера)
Поддержка GPU ✅ Да (с помощью безсерверного профиля выделенной рабочей нагрузки GPU) ❌ Нет
Встроенные функции Поддержка функций контейнерных приложений. Например, KEDA, Dapr, многоразовые ревизии, mTLS, боковые процессы, управление входом и многое другое Особенности только для функций
Модель выставления счетов Цены на контейнерные приложения: план потребления (vCPU, память, запросы) и выделенный план (на основе профиля рабочей нагрузки) Время выполнения и всегда готовые экземпляры

Полное сравнение функций в приложениях-контейнерах с планом потребления Flex и всеми другими типами планов и размещения см. в разделе "Параметры масштабирования и размещения функций".

Сценарии

Функции Azure в контейнерных приложениях идеально подходят для широкого спектра вариантов использования, особенно если требуется выполнение на основе событий, гибкость контейнера или безопасная интеграция с другими службами:

  • API бизнес-процессов: Пользовательские библиотеки, пакеты и API с помощью Функций Azure для бизнес-приложений.
  • Миграция и модернизация: Миграция локальных устаревших и(или) монолитных приложений в облачные микрослужбы на контейнерах.
  • Обработка на основе событий: Обработка событий из сетки событий, служебной шины, центров событий и других источников событий с легкостью модели программирования функций.
  • Рабочие нагрузки ИИ и GPU: Бессерверная обработка видео, изображений, расшифровок или других сложных задач, требующих вычислительных ресурсов GPU. Дополнительные сведения см. в статье "Использование бессерверных GPU в приложениях контейнеров Azure".
  • Микрослужбы: Интеграция Функций Azure с другими размещенными службами приложений контейнеров.
  • Пользовательские контейнеры: Функции пакета с пользовательскими средами выполнения или боковиками.
  • Частные приложения: Защита внутренних функций с помощью виртуальной сети и внутренних входящего трафика.
  • .NET Aspire: Интеграция .NET Aspire с функциями Azure позволяет разрабатывать, отлаживать и оркестрировать проект Функций Azure .NET в составе узла приложения .NET Aspire. Подробнее о Функциях Azure с помощью .NET Aspire
  • Общие функции: Запустите все поддерживаемые стандартные сценарии функций 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 при создании приложения контейнера, предварительно настроенного для функций Azure.

Поддерживаются все стандартные методы развертывания, включая:

Подробные инструкции и примеры см. в официальной документации по началу работы.

Цены и выставление счетов

Функции Azure в приложениях контейнеров Azure соответствуют той же модели ценообразования, что и приложения контейнеров Azure. Выставление счетов основывается на типе плана, который вы выберете для своей среды: потребительский или выделенный.

  • План потребления. Этот бессерверный вариант вычислений выставляет счета только за ресурсы, используемые в приложениях во время их работы.
  • Выделенный план. Этот параметр предоставляет настраиваемые вычислительные ресурсы, выставление счетов за экземпляры, выделенные для каждого профиля рабочей нагрузки.

Выбор плана определяет, как выполняются расчеты выставления счетов. Различные приложения в среде могут использовать разные планы.

Ключевые моменты, которые следует отметить:

  • Дополнительная плата за использование модели программирования Функций Azure в контейнерных приложениях не взимается.
  • Устойчивые функции и другие расширенные шаблоны поддерживаются и выставляются в рамках той же модели ценообразования для контейнерных приложений. Подробные примеры и механики выставления счетов см. в документации по выставлению счетов в приложениях контейнеров Azure .

Масштабирование, управляемое событиями

Функции Azure в контейнерных приложениях поддерживают все основные языковые среды выполнения, доступные в Функциях Azure, включая C#, JavaScript и TypeScript (Node.js), Python, Java, PowerShell, пользовательские контейнеры (собственный образ).

Функции Azure, работающие в приложениях контейнеров Azure , автоматически настраивают правила масштабирования на основе источника событий, устраняя необходимость в определениях правил масштабирования KEDA вручную. Именно поэтому кнопка "Добавить правила масштабирования" на портале Azure отключена для функций в приложениях контейнеров. Однако можно определить минимальное и максимальное количество реплик, чтобы установить границы масштабирования и обеспечить контроль над выделением ресурсов.

Все стандартные триггеры и привязки Функций Azure поддерживаются в приложениях контейнеров со следующими исключениями:

Управляемые удостоверения поддерживаются для триггеров и привязок, которые позволяют ему. Они также доступны для:

Для неподдерживаемых триггеров используйте фиксированные счетчики реплик (т. е. задайте minReplicas > 0) в Функциях Azure в приложениях контейнеров Azure. Дополнительные сведения см. в руководстве разработчика функций.

Масштабирование и производительность

Функции Azure в контейнерных приложениях автоматически масштабируются на основе событий с помощью KEDA без необходимости настраивать правила масштабирования вручную. Вы все еще можете задать минимальное/максимальное число реплик для управления поведением масштабирования.

  • Масштабирование на основе событий: автоматически масштабируется на основе триггеров, таких как сетка событий, служебная шина или HTTP.
  • Масштабирование до нуля: неактивные приложения масштабируются до нуля, чтобы снизить затраты.
  • Управление холодным запуском. Узнайте о снижении времени холодного запуска в приложениях контейнеров Azure.
  • Параллелизм. Каждый экземпляр может обрабатывать несколько событий параллельно.
  • Высокий масштаб: горизонтальное масштабирование до 1000 экземпляров для каждого приложения (по умолчанию — 10).
  • Поддержка GPU: выполнение вычислительных рабочих нагрузок, таких как вывод искусственного интеллекта с помощью узлов с поддержкой GPU.

Это делает контейнерные приложения идеальными для рабочих нагрузок со скачкообразными и стационарными состояниями. Дополнительные сведения см. в статье "Настройка правил масштабирования в приложениях контейнеров Azure"

Сетевые подключения и безопасность

Функции Azure в контейнерных приложениях получают преимущества надежных сетевых и безопасных функций для безопасных масштабируемых развертываний:

  • Интеграция виртуальной сети: обеспечение безопасного доступа к частным ресурсам через внутренние конечные точки и частные базы данных.
  • Управляемое удостоверение: Аутентификация в службах Azure с использованием управляемых системой или назначаемых пользователем удостоверений — без необходимости в секретах или строках подключения.
  • Поддержка Dapr: включение вызова pub/sub, управления состоянием и безопасного вызова службы через боковики Dapr. Дополнительные сведения см. в разделе API микросервисов, работающих под управлением Dapr.
  • Ingress и TLS: обеспечение безопасного доступа к HTTP-эндпоинтам через TLS/mTLS, пользовательские домены или оставляя их внутренними.
  • Изоляция среды. Функции совместно используют границы контейнерных приложений для безопасного, ограниченного взаимодействия.

Эти возможности делают функции, размещенные в приложениях контейнеров, идеальными для корпоративных, защищенных бессерверных приложений.

Мониторинг и ведение журнала

Функции Azure в контейнерных приложениях легко интегрируются с средствами наблюдаемости Azure для отслеживания производительности и диагностики проблем:

  • Application Insights: Предоставляет данные телеметрии для запросов, зависимостей, исключений и пользовательских трассировок. Дополнительные сведения см. в разделе Мониторинг функций Azure.
  • Log Analytics: Записывает события жизненного цикла контейнера и масштабирования (например, записи FunctionsScalerInfo). Дополнительные сведения см. в разделе "Ведение журнала приложений" в приложениях контейнеров Azure.
  • Настраиваемое ведение журнала: Поддерживает стандартные платформы, такие как ILogger и ведение журнала консоли для структурированных выходных данных.
  • Централизованный мониторинг: Среда контейнерных приложений предлагает унифицированные панели мониторинга и оповещения во всех приложениях.

Соображения

При использовании функций Azure в приложениях контейнеров Azure следует учитывать следующие рекомендации.

  • Требование входящего трафика для автоматического масштабирования. Чтобы включить автоматическое масштабирование на основе событий, необходимо включить входящий трафик ( общедоступный или внутри внутренней среды приложений контейнеров).
  • Обязательная учетная запись хранения. Каждое приложение функций, развернутое в контейнерных приложениях, должно быть связано с учетной записью хранения. Это необходимо для управления триггерами, журналами и состоянием. Ознакомьтесь с рекомендациями по учетной записи хранения .
  • Хранилище с несколькими редакциями. При развертывании с несколькими активными редакциями назначьте выделенную учетную запись хранения каждой редакции. Использование выделенной учетной записи хранения помогает предотвратить конфликты и обеспечить правильную изоляцию. Кроме того, если не требуется одновременная редакция, рассмотрите возможность использования режима единой редакции по умолчанию для упрощенного управления.
  • Триггеры с несколькими ревизиями: если вы используете режим с несколькими ревизиями и триггер с выборкой, используйте другой источник событий для каждой ревизии, чтобы избежать конфликтов, связанных с конкурирующими потребителями. Функции, использующие хранилище очередей Azure, Концентратор событий Azure, служебную шину Azure или триггеры устойчивых функций, являются примерами триггеров на основе извлечения.
  • Задержка холодного запуска: когда приложение-контейнер масштабируется до нуля во время простоя, первый запрос после неактивности возникает холодный запуск. Узнайте больше о снижении времени холодного запуска.
  • Интеграция Application Insights: для надежного мониторинга и диагностики свяжите приложение "Функции" с Application Insights. Дополнительные сведения см. в статье "Интеграция App Insights с функциями".
  • Прокси-серверы функций: не поддерживается. Для сценариев шлюза API вместо этого интегрируйте управление API Azure.
  • Слоты развертывания: промежуточные и рабочие слоты недоступны. Используйте стратегии развертывания сине-зеленого цвета для выпусков нулевого простоя .
  • Ключи доступа к функциям: использование портала для создания ключей доступа к функциям не поддерживается. Рекомендуется использовать Azure Key Vault для хранения ключей. Вы также можете использовать следующие параметры для защиты конечных точек HTTP в рабочей среде:
  • Квоты и ограничения ресурсов: среды контейнеров имеют ограничения по умолчанию для памяти, ЦП и экземпляров в каждом регионе. Дополнительные сведения см. в разделе об ограничениях среды и квотах по умолчанию. Если для рабочей нагрузки требуется больше ресурсов, можно запросить увеличение квоты.
  • Настройка правила масштабирования вручную. Кнопка "Добавить правила масштабирования" на портале Azure отключена для функций Azure, размещенных в приложениях контейнеров, так как правила масштабирования настраиваются автоматически на основе источника событий. Определения правил KEDA вручную не требуются в этой настройке.

Отправка отзывов

Отправьте запрос на проблему или функцию в репозиторий GitHub для приложений контейнеров Azure.

Дальнейшие действия / дополнительные ресурсы

Чтобы продолжить обучение и создание функций Azure в контейнерных приложениях, изучите следующие ресурсы: