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


Поддержка контейнеров Linux в Azure Functions

При планировании и разработке отдельных функций для выполнения в Функции Azure обычно основное внимание уделяется самому коду. Платформа Azure Functions упрощает развертывание вашего проекта кода в функциональное приложение в Azure. При развертывании проекта кода в приложении-функции, работающем в Linux, проект выполняется в контейнере, созданном для вас автоматически. Этот контейнер управляется функциями.

Функции также поддерживают развертывания контейнеризированных функциональных приложений. В контейнерном развертывании вы создаете свой собственный экземпляр приложения-функции в локальном контейнере Docker из поддерживаемого базового образа. Затем вы можете развернуть это контейнеризованное функциональное приложение в среде размещения на Azure. Создание собственного контейнера приложения-функции позволяет настраивать или управлять средой непосредственной среды выполнения кода функции.

Внимание

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

Команда Functions обязуется публиковать ежемесячные обновления для этих базовых образов. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Необходимо регулярно обновлять контейнер из последнего базового образа и повторно развертывать обновленную версию контейнера. Дополнительные сведения см. в разделе "Обслуживание пользовательских контейнеров".

Параметры размещения контейнеров

Существует несколько вариантов размещения контейнерных приложений-функций в Azure:

Вариант размещения Льготы
Приложения контейнеров Azure Функции Azure обеспечивают интегрированную поддержку для разработки, развертывания и управления контейнеризованными приложениями-функциями на Azure Container Apps. Эта интеграция позволяет управлять приложениями с помощью одинаковых средств и страниц функций на портале Azure. Используйте службы "Приложения контейнеров Azure" для размещения контейнеров приложений-функций, если необходимо запустить функции на основе событий в Azure в той же среде, что и другие микрослужбы, API, веб-сайты, рабочие процессы или любые размещенные в контейнере программы. Хостинг контейнерных приложений позволяет запускать ваши функции в управляемой среде на основе Kubernetes с встроенной поддержкой мониторинга с открытым кодом, mTLS, Dapr и KEDA. Поддерживает масштабирование до нуля и предоставляет бессерверную модель размещения с оплатой за то, что вы используете. Вы также можете запросить выделенное оборудование, даже GPU, используя профили рабочей нагрузки. Рекомендуемый вариант размещения для запуска контейнерных приложений-функций в Azure.
Кластеры Kubernetes с поддержкой Azure Arc (предварительная версия) Вы можете размещать свои приложения-функции в кластерах Kubernetes, поддерживающих Azure Arc, либо как развертывание, состоящее только из кода, либо в настраиваемом контейнере Linux. Azure Arc позволяет подключать кластеры Kubernetes, чтобы управлять и настраивать их в Azure. Размещение контейнеров Azure Functions в кластерах Kubernetes с поддержкой Azure Arc в настоящее время доступно в предварительной версии. Дополнительные сведения см. в статье "Работа с контейнерами и Функции Azure".
Функции Azure Вы можете размещать ваши контейнеризированные приложения-функции в Azure Functions, запуская контейнер в плане Elastic Premium или в выделенном плане. Размещение плана "Премиум" обеспечивает преимущества динамического масштабирования. Вы можете использовать выделенный хостинг план для того, чтобы воспользоваться преимуществами существующих неиспользуемых ресурсов плана службы приложений.
Kubernetes Так как среда выполнения Функции Azure обеспечивает гибкость размещения, где и как хотите, можно размещать контейнеры приложений-функций и управлять ими непосредственно в кластерах Kubernetes. KEDA (управляемое событиями автоматическое масштабирование на основе Kubernetes) легко интегрируется со средой выполнения Функций Azure и инструментами для обеспечения масштабирования на основе событий в Kubernetes. Помните, что запуск контейнерных приложений-функций в Kubernetes с помощью KEDA или прямого развертывания — это работа с открытым исходным кодом, которую можно использовать бесплатно, с лучшей поддержкой, предоставляемой участниками и сообществом. Вы несете ответственность за обслуживание собственных контейнеров функциональных приложений в кластере, даже при развертывании в Службе Azure Kubernetes (AKS).

Сравнение поддержки функций

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

