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


Размещение Функции 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:

Интеграция виртуальной сети

При размещении приложений-функций в среде контейнерных приложений ваши функции могут воспользоваться преимуществами как внутренних, так и внешних виртуальных сетей. Дополнительные сведения о сетях среды см. в статье "Сети" в среде "Приложения контейнеров 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.

Следующие шаги