Технологии развертывания в Функциях Azure

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

Методы развертывания

Технология развертывания, используемая для публикации кода в приложении-функции в Azure, зависит от конкретных потребностей и точки в цикле разработки. Например, во время разработки и тестирования развертывание можно выполнить непосредственно из средства разработки, такого как Visual Studio Code. Когда приложение работает в рабочей среде, вы, скорее всего, будете постоянно публиковать данные из системы управления версиями или с помощью конвейера автоматической публикации, который может включать проверку и тестирование.

В следующей таблице описаны доступные методы развертывания для проекта кода.

Тип развертывания Методы Оптимален для
На основе инструментов Публикация из Visual Studio Code
Публикация из Visual Studio
Публикация из основных инструментов
Развертывания во время разработки и других импровизированных развертываний. Развертывание кода по запросу с помощью локальных средств разработки.
Управление Службой приложений Azure Центр развертывания (CI/CD)
Развертывания контейнеров
Непрерывное развертывание (CI/CD) из системы управления версиями или из реестра контейнеров. Развертывания управляются платформой Службы приложений Azure (Kudu).
Внешние конвейеры Azure Pipelines
GitHub Actions
Рабочие конвейеры, включающие проверку, тестирование и другие действия, которые должны выполняться в рамках автоматического развертывания. Развертывания управляются конвейером.

Конкретные развертывания должны использовать лучшие технологии на основе конкретного сценария. Многие методы развертывания основаны на zip-развертывании, которое рекомендуется для развертывания.

Доступность технологии развертывания

Метод развертывания также зависит от плана размещения и операционной системы, в которой выполняется приложение-функцию.
В настоящее время Функции предлагают три плана размещения:

Каждый план имеет различный функционал. Не все технологии развертывания доступны для каждого плана размещения и операционной системы. Эта диаграмма содержит сведения о поддерживаемых технологиях развертывания:

Технология развертывания Windows с планом потребления Windows с премиальным планом Windows с выделенным планом Linux с планом потребления Linux с премиальным планом Linux с выделенным планом
URL-адресвнешнего пакета 1
Развертывание ZIP-файла
Контейнер Docker
Система управления версиями
Локальный Git1
FTPS1
Редактированиена портале 2

1 Технологии развертывания, требующие ручной синхронизации триггеров , не рекомендуется.
2 Редактирование на портале отключено при развертывании кода в приложении-функции за пределами портала. Дополнительные сведения, включая сведения о поддержке языка для редактирования на портале, см . в разделе "Сведения о поддержке языка".

Основные понятия

Некоторые ключевые понятия, важные для понимания работы развертываний в Функциях Azure.

Синхронизация триггеров

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

При использовании этих параметров развертывания необходимо синхронизировать триггеры вручную упоминание:

Синхронизировать триггеры можно одним из способов.

  • Перезапустите приложение-функцию на портале Azure.
  • Отправьте запрос HTTP POST на https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> с использованием главного ключа.
  • Отправьте запрос HTTP POST на https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Вместо заполнителей подставьте ИД подписки, имя группы ресурсов и имя приложения-функции. Для этого запроса требуется маркер доступа в заголовкеAuthorization запроса.

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

Если приложение-функция защищено ограничениями входящего сетевого трафика, конечная точка синхронизации активирует только из клиента в виртуальной сети.

Удаленная сборка

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

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