Функция/поведение Приложения-контейнеры (интегрированные) Контейнерные приложения (в прямом режиме) План категории "Премиум" Выделенный план Kubernetes
Поддержка продуктов Да Нет Да Да Нет
Интеграция портала функций Да Нет Да Да Нет
Масштабирование на основе событий Да5 Да (правила масштабирования) Да Нет Нет
Максимальный масштаб (экземпляры) 10001  10001  1002  10-303  Зависит от кластера
Экземпляры с масштабированием до нуля Да Да Нет Нет KEDA
Ограничение времени выполнения Неограниченный6 Неограниченное6 Безграничное7 Неограниченное8 Нет
Развертывание основных средств func azurecontainerapps Нет Нет Нет func kubernetes 
Изменения Нет Да Нет Нет Нет
Слоты развертывания  Нет Нет Да Да Нет
Журналы потоковой передачи  Да Да  Да Да Нет
Доступ к консоли  В настоящее времянедоступно 4  Да Да (с помощью Kudu) Да (с помощью Kudu) Да (в модулях с использованием kubectl)
Минимизация последствий холодного запуска Минимальное количество копий Правила масштабирования  Всегда готовые и разогретые экземпляры  Н/Д n/a
Проверка подлинности службы приложений  В настоящее времянедоступно 4  Да Да Да Нет
Личные доменные имена  В настоящее времянедоступно 4  Да Да Да Нет
Сертификаты закрытого ключа  В настоящее времянедоступно 4  Да Да Да Нет
Виртуальные сети Да Да Да Да Да
Зоны доступности Да Да Да Да Да
Диагностика В настоящее времянедоступно 4  Да Да  Да  Нет
Выделенное оборудование Да (профили рабочей нагрузки) Да (профили рабочей нагрузки) Нет Да Да
Выделенные графические процессоры Да (профили рабочей нагрузки) Да (профили рабочей нагрузки) Нет Нет Да
Настраиваемое количество памяти и ЦП Да Да Нет Нет Да
Параметр "Бесплатный грант" Да Да Нет Нет Нет
Сведения о тарифах Выставление счетов за контейнерные приложения Выставление счетов за контейнерные приложения Выставление счетов за план "Премиум" Выставление счетов за выделенный план Цены на AKS
Требования к имени службы 2–32 символов: ограничено строчными буквами, цифрами и дефисами. Должен начинаться с буквы и заканчиваться буквенно-цифровым символом. 2–32 символов: ограничено строчными буквами, цифрами и дефисами. Должен начинаться с буквы и заканчиваться буквенно-цифровым символом. Менее 64 символов: ограничено буквенно-цифровыми символами и дефисами. Нельзя начинать или заканчивать слово дефисом. Менее 64 символов: ограничено буквенно-цифровыми символами и дефисами. Нельзя начинать или заканчивать слово дефисом. Менее 253 символов: ограничено буквенно-цифровыми символами и дефисами. Должен начинаться и заканчиваться буквенно-цифровым символом.
  1. В контейнерных приложениях по умолчанию используется 10 экземпляров, но можно задать максимальное количество реплик, которое имеет общее максимальное значение 1000. Этот параметр учитывается до тех пор, пока доступно достаточно квоты ядер. При создании приложения-функции из портала Azure вы ограничены до 300 экземпляров.
  2. В некоторых регионах приложения Linux в плане "Премиум" могут масштабироваться до 100 экземпляров. Дополнительную информацию см. в статье "План Премиум".
  3. К конкретным ограничениям для различных вариантов планов Службы приложений см. ограничения плана Службы приложений.
  4. Паритет функций — это цель интегрированного хостинга в Azure Container Apps.
  5. Требуется KEDA; поддерживается большинством триггеров. Сведения о том, какие триггеры поддерживают масштабирование на основе событий, см. в разделе "Рекомендации по размещению контейнерных приложений".
  6. Если минимальное количество реплик равно нулю, время ожидания по умолчанию зависит от конкретных триггеров, используемых в приложении.
  7. Не применяется максимальное время ожидания выполнения. Однако льготный период, предоставленный выполнению функции, составляет 60 минут во время масштабирования, а льготный период 10 минут предоставляется во время обновлений платформы.
  8. Требуется, чтобы план службы приложений был настроен на Always On. Льготный период 10 минут предоставляется во время обновлений платформы.

Обслуживание пользовательских контейнеров

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

Команда Functions обязуется публиковать ежемесячные обновления для этих базовых образов. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Необходимо регулярно обновлять контейнер из последнего базового образа и повторно развертывать обновленную версию контейнера.

Когда базовый образ управляется функциями, например в стандартном развертывании в Linux, ваше приложение обновляется автоматически обычными обновлениями базового образа, выпущенными командой функций. Для таких неадаптированных контейнеров приложение обновляется для запуска на базовом образе с новой минорной версией или исправленной версией хостовой среды выполнения.

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

В некоторых случаях необходимо внести изменения на уровне платформы, которые могут означать, что приложение в пользовательском контейнере с помощью старого базового образа может перестать работать должным образом. Для таких серьезных изменений мы развертываем обновленные образы задолго до изменений, чтобы приложения, которые получают регулярные обновления, не были негативно затронуты. Чтобы избежать потенциальных проблем с приложениями, работающими в пользовательских контейнерах, убедитесь, что вы не отстаёте от последней выпущенной минорной версии. Если в ходе обращения в службу поддержки мы определим, что ваше приложение испытывает проблемы из-за старой или неподдерживаемой версии, мы просим вас обновить контейнер до последней версии базового образа, прежде чем продолжать поддержку.

Начало работы

Используйте следующие ссылки, чтобы приступить к работе с Функции Azure в контейнерах Linux:

Я хочу... См. статью:
Создание первых контейнерных функций Создание приложения-функции в локальном контейнере Linux
Создание и развертывание функций в приложениях контейнеров Azure Создание первых контейнерных функций в приложениях контейнеров Azure
Создание и развертывание контейнерных функций для Функции Azure Создайте свои первые контейнеризованные функции Azure