Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функции Azure обеспечивает интегрированную поддержку для разработки, развертывания и управления контейнеризованными приложениями-функциями на Azure Container Apps. Используйте службы "Приложения контейнеров Azure" для размещения контейнеров приложений-функций, если необходимо запустить функции на основе событий в Azure в той же среде, что и другие микрослужбы, API, веб-сайты, рабочие процессы или любые размещенные в контейнере программы. Container Apps hosting lets you run your functions in a fully managed, Kubernetes-based environment with built-in support for open-source monitoring, mTLS, Dapr, and Kubernetes Event-driven Autoscaling (KEDA).
Код функции можно написать в любом стеке языков, поддерживаемых функциями. Вы можете использовать те же триггеры и привязки функций с масштабированием на основе событий. Можно также использовать существующие клиентские средства функций и портал Azure для создания контейнеров, развертывания контейнеров приложений-функций в приложениях-контейнерах и настройки непрерывного развертывания.
Интеграция Контейнерных приложений также означает, что конфигурации сети и наблюдаемости, определенные на уровне среды контейнерного приложения, применяются к вашему приложению-функции так же, как ко всем микрослужбам, работающим в среде Контейнерных приложений. Вы также получаете другие облачные возможности контейнерных приложений, включая KEDA, Dapr, Envoy. Вы по-прежнему можете использовать Application Insights для мониторинга выполнения функций, а приложение-функция может получить доступ к тем же ресурсам виртуальной сети, предоставляемым средой.
Чтобы получить общее представление о вариантах размещения контейнеров для Azure Functions, см. Поддержка контейнеров Linux в Azure Functions.
Профили размещения и рабочей нагрузки
Существует два основных плана размещения для контейнерных приложений, бессерверный план потребления и выделенный план, который использует профили рабочей нагрузки для более эффективного управления ресурсами развертывания. Профиль рабочей нагрузки определяет объем вычислительных ресурсов и памяти, доступных для приложений-контейнеров, развернутых в среде. Эти профили настроены в соответствии с различными потребностями приложений.
Профиль рабочей нагрузки потребления — это профиль по умолчанию, добавленный к каждому типу среды профилей рабочей нагрузки. Вы можете добавить в среду профили выделенной рабочей нагрузки при создании среды или после ее создания. Дополнительные сведения о профилях рабочей нагрузки см. в разделе "Профили рабочей нагрузки" в приложениях контейнеров Azure.
Размещение контейнерных приложений-функций поддерживается во всех регионах, поддерживающих контейнерные приложения.
Если у вашего приложения нет конкретных требований к оборудованию, вы можете запустить свою среду в плане Consumption или в плане Dedicated, используя профиль рабочей нагрузки Consumption по умолчанию. При выполнении функций в контейнерных приложениях плата взимается только за использование контейнерных приложений. For more information, see the Azure Container Apps pricing page.
Azure Functions on Azure Container Apps supports GPU-enabled hosting in the Dedicated plan with workload profiles.
Сведения о том, как создать и развернуть контейнер приложения функций в Azure Container Apps в плане потребления по умолчанию, см. в статье Создание первых контейнерных функций в Azure Container Apps.
Чтобы узнать, как создать среду для контейнерных приложений с профилями рабочей нагрузки и развернуть контейнер приложения-функции в конкретной рабочей нагрузке, см. раздел Профили рабочих нагрузок контейнерных приложений.
Функции в контейнерах
Чтобы использовать размещение контейнерных приложений, код должен выполняться в приложении-функции в контейнере Linux, который вы создаете и обслуживаете. Функции поддерживают набор базовых образов для конкретного языка, которые можно использовать для создания контейнерных приложений-функций.
When you create a code project using Azure Functions Core Tools and include the --docker
option, Core Tools generates the Dockerfile with the correct base image, which you can use as a starting point when creating your container.
Внимание
При создании собственных контейнеров необходимо сохранить базовый образ контейнера, обновленный до последнего поддерживаемого базового образа. Поддерживаемые базовые образы для Функций Azure зависят от языка и находятся в репозиториях базовых образов Функций Azure.
The Functions team is committed to publishing monthly updates for these base images. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Необходимо регулярно обновлять контейнер из последнего базового образа и повторно развертывать обновленную версию контейнера. Дополнительные сведения см. в разделе "Обслуживание пользовательских контейнеров".
При внесении изменений в код функций необходимо перестроить и повторно опубликовать образ контейнера. Дополнительные сведения см. в разделе "Обновление образа в реестре".
Параметры развертывания
Функции Azure в настоящее время поддерживает следующие методы развертывания контейнерного приложения-функции в приложениях контейнеров Azure:
- Apache Maven
- Шаблоны ARM
- Azure CLI
- Azure Developer CLI (azd)
- Azure Functions Core Tools
- Задачи Azure Pipeline
- Портал Azure
- Bicep files
- GitHub Actions
- Visual Studio Code
Вы можете непрерывно развертывать контейнерные приложения из исходного кода с помощью Azure Pipelines или GitHub Actions. Функция непрерывного развертывания функций в настоящее время не поддерживается при развертывании в контейнерных приложениях.
Managed identity authorization
Для максимальной безопасности следует подключаться к удаленным службам, используя аутентификацию Microsoft Entra и авторизацию управляемой идентификации. You can use managed identities for these connections:
When running in Container Apps, you can use Microsoft Entra ID with managed identities for all binding extensions that support managed identities. В настоящее время только эти расширения привязки (биндинга) поддерживают масштабирование, инициированное событиями, при использовании аутентификации с помощью управляемого удостоверения.
- Центры событий Azure
- Azure Queue Storage
- Служебная шина Azure
For other bindings, use fixed replicas when using managed identity authentication. Дополнительные сведения см. в руководстве разработчика функций.
Интеграция виртуальной сети
При размещении приложений-функций в среде контейнерных приложений ваши функции могут воспользоваться преимуществами как внутренних, так и внешних виртуальных сетей. Дополнительные сведения о сетях в среде см. в разделе Сетевое взаимодействие в среде Azure Container Apps.
Масштабирование, управляемое событиями
Все триггеры функций можно использовать в контейнеризованном приложении с функциями. Однако только эти триггеры могут динамически масштабироваться (от нуля экземпляров) на основе полученных событий при выполнении в среде контейнерных приложений.
- Сетку событий Azure
- Центры событий Azure
- Azure Blob Storage (event-based)
- Azure Queue Storage
- Служебная шина Azure
- Устойчивые функции (поставщик хранилища MSSQL)
- HTTP
- Kafka
- Таймер
Функции Azure в среде контейнерных приложений предназначены для настройки параметров и правил масштабирования в зависимости от целей событий. Вам не нужно беспокоиться о настройке масштабируемых объектов KEDA. При создании или изменении приложения-функции можно задать минимальное и максимальное число реплик. Следующая команда Azure CLI задает минимальное и максимальное число реплик при создании нового функционального приложения в среде Container Apps из реестра контейнеров 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 Functions на Container Apps запускает ресурсы вашего контейнеризованного приложения-функции в специально управляемых группах ресурсов. Эти управляемые группы ресурсов помогают защитить согласованность приложений, предотвращая непреднамеренное или несанкционированное изменение или удаление ресурсов в управляемой группе даже субъектами-службами.
Впервые создавая ресурсы приложений-функций в среде контейнерных приложений, для вас создается управляемая группа ресурсов. Ресурсы контейнерных приложений, необходимые для вашей контейнерной функции, работают в этой управляемой группе ресурсов. Все другие приложения-функции, создаваемые в той же среде, используют эту существующую группу.
Управляемая группа ресурсов автоматически удаляется после удаления всех ресурсов контейнера приложения-функции из среды. Хотя управляемая группа ресурсов видна, любые попытки изменить или удалить управляемую группу ресурсов приводят к ошибке. Чтобы удалить управляемую группу ресурсов из среды, удалите все ресурсы контейнера функции приложения, и она будет удалена.
Если у вас возникли проблемы с этими группами управляемых ресурсов, обратитесь в службу поддержки.
Ведение журнала приложения
Вы можете отслеживать контейнеризированное приложение-функцию, размещенное в Container Apps, с помощью Azure Monitor Application Insights так же, как и приложения, размещенные в Azure Functions. Дополнительные сведения см. в разделе Мониторинг функций Azure.
Для привязок, поддерживающих масштабирование на основе событий, масштабируемые события регистрируются как FunctionsScalerInfo
и FunctionsScalerError
события в рабочей области Log Analytics. Дополнительные сведения см. в разделе "Ведение журнала приложений" в приложениях контейнеров Azure.
Рекомендации по размещению контейнерных приложений
Имейте в виду следующие рекомендации при развертывании контейнеров приложений-функций в контейнерных приложениях:
- Эти ограничения применяются к триггерам Kafka:
- The protocol value of
ssl
isn't supported when hosted on Container Apps. Используйте другое значение протокола. - Чтобы триггер Kafka мог динамически масштабироваться при подключении к Центрам событий, свойство
username
должно быть настроено в параметре приложения, содержащем фактическое значение имени пользователя. Если используется значение по умолчанию$ConnectionString
, триггер Kafka не может обеспечить динамическое масштабирование приложения.
- The protocol value of
- Для встроенных определений политик для контейнерных приложений в настоящее время применяются только политики уровня среды к контейнерам с функциями Azure.
- You can use managed identities for these connections:
- По умолчанию контейнерное приложение-функция отслеживает порт 80 для входящих запросов. Если приложение должно использовать другой порт, используйте
WEBSITES_PORT
параметр приложения для изменения этого порта по умолчанию. - В настоящее время вы не можете использовать встроенные функции непрерывного развертывания при размещении в контейнерных приложениях. You must instead deploy from source code using either Azure Pipelines or GitHub Actions.
- В настоящее время невозможно переместить развертывание приложения-функции, размещенного в контейнерных приложениях, между группами ресурсов или между подписками. Вместо этого необходимо повторно создать существующее контейнерное развертывание приложения в новой группе ресурсов, подписке или регионе.
- При использовании контейнерных приложений у вас нет прямого доступа к API Kubernetes нижнего уровня.
- Расширение
containerapp
конфликтует с расширениемappservice-kube
в Azure CLI. Если вы ранее опубликовали приложения в Azure Arc, запуститеaz extension list
и убедитесь, чтоappservice-kube
они не установлены. Если это так, его можно удалить, выполнив командуaz extension remove -n appservice-kube
.