При развертывании приложения в Windows выполняются команды для конкретного языка, например dotnet restore (C#) или npm install (JavaScript).

При использовании удаленных сборок во время развертывания применяются следующие рекомендации.

  • Удаленные сборки поддерживаются для приложений-функций, работающих в Linux в плане потребления. Однако варианты развертывания ограничены для этих приложений, так как у них нет scm сайта Kudu.
  • У приложений-функций, работающих в Linux, план "Премиум" или в выделенном (Служба приложений) плане есть scm сайт (Kudu), но он ограничен по сравнению с Windows.
  • Удаленные сборки не выполняются, если приложение использует запуск из пакета. Сведения об использовании удаленной сборки в этих случаях см. в статье "Развертывание ZIP".
  • У вас могут возникнуть проблемы с удаленной сборкой, когда приложение было создано до того, как эта функция была доступна (1 августа 2019 г.). Для старых приложений создайте новое приложение-функцию или запустите az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> для обновления приложения-функции. Для выполнения этой команды может потребоваться две попытки.

Хранилище содержимого приложения

Несколько методов развертывания хранят развернутые или созданные полезные данные приложения в учетной записи хранения, связанной с приложением-функцией. Функции пытаются использовать общую папку содержимого Файлы Azure при настройке, но некоторые методы вместо этого хранят полезные данные в экземпляре хранилища BLOB-объектов, связанном с подключениемAzureWebJobsStorage. Дополнительные сведения см. в разделе " Где содержимое приложения хранится абзацы каждой технологии развертывания" в следующем разделе.

Внимание

Учетная запись хранения используется для хранения важных данных приложения, иногда включая сам код приложения. Необходимо ограничить доступ от других приложений и пользователей к учетной записи хранения.

Подробное описание технологии развертывания

В Функциях Azure доступны следующие методы развертывания.

URL-адрес внешнего пакета

URL-адрес внешнего пакета можно использовать для ссылки на файл удаленного пакета (ZIP), содержащий приложение-функцию. Файл загружается по указанному URL-адресу, и приложение запускается в режиме запуска из пакета.

Как использовать. Добавьте WEBSITE_RUN_FROM_PACKAGE в параметры приложения. Значение этого параметра должно быть URL-адресом (расположением определенного файла пакета, который требуется выполнить). Параметры можно добавить либо на портале, либо с использованием Azure CLI.

При использовании хранилища BLOB-объектов Azure используйте частный контейнер с подписанным URL-адресом (SAS), чтобы предоставить функциям доступ к пакету. При каждом перезапуске приложение получает копию содержимого. Ссылка должна быть действительна в течение времени существования приложения.

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

Где хранится содержимое приложения: содержимое приложения хранится по указанному URL-адресу. Это может быть в больших двоичных объектах Azure, возможно, в учетной записи хранения, указанной подключением AzureWebJobsStorage . Некоторые клиентские средства могут по умолчанию развертываться в большом двоичном объекте в этой учетной записи. Например, для приложений потребления Linux Azure CLI попытается развернуть пакет, хранящийся в большом двоичном объекте, в учетной записи, указанной в AzureWebJobsStorageней.

Развертывание из ZIP-файла

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

Как использовать. Выполните развертывание с помощью любимого клиентского средства: Visual Studio Code, Visual Studio или из командной строки с помощью Azure Functions Core Tools. По умолчанию эти средства используют развертывание из ZIP-файла и запускаются из пакета. Основные средства и расширение Visual Studio Code позволяют включить удаленную сборку при развертывании в Linux. Чтобы вручную развернуть ZIP-файл в приложение-функцию, следуйте инструкциям в разделе развертывание из ZIP-файла или URL-адреса.

При развертывании из ZIP-файла можно настроить приложение для запуска из пакета. Для выполнения запуска из пакета необходимо установить параметр приложения WEBSITE_RUN_FROM_PACKAGE в значение 1. Рекомендуется использовать развертывание из ZIP-файла. Это позволяет ускорить загрузку приложений, и это метод по умолчанию для VS Code, Visual Studio и Azure CLI.

Когда использовать. Развертывание из ZIP-файла — это рекомендуемая технология развертывания для Функций Azure.

Где хранится содержимое приложения: содержимое приложения из ZIP-файла по умолчанию хранится в файловой системе, которая может быть сохранена Файлы Azure из учетной записи хранения, указанной при создании приложения-функции. В потреблении Linux содержимое приложения сохраняется в большом двоичном объекте в учетной записи хранения, указанной подключением AzureWebJobsStorage .

Контейнер Docker

Вы можете развернуть приложение-функцию, работающее в контейнере Linux.

Практическое руководство. Создание функций в контейнере Linux, а затем развертывание контейнера в плане "Премиум" или "Выделенный" в Функции Azure или другом узле контейнера. Используйте Функции Azure Core Tools для создания настраиваемого файла Dockerfile для проекта, используемого для создания контейнерного приложения-функции. Контейнер можно использовать в следующих развертываниях:

Когда его использовать: используйте параметр контейнера Docker, если требуется более контроль над средой Linux, в которой выполняется приложение-функция и где размещен контейнер. Этот механизм развертывания доступен только для функций, работающих в Linux.

Где хранится содержимое приложения: содержимое приложения хранится в указанном реестре контейнеров в составе образа.

Управление исходным кодом

Вы можете включить непрерывную интеграцию между приложением-функцией и репозиторием исходного кода. При включении системы управления версиями обновление кода в подключенном исходном репозитории активирует развертывание последнего кода из репозитория. Дополнительные сведения см. в разделе "Непрерывное развертывание" для Функции Azure.

Практическое руководство. Самый простой способ настройки публикации из системы управления версиями — из Центра развертывания в области "Функции" портала. Дополнительные сведения см. в статье Непрерывное развертывание для функций Azure.

Когда использовать. Использование системы управления версиями — это лучшая методика для команд, совместно работающих с приложениями-функциями. Система управления версиями — хороший вариант развертывания, обеспечивающий использование более сложных конвейеров развертывания. Управление версиями обычно включается в промежуточном слоте, который можно переключить в рабочую среду после проверки обновлений из репозитория. Дополнительные сведения см. в разделе Функции Azure слотов развертывания.

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

Локальный репозиторий Git

Вы можете использовать локальный репозиторий Git для отправки кода с локального компьютера в Функции Azure с помощью Git.

Как использовать. Следуйте инструкциям в статье Развертывание локального репозитория Git в Службе приложений Azure.

Когда его использовать: чтобы уменьшить вероятность ошибок, следует избегать использования методов развертывания, требующих дополнительного шага синхронизации триггеров вручную. Используйте развертывание ZIP по возможности.

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

FTP/S

С помощью FTP/S можно напрямую передавать файлы в Функции Azure, хотя этот метод развертывания не рекомендуется. Если вы не планируете использовать FTP, его следует отключить. Если вы решите использовать FTP, следует принудительно применять FTPS. Сведения о том, как портал Azure, см. в статье "Принудительное применение FTPS".

Практическое руководство. Следуйте инструкциям в параметрах развертывания FTPS, чтобы получить URL-адрес и учетные данные, которые можно использовать для развертывания в приложении-функции с помощью FTPS.

Когда его использовать: чтобы уменьшить вероятность ошибок, следует избегать использования методов развертывания, требующих дополнительного шага синхронизации триггеров вручную. Используйте развертывание ZIP по возможности.

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

Редактирование на портале

В редакторе на портале можно изменять файлы, которые используются в приложении-функции (по сути, выполняя развертывание каждый раз при сохранении изменений).

Практическое руководство. Чтобы изменить функции в портал Azure, необходимо создать функции на портале. С целью сохранения единого источника достоверного кода, использование любого другого метода развертывания сделает функцию доступной только для чтения и не позволит продолжить редактирование на портале. Чтобы вернуться к состоянию, в котором можно изменить файлы в портал Azure, можно вручную включить режим редактирования и удалить все параметры приложения, связанные с развертыванием Read/Write (напримерWEBSITE_RUN_FROM_PACKAGE).

Когда использовать. Портал — хороший способ начать работу с Функциями Azure. Для более расширенной работы по разработке рекомендуется использовать одно из следующих клиентских средств:

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

В следующей таблице показаны операционные системы и языки, поддерживающие редактирование на портале:

Язык Windows с планом потребления Windows с премиальным планом Windows с выделенным планом Linux с планом потребления Linux с премиальным планом Linux с выделенным планом
C#1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 Редактирование на портале поддерживается только для файлов скриптов C#, которые выполняются в процессе с узлом. Дополнительные сведения см. в справочнике разработчика по скрипту C# Функции Azure (CSX).
2 Редактирование на портале поддерживается только для модели программирования Python версии 1.

Поведение развертывания

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

Если вам требуется больший контроль над этим переходом, следует использовать слоты развертывания.

Слоты развертывания

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

Способ развертывания в слоте зависит от используемого средства развертывания. Например, при использовании Функции Azure Core Tools можно указать--slot имя определенного слота для func azure functionapp publish команды.

Дополнительные сведения о слотах развертывания см. в документации по слотам развертывания Функций Azure.

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

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