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

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

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

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

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

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

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

Функции 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 о том, что ваше приложение изменилось.

Развертывание из 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 с помощью пользовательского образа.

Чтобы выполнить развертывание в существующем приложении с помощью пользовательского контейнера, в Azure Functions Core Tools используйте команду func 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.

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

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