Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье демонстрируется поддержка, которую Azure Functions предоставляет для работы с контейнеризованными приложениями-функциями, размещенными в среде Azure Container Apps. Дополнительные сведения см. в статье о размещении функций Azure в приложениях контейнеров Azure.
В этой статье демонстрируется, как Функции Azure поддерживают работу с приложениями-функциями, запускаемыми в контейнерах Linux.
Выберите среду размещения для контейнерного приложения-функции в верхней части статьи.
Если вы хотите сразу начать, в следующей статье рассказывается, как создать свою первую функцию, работающую в контейнере Linux, и развернуть образ из реестра контейнеров в поддерживаемую службу размещения Azure.
Создание первой контейнерной функции Azure в приложениях Azure Container Apps
Чтобы узнать больше о развертывании в Azure Container Apps, см. размещение Azure Functions в Azure Container Apps.
Внимание
В этой статье в настоящее время показано, как подключиться к учетной записи хранения по умолчанию с помощью строки подключения. Для обеспечения оптимальной безопасности следует вместо этого создать подключение на основе управляемой идентификации для служб хранилища Azure, используя аутентификацию Microsoft Entra. Дополнительные сведения см. в руководстве разработчика функций.
Создание контейнерных приложений-функций
Функции упрощают развертывание и запуск ваших приложений-функций в виде контейнеров Linux, которые вы создаете и поддерживаете. Функции поддерживают набор базовых образов для конкретного языка, которые можно использовать при создании контейнерных приложений-функций.
Внимание
При создании собственных контейнеров необходимо сохранить базовый образ контейнера, обновленный до последнего поддерживаемого базового образа. Поддерживаемые базовые образы для Azure Functions зависят от языка и находятся в репозиториях базовых образов Azure Functions.
Команда Functions обязуется публиковать ежемесячные обновления для этих базовых изображений. Регулярные обновления включают последние незначительные обновления версий и исправления безопасности для среды выполнения функций и языков. Необходимо регулярно обновлять контейнер из последнего базового образа и повторно развертывать обновленную версию контейнера. Дополнительные сведения см. в разделе "Обслуживание пользовательских контейнеров".
Полный пример создания локального контейнерного приложения-функции из командной строки и публикации образа в реестре контейнеров см. в статье "Создание приложения-функции в локальном контейнере".
Создайте Dockerfile
Инструменты функций предоставляют параметр Docker, который генерирует Dockerfile для проекта, содержащего код ваших функций. Этот файл можно использовать с Docker для создания функций в контейнере, наследуемом от правильного базового образа (языка и версии).
Способ создания Файла Dockerfile зависит от способа создания проекта.
При создании проекта с помощью Azure Functions Core Tools включите параметр
--docker
при выполнении командыfunc init
, как показано в следующем примере:func init --docker
Вы также можете добавить Dockerfile в существующий проект с помощью
--docker-only
параметра при выполненииfunc init
команды в существующей папке проекта, как показано в следующем примере:func init --docker-only
Полный пример см. в разделе "Создание приложения-функции" в локальном контейнере.
Создайте ваше функциональное приложение в контейнере
С помощью файла Dockerfile, созданного функциями в проекте кода, можно использовать Docker для создания контейнерного приложения-функции на локальном компьютере.
docker build
Следующая команда создает образ контейнерных функций из проекта в локальном каталоге:
docker build --tag <DOCKER_ID>/<IMAGE_NAME>:v1.0.0 .
Пример создания контейнера см. в статье о сборке образа контейнера и локальной проверке.
Обновление образа в реестре
При внесении изменений в проект кода функций или необходимости обновления до последнего базового образа необходимо перестроить контейнер локально и повторно опубликовать обновленный образ в выбранном реестре контейнеров. Следующая команда перестроит образ из корневой папки с обновленным номером версии и загрузит его в ваш реестр.
az acr build --registry <REGISTRY_NAME> --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.1 .
Замените <REGISTRY_NAME>
на экземпляр реестра контейнеров и <LOGIN_SERVER>
на имя сервера входа.
На этом этапе необходимо обновить существующее развертывание, чтобы использовать новый образ. Вы можете обновить функциональное приложение, чтобы использовать новый образ, с помощью Azure CLI или в портале Azure.
az functionapp config container set --image <IMAGE_NAME> --registry-password <SECURE_PASSWORD>--registry-username <USER_NAME> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
В этом примере <IMAGE_NAME>
является полным именем нового образа, включая версию. Частные реестры требуют предоставления имени пользователя и пароля. Безопасно храните эти учетные данные.
Кроме того, следует рассмотреть возможность непрерывного развертывания.
портал Azure создавать с помощью контейнеров
При создании приложения-функции в портале Azure вы можете выбрать развернуть приложение-функцию из образа в реестре контейнеров. Сведения о создании контейнерного приложения-функции в реестре контейнеров см. в статье "Создание приложения-функции в контейнере".
Ниже описано, как создать и развернуть существующее контейнерное приложение-функцию из реестра контейнеров.
На домашней странице или в меню портала Azure выберите Создать ресурс.
На странице Создать выберите Вычисления>Функциональное приложение.
В разделе "Выбор варианта размещения" выберите Премиум план>Выбрать.
Это создает приложение функций, размещенное на Azure Functions в тарифном плане Premium, которое поддерживает динамическое масштабирование. Вы также можете выбрать запуск в плане службы приложений, но в такой выделенной схеме необходимо управлять масштабированием вашего приложения-функции.
На странице Основные сведения используйте параметры приложения-функции как указано в таблице ниже:
Настройка Предлагаемое значение Описание Подписка Ваша подписка Подписка, в которой вы создаете функциональное приложение. Группа ресурсов myResourceGroup Имя новой группы ресурсов, в которой создается приложение-функция. Необходимо создать группу ресурсов, так как при создании приложений-функций в существующей группе ресурсов существуют известные ограничения. Имя приложения-функции Уникальное имя* Имя, которое идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z
(без учета регистра),0-9
и-
.Вы хотите развернуть код или образ контейнера? Образ контейнера Разверните контейнерное функциональное приложение из реестра. Сведения о создании приложения-функции в реестре см. в статье "Создание приложения-функции" в локальном контейнере. Регион Предпочтительный регион Выберите регион, ближайший к вам или к другим службам, к которым могут обращаться функции. План Linux Новый план (по умолчанию) Создает новый план Premium для размещения вашего приложения. Вы также можете выбрать существующий план уровня "Премиум". Тарифный план Еластик Премиум EP1 EP1
является самым доступным планом. Вы можете выбрать более крупный план, если это необходимо.Избыточность между зонами Отключено Эта функция не нужна в непроизводном приложении. *Имя приложения должно быть глобально уникальным среди всех приложений, размещенных в Azure Functions.
Примите параметры по умолчанию для создания новой учетной записи хранения на вкладке хранилища и нового экземпляра Application Insights на вкладке "Мониторинг ". Вы также можете использовать существующую учетную запись хранения или экземпляр Application Insights.
Выберите Просмотр и создание , чтобы просмотреть выбранные параметры конфигурации приложения.
На странице "Просмотр и создание" проверьте параметры и выберите Создать, чтобы развернуть функциональное приложение, используя базовый образ по умолчанию.
После создания ресурса вашего приложения-функции выберите Перейти к ресурсу, а затем на странице приложения-функции выберите Центр развертывания.
Центр развертывания позволяет вам подключить реестр контейнеров как источник образа. Вы также можете включить GitHub Actions или Azure Pipelines для более надежного непрерывного развертывания обновлений в контейнере в реестре.
портал Azure создавать с помощью контейнеров
При создании приложения-функции, размещенного в Container Apps, на портале Azure вы можете развернуть своё приложение-функцию из образа в реестре контейнеров. Сведения о создании контейнерного приложения-функции в реестре контейнеров см. в статье "Создание приложения-функции в контейнере".
Ниже описано, как создать и развернуть существующее контейнерное приложение-функцию из реестра контейнеров.
На домашней странице или в меню портала Azure выберите Создать ресурс.
На странице Создать выберите Вычисления>Функциональное приложение.
Щелкните «Выберите вариант размещения», выберите среду для приложений контейнеров>Выбрать.
На странице Основные сведения используйте параметры приложения-функции как указано в таблице ниже:
Настройка Предлагаемое значение Описание Подписка Ваша подписка Подписка, в которой вы создаете функциональное приложение. Группа ресурсов myResourceGroup Имя новой группы ресурсов, в которой создается приложение-функция. Необходимо создать группу ресурсов, так как при создании приложений-функций в существующей группе ресурсов существуют известные ограничения. Имя приложения-функции Уникальное имя* Имя, которое идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z
(без учета регистра),0-9
и-
.Регион Предпочтительный регион Выберите регион, ближайший к вам или к другим службам, к которым могут обращаться функции. *Имя приложения должно быть уникальным в среде приложений контейнеров Azure.
По-прежнему на странице "Основные сведения", примите предлагаемую новую среду для приложений контейнеров Azure. Чтобы свести к минимуму затраты, новая среда по умолчанию создается в Потребление + Выделенное с профилем рабочей нагрузки по умолчанию и без зональной избыточности. Дополнительные сведения см. в статье о размещении функций Azure в приложениях контейнеров Azure.
Вы также можете использовать существующую среду для контейнерных приложений. Чтобы создать настраиваемую среду, выберите "Создать". На странице «Создание среды приложений контейнеров» можно добавить нестандартные профили рабочих нагрузок или включить зональную избыточность. Дополнительные сведения о средах см. в разделе Среды Azure Container Apps.
Выберите вкладку "Развертывание" и снимите флажок "Использовать образ быстрого запуска". В противном случае функциональное приложение разворачивается из базового образа для языка функционального приложения.
Выберите тип изображения, общедоступный или закрытый. Выберите private, если вы используете Реестр контейнеров Azure или другой частный реестр. Укажите имя образа, включая префикс реестра. Если вы используете частный реестр, укажите учетные данные проверки подлинности реестра образов. Общедоступный параметр поддерживает только изображения, хранящиеся публично в Docker Hub.
В разделе "Выделение ресурсов контейнера" выберите требуемое количество ядер ЦП и доступной памяти. Если в вашей среде добавлены другие профили рабочей нагрузки, можно выбрать профиль рабочей нагрузки, отличный от него. Выбор на этой странице влияет на стоимость размещения приложения. Ознакомьтесь со страницей цен на приложения-контейнеры , чтобы оценить потенциальные затраты.
Выберите Просмотр и создание , чтобы просмотреть выбранные параметры конфигурации приложения.
На странице "Проверка и создание" просмотрите параметры, а затем выберите "Создать", чтобы подготовить приложение-функцию и развернуть образ контейнера из реестра.
Работа с изображениями в Azure Functions
При развертывании контейнера приложения функций из реестра, служба Azure Functions сохраняет информацию об исходном образе.
Используйте следующие команды, чтобы получить данные об образе или изменить используемый образ развертывания:
az functionapp config container show
: возвращает сведения о образе, используемом для развертывания.az functionapp config container set
: измените параметры реестра или обновите образ, используемый для развертывания, как показано в предыдущем примере.
Профили рабочей нагрузки контейнерных приложений
Профили рабочей нагрузки — это функция приложений-контейнеров, которые позволяют лучше управлять ресурсами развертывания. Функции Azure в приложениях контейнеров Azure также поддерживает профили рабочей нагрузки. Дополнительные сведения см. в разделе "Профили рабочей нагрузки" в приложениях контейнеров Azure.
Вы также можете задать объем ресурсов ЦП и памяти, выделенных вашему приложению.
Вы можете создавать профили рабочей нагрузки и выделения ресурсов и управлять ими с помощью Azure CLI или в портал Azure.
Вы активируете профили рабочей нагрузки при создании среды контейнерного приложения. Пример см. в разделе "Создание приложения контейнера" в профиле.
В среде можно добавлять, изменять и удалять профили. Пример см. в разделе "Добавление профилей".
При создании контейнерного приложения-функции в среде с включенными профилями рабочей нагрузки также следует указать профиль, в котором выполняется выполнение. Профиль указывается с помощью --workload-profile-name
параметра az functionapp create
команды, как в следующем примере:
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime <LANGUAGE_STACK> --image <IMAGE_URI> --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE>
В команде az functionapp create
параметр --environment
указывает среду "Container Apps", а параметр --image
определяет образ, используемый для приложения-функции. В следующем примере замените <STORAGE_NAME>
именем, использованным в предыдущем разделе для учетной записи хранения. Кроме того, замените <APP_NAME>
на глобально уникальное имя, подходящее вам.
Чтобы задать ресурсы, выделенные вашему приложению, замените <CPU_COUNT>
требуемым количеством виртуальных CPU — от 0,5 до максимально допустимого значения профиля. Для <MEMORY_SIZE>
выберите объём выделенной памяти от 1 ГБ до максимального, допустимого согласно профилю.
С помощью az functionapp container set
команды можно управлять выделенными ресурсами и профилем рабочей нагрузки, используемыми приложением.
az functionapp container set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE>
Параметры приложения
Функции Azure позволяет работать с параметрами приложения для контейнерных приложений-функций стандартным способом. Дополнительные сведения см. в разделе "Использование параметров приложения".
Совет
По умолчанию контейнерное приложение-функция отслеживает порт 80 для входящих запросов. Если приложение должно использовать другой порт, используйте WEBSITES_PORT
параметр приложения для изменения этого порта по умолчанию.
Включение непрерывного развертывания в Azure
При размещении контейнерного приложения-функции в приложениях контейнеров Azure существует два способа настройки непрерывного развертывания из репозитория исходного кода:
В настоящее время вы не можете непрерывно развертывать контейнеры на основе изменений образа в реестре контейнеров. Вместо этого следует использовать эти конвейеры непрерывного развертывания на основе исходного кода.
Включение непрерывного развертывания в Azure
Внимание
Развертывание на основе веб-перехватчика в настоящее время не поддерживается при запуске контейнера в «плане Elastic Premium». Если вам необходимо использовать метод непрерывного развертывания, описанный в этом разделе, разверните контейнер в плане службы приложений. При запуске в плане Elastic Premium необходимо вручную перезапустить приложение при каждом обновлении контейнера в репозитории.
Вы также можете настроить непрерывное развертывание из репозитория исходного кода с помощью Azure Pipelines или GitHub Actions.
Вы можете настроить Функции Azure так, чтобы при обновлении образа в реестре изображений автоматически обновлялось развертывание этого образа.
Используйте следующую команду, чтобы включить непрерывное развертывание и получить URL-адрес веб-перехватчика:
az functionapp deployment container config --enable-cd --query CI_CD_URL --output tsv --name <APP_NAME> --resource-group AzureFunctionsContainers-rg
Команда
az functionapp deployment container config
включает непрерывное развертывание и возвращает URL-адрес вебхука развертывания. Этот URL-адрес можно получить в любое время с помощьюaz functionapp deployment container show-cd-url
команды.Как и ранее, необходимо заменить
<APP_NAME>
на имя приложения-функции.Скопируйте URL-адрес развертывания веб-перехватчика в буфер обмена.
Откройте Docker Hub, войдите и выберите Репозитории на панели навигации. Найдите и выберите образ, перейдите на вкладку Веб-перехватчики, укажите имя веб-перехватчика, вставьте URL-адрес в поле URL-адрес веб перехватчика, а затем выберите Создать.
После настройки веб-перехватчика, служба Azure Functions повторно развертывает ваш образ всякий раз, когда вы обновляете его в Docker Hub.
Включение SSH-подключений
SSH обеспечивает безопасный обмен данными между клиентом и контейнером. При включенном протоколе SSH вы можете подключиться к контейнеру с помощью расширенных инструментов Службы приложений (KUDU). Чтобы упростить подключение к контейнеру по SSH, служба "Функции Azure" предоставляет базовый образ, в котором уже включен протокол SSH. Вам нужно только внести изменения в Dockerfile, а затем пересобрать и заново задеплоить образ. Затем вы можете подключиться к контейнеру с помощью Дополнительных инструментов (Kudu).
В вашем Dockerfile добавьте строку
-appservice
к базовому образу вFROM
инструкции, как показано в следующем примере:FROM mcr.microsoft.com/azure-functions/node:4-node18-appservice
В этом примере используется версия базового образа Node.js версии 18, с поддержкой SSH. Посетите репозитории базовых образов Azure Functions, чтобы убедиться, что вы используете последнюю версию базового образа с поддержкой SSH.
Перестройте образ с помощью команды
docker build
, замените<DOCKER_ID>
на идентификатор вашей учетной записи Docker Hub, как показано в следующем примере.docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
Отправьте обновленный образ в Docker Hub (это должно занять значительно меньше времени, чем первая принудительная отправка). Только обновлённые сегменты изображения должны быть загружены сейчас.
docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
Функции Azure автоматически переразвертывают образ в функциональном приложении; процесс выполняется менее чем за минуту.
В браузере откройте
https://<app_name>.scm.azurewebsites.net/
, заменив<app_name>
уникальным именем. Это URL-адрес конечной точки Дополнительных инструментов (Kudu) для контейнера приложения-функции.Войдите в свою учетную запись Azure, а затем выберите вкладку SSH, чтобы создать подключение к контейнеру. Если Azure все еще обновляет образ контейнера, подключение может занять некоторое время.
После установки подключения к контейнеру выполните команду
top
, чтобы просмотреть выполняющиеся в данный момент процессы.
Связанные статьи
В следующих статьях содержатся дополнительные сведения о развертывании контейнеров и управлении ими.