Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Когда вы планируете и разрабатываете отдельные функции для работы в Функции Azure, сосредоточьтесь на самом коде. Платформа Функции Azure упрощает развертывание вашего проекта кода в функциональное приложение в Azure. Когда вы разворачиваете свой проект в приложении Linux, ваш код запускается в контейнере, который автоматически создаёт Функции Azure. Этот контейнер бесшовно интегрируется с инструментами управления функциями.
Функции также поддерживают развертывания контейнеризированных функциональных приложений. В контейнерном развертывании вы создаёте собственный экземпляр функционального приложения в локальном контейнере Docker из поддерживаемого базового образа. Затем вы можете развернуть это контейнеризованное функциональное приложение в среде размещения на Azure. Создание собственного контейнера приложения-функции позволяет настраивать или управлять средой непосредственной среды выполнения кода функции.
Important
При создании собственных контейнеров необходимо сохранить базовый образ контейнера обновленным до последнего поддерживаемого базового образа. Поддерживаемые базовые образы функций Azure зависят от языка. См. репозитории базовых образов Функций Azure.
Команда Functions обязуется публиковать ежемесячные обновления для этих базовых образов. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Необходимо регулярно обновлять контейнер из последнего базового образа и повторно развертывать обновленную версию контейнера. Дополнительные сведения см. в разделе "Обслуживание пользовательских контейнеров".
Параметры размещения контейнеров
Tip
Для большинства контейнеризированных рабочих нагрузок размещайте функциональные приложения в Контейнеры приложений Azure. Container Apps предоставляет полностью управляемую, бессерверную среду на базе Kubernetes с встроенным масштабированием событий, масштабированием до нуля и поддержкой GPU. Для начала см. Функции Azure on Контейнеры приложений Azure.
У вас есть несколько вариантов размещения ваших контейнеризованных функциональных приложений в Azure:
| Вариант размещения | Benefits |
|---|---|
| Контейнеры приложений Azure (Recommended) | Контейнеры приложений Azure нативно размещает и управляет контейнерами ваших функциональных приложений с помощью Microsoft.App провайдера ресурсов. Запускайте свои функции в полностью управляемой, бессерверной среде на базе Kubernetes с встроенной поддержкой мониторинга с открытым исходным кодом, mTLS, Dapr и KEDA. Поддерживает масштабирование до нуля, бессерверное выставление счетов, выделенное оборудование и GPU через профили рабочей нагрузки. Вы получаете выгоду от той же модели программирования Functions и триггеров, одновременно получая полный набор функций Container Apps.
Рекомендуемый вариант хостинга для контейнеризованных функциональных приложений в Azure. |
| Контейнеры приложений Azure (legacy) | Функции Azure обеспечивает интегрированную поддержку развертывания контейнеризованных функциональных приложений в среду Container Apps с помощью Microsoft.Web провайдера ресурсов. Хотя в настоящее время поддерживается, этот вариант планируется для будущего списания. Для новых задач используйте рекомендованную опцию хостинга Container Apps. |
| Функции Azure | Вы можете разместить контейнерные приложения-функции в Функциях Azure, размещая контейнер в плане Elastic Premium или Выделенного Плана Службы Приложений. Размещение плана "Премиум" обеспечивает преимущества динамического масштабирования. Вы можете использовать выделенный хостинг план для того, чтобы воспользоваться преимуществами существующих неиспользуемых ресурсов плана службы приложений. |
| Kubernetes | Так как среда выполнения Функции Azure обеспечивает гибкость размещения, где и как хотите, можно размещать контейнеры приложений-функций и управлять ими непосредственно в кластерах Kubernetes. KEDA (управляемое событиями автоматическое масштабирование на основе Kubernetes) легко интегрируется со средой выполнения Функций Azure и инструментами для обеспечения масштабирования на основе событий в Kubernetes. Важный: Размещение контейнерных приложений-функций Kubernetes с помощью KEDA или прямого развертывания — это работа с открытым кодом, которую можно использовать бесплатно. Поддержка на основе принципа "лучших усилий" для этого сценария размещения предоставляется только участниками и сообществом. Вы несете ответственность за обслуживание собственных контейнеров приложений-функций в кластере, даже при развертывании их в службе Azure Kubernetes (AKS). |
Сравнение поддержки функций
Степень поддержки различных функций и поведения Функции Azure при запуске функционального приложения в контейнере зависит от выбранного параметра размещения контейнера.
| Feature/behavior | Контейнерные приложения (рекомендуют) | Контейнерные приложения (наследие)1 | План "Премиум" | Выделенный план | Kubernetes |
|---|---|---|---|---|---|
| Поддержка продуктов | Yes | Yes | Yes | Yes | No |
| Интеграция портала функций | Yes | No | Yes | Yes | No |
| Масштабирование на основе событий | Да (правила масштабирования) | Yes5 | Yes | No | No |
| Максимальный масштаб (экземпляры) | 10002 | 10002 | 1003 | 10-304 | Варьируется в зависимости от кластера |
| Экземпляры с масштабированием до нуля | Yes | Yes | No | No | KEDA |
| Ограничение времени выполнения | Unbounded6 | Unbounded6 | Unbounded7 | Unbounded8 | None |
| Развертывание основных средств | No | No | No | No | func kubernetes |
| Revisions | Yes | Yes | No | No | No |
| Слоты развертывания | No | No | Yes | Yes | No |
| Журналы потоковой передачи | Yes | Yes | Yes | Yes | No |
| Доступ к консоли | Yes | Yes | Да (используя Kudu) | Да (используя Kudu) | Да (в модулях с использованием kubectl) |
| Минимизация последствий холодного запуска | Правила масштабирования | Минимальное количество копий | Всегда готовые и разогретые экземпляры | n/a | n/a |
| Проверка подлинности службы приложений | Yes | Yes | Yes | Yes | No |
| Личные доменные имена | Yes | Yes | Yes | Yes | No |
| Сертификаты закрытого ключа | Yes | Yes | Yes | Yes | No |
| Виртуальные сети | Yes | Yes | Yes | Yes | Yes |
| Зоны доступности | Yes | Yes | Yes | Yes | Yes |
| Diagnostics | Yes | Yes | Yes | Yes | No |
| Выделенное оборудование | Да (профили рабочей нагрузки) | Да (профили рабочей нагрузки) | No | Yes | Yes |
| Выделенные графические процессоры | Да (профили рабочей нагрузки) | Да (профили рабочей нагрузки) | No | No | Yes |
| Настраиваемое количество памяти и ЦП | Yes | Yes | No | No | Yes |
| Опция «Бесплатный грант» | Yes | Yes | No | No | No |
| Сведения о ценах | Выставление счетов за контейнерные приложения | Выставление счетов за контейнерные приложения | Выставление счетов за план "Премиум" | Выставление счетов за выделенный план | Цены на AKS |
| Требования к имени службы | 2–32 символов: ограничено строчными буквами, цифрами и дефисами. Должен начинаться с буквы и заканчиваться буквенно-цифровым символом. | 2–32 символов: ограничено строчными буквами, цифрами и дефисами. Должен начинаться с буквы и заканчиваться буквенно-цифровым символом. | Менее 64 символов: ограничено буквенно-цифровыми символами и дефисами. Нельзя начинать или заканчивать слово дефисом. | Менее 64 символов: ограничено буквенно-цифровыми символами и дефисами. Нельзя начинать или заканчивать слово дефисом. | Менее 253 символов: ограничено буквенно-цифровыми символами и дефисами. Должен начинаться и заканчиваться буквенно-цифровым символом. |
- Запланировано на будущий список. Вместо этого используйте нативный хостинг Container Apps.
- В контейнерных приложениях по умолчанию используется 10 экземпляров, но можно задать максимальное количество реплик, которое имеет общее максимальное значение 1000. Этот параметр учитывается до тех пор, пока доступно достаточно квоты ядер. При создании приложения-функции из портала Azure вы ограничены до 300 экземпляров.
- В некоторых регионах приложения Linux в плане "Премиум" могут масштабироваться до 100 экземпляров. Дополнительную информацию см. в статье "План Премиум".
- К конкретным ограничениям для различных вариантов планов Службы приложений см. ограничения плана Службы приложений.
- Требуется KEDA; поддерживается большинством триггеров. Сведения о том, какие триггеры поддерживают масштабирование на основе событий, см. в разделе "Рекомендации по размещению контейнерных приложений".
- Если минимальное количество реплик равно нулю, время ожидания по умолчанию зависит от конкретных триггеров, используемых в приложении.
- Не применяется максимальное время ожидания выполнения. Однако льготный период, предоставленный выполнению функции, составляет 60 минут во время масштабирования, а льготный период 10 минут предоставляется во время обновлений платформы.
- Требуется, чтобы план службы приложений был настроен на Always On. Льготный период 10 минут предоставляется во время обновлений платформы.
Обслуживание пользовательских контейнеров
При создании собственных контейнеров обновляйте базовый образ контейнера до последнего поддерживаемого базового образа. Базовые образы, поддерживаемые для Функций Azure, специфичны для языка и находятся в репозиториях базовых образов Функций Azure.
Команда Functions обязуется публиковать ежемесячные обновления для этих базовых образов. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Регулярно обновляйте контейнер с последнего базового образа и заново разворачивайте обновлённую версию контейнера.
Выберите базовый образ на основе стека языка, который вы используете в приложении-функции. В следующей таблице приведены примеры для каждого стека. В общем, тег начинается с 4- , чтобы обозначить время выполнения V4 Functions. Когда выходят новые мелкие версии, этот тег обновляется, чтобы указывать на новую версию. Периодически восстанавливая свой собственный образ, вы перебираете новые версии через тот же тег, чтобы ваше приложение получало те же обновления. Не используйте теги с указанием незначительных версий выполнения — эти теги не получают обновлений. Ваше приложение может остаться в неисправленной версии, независимо от того, как часто вы будете восстанавливать свой собственный образ.
| Языковой стек | Пример рекомендуемых тегов базового образа |
|---|---|
| .NET (изолированная рабочая модель) |
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 илиmcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appserviceЭти примеры предназначены для .NET 8. Выберите подходящий образ для нужной вам версии .NET. |
| .NET (устаревшая внутрипроцессная модель) |
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 илиmcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice(Поддержка для модели в процессе заканчивается 10 ноября 2026 года. Как можно скорее перейти к модели изолированного работника .) |
| Ява |
mcr.microsoft.com/azure-functions/java:4-java21 илиmcr.microsoft.com/azure-functions/java:4-java21-appservice(Эти примеры предназначены для Java 21. Выберите подходящий образ для нужной версии Java.) |
| Node.js (JavaScript или TypeScript) |
mcr.microsoft.com/azure-functions/node:4-node22 илиmcr.microsoft.com/azure-functions/node:4-node22-appservice(Эти примеры нацелены на Node.js 22. Выберите подходящее изображение для версии Node.js, которая вам нужна.) |
| PowerShell |
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 илиmcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice(Эти примеры предназначены для PowerShell 7.4. Выберите подходящий образ для нужной версии PowerShell.) |
| Питон |
mcr.microsoft.com/azure-functions/python:4-python3.12 илиmcr.microsoft.com/azure-functions/python:4-python3.12-appservice(Эти примеры предназначены для Python 3.12. Выберите подходящий образ для нужной версии Python.) |
| Пользовательские обработчики / другие |
mcr.microsoft.com/azure-functions/base:4 илиmcr.microsoft.com/azure-functions/base:4-appservice |
Базовые образы, заканчивающиеся на -appservice, позволяют использовать SSH и удаленную отладку с платформы. Если вам не нужны эти возможности, используйте базовые изображения без -appservice суффикса.
Important
Недостаточно просто иметь один из предыдущих тегов в вашем Dockerfile. Необходимо регулярно извлекать последний образ из этого тега, чтобы пользовательский образ можно было перестроить, чтобы включить последние обновления. Если вы не вытащите последний образ и не собрали его, ваше приложение продолжит работать на старом базовом образе.
Когда вы создаёте или развертаете собственное контейнерное приложение, используя пользовательский образ, вы отвечаете за то, чтобы ваше изображение оставалось up-to-date с выпущенными базовыми изображениями. Помимо новых функций и улучшений, эти обновления базового образа также могут включать обновления системы безопасности, критически важные для вашего приложения. Чтобы убедиться, что ваше приложение защищено, убедитесь, что вы остаетесь в курсе. Регулярно извлекайте последнюю версию базового образа, перестраивайте свой кастомный образ контейнера и перезапускайте приложение для его использования.
В некоторых случаях Microsoft обязана вносить изменения на уровне платформы, которые могут привести к тому, что приложение в пользовательском контейнере с использованием старого базового образа перестанет работать корректно. Для таких крупных изменений Microsoft заранее выпускает обновлённые изображения, чтобы приложения, которые регулярно обновляются, не пострадали. Чтобы избежать потенциальных проблем с приложениями, работающими в пользовательских контейнерах, убедитесь, что вы не отстаёте от последней выпущенной минорной версии. Во время обращения в поддержку, если Microsoft определит, что у вашего приложения проблемы из-за более старой или неподдерживаемой версии, Microsoft просит обновить контейнер до последней базовой версии образа перед продолжением поддержки.
Начало работы
Используйте следующие ссылки, чтобы приступить к работе с Функции Azure в контейнерах Linux:
| Я хочу... | См. статью: |
|---|---|
| Deploy functions to Контейнеры приложений Azure (recommended) | Создание первых контейнерных функций в приложениях контейнеров Azure |
| Создаю свои первые контейнерные функции локально | Создание приложения-функции в локальном контейнере Linux |
| Развернуть контейнерные функции в Premium или Dedicated плане | Создайте свои первые контейнеризованные функции Azure |