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

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

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

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

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

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

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

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

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

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

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

1 технология развертывания, требующая синхронизации триггеров вручную. 2 редактирование на портале включено только для триггеров HTTP и таймера для функций в Linux с премиальным и выделенным планами.

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

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

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

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

  • Перезапустите приложение-функцию на портале 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. Вместо заполнителей подставьте ИД подписки, имя группы ресурсов и имя приложения-функции.

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

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

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

Примечание

Если возникают проблемы с удаленной сборкой, это может быть вызвано тем, что приложение было создано до того, как функция стала доступной (1 августа 2019 г.). Попробуйте создать новое приложение-функцию или выполите команду az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME>, чтобы обновить приложение-функцию. Для выполнения этой команды может потребоваться две попытки.

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

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

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

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

Чтобы включить удаленную сборку в Linux, необходимо задать следующие Параметры приложения:

  • ENABLE_ORYX_BUILD=true
  • SCM_DO_BUILD_DURING_DEPLOYMENT=true

По умолчанию как Azure Functions Core Tools, так и Расширение платформы Функции Azure для Visual Studio Code выполняют удаленные сборки при развертывании в Linux. По этой причине оба средства автоматически создают эти параметры в Azure.

Когда приложения создаются удаленно в Linux, они запускаются из пакета развертывания.

План потребления

В приложениях-функциях Linux, выполняющихся в плане потребления, отсутствует сайт SCM/Kudu, что ограничивает возможности развертывания. Однако приложения-функции в Linux, работающие в плане потребления, поддерживают удаленные сборки.

Выделенный и премиальный планы

Приложения-функции, работающие в Linux с Выделенным планом (Служба приложений Azure) и Премиальным планом, также имеют ограниченный сайт SCM/Kudu.

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

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

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

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

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

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

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

Развертывание из 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.

Контейнер Docker

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

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

  • Создайте приложение-функцию на платформе Linux в плане Службы приложений Azure (предварительная версия) на портале Azure. Для публикации выберите образ Docker, а затем настройте контейнер. Введите расположение, в котором размещен образ.
  • Создайте приложение-функцию для Linux в плане Службы приложений Azure (предварительная версия) с использованием Azure CLI. Дополнительные сведения см. в статье Создание функции в Linux с помощью пользовательского образа.

Чтобы выполнить развертывание в кластере Kubernetes, используемом как пользовательский контейнер, в Azure Functions Core Tools, используйте команду func kubernetes deploy.

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

Web Deploy (MSDeploy)

Web Deploy упаковывает и развертывает ваши приложения Windows на любом сервере IIS, включая приложения-функции, работающие в Windows в Azure.

Как использовать. Используйте Средства Visual Studio для Функций Azure. Снимите флажок Запустить из файла пакета (рекомендуется) .

Можно также загрузить Web Deploy 3.6 и вызвать MSDeploy.exe напрямую.

Когда использовать. Web Deploy поддерживается и не имеет проблем, но предпочтительным механизмом является развертывание из ZIP-файла с включенным запуском из пакета. Дополнительные сведения см. в статье Руководство по разработке в Visual Studio.

Система управления версиями

Используйте систему управления версиями для подключения приложения-функции к репозиторию Git. Обновление кода в этом репозитории активирует развертывание. Дополнительные сведения см. в Kudu Wiki.

Как использовать. Используйте центр развертывания в области "Функции" на портале, чтобы настроить публикацию из системы управления версиями. Дополнительные сведения см. в статье Непрерывное развертывание для функций Azure.

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

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

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

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

Когда использовать. В большинстве случаев рекомендуется использовать другой метод развертывания. При публикации из локального репозитория Git необходимо вручную синхронизировать триггеры.

Облачная синхронизация

Используйте синхронизацию с облаком для синхронизации содержимого из Dropbox и OneDrive в Функции Azure.

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

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

FTP

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

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

Когда использовать. В большинстве случаев рекомендуется использовать другие методы развертывания. При публикации с использованием FTP необходимо вручную синхронизировать триггеры.

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

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

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

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

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

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

* Редактирование на портале доступно только для триггеров HTTP и триггеров таймера для Функций в Linux с премиальным и выделенным планами.

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

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

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

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

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

Дальнейшие действия

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