Технологии развертывания в Функциях Azure
Вы можете использовать несколько различных технологий для развертывания кода проекта в Функциях Azure на портале Azure. В этой статье приводятся общие сведения о доступных методах развертывания и рекомендации для лучшего способа использования в различных сценариях. Также приведен исчерпывающий список и основные сведения о базовых технологиях развертывания.
Методы развертывания
Технология развертывания, используемая для публикации кода в приложении-функции в Azure, зависит от конкретных потребностей и точки в цикле разработки. Например, во время разработки и тестирования развертывание можно выполнить непосредственно из средства разработки, такого как Visual Studio Code. Когда приложение работает в рабочей среде, вы, скорее всего, будете постоянно публиковать данные из системы управления версиями или с помощью конвейера автоматической публикации, который может включать проверку и тестирование.
В следующей таблице описаны доступные методы развертывания для проекта кода.
Тип развертывания | Методы | Оптимален для |
---|---|---|
На основе инструментов | • Публикация из Visual Studio Code Публикация из Visual Studio Публикация из основных инструментов |
Развертывания во время разработки и других импровизированных развертываний. Развертывание кода по запросу с помощью локальных средств разработки. |
Управление Службой приложений Azure | • Центр развертывания (CI/CD) • Развертывания контейнеров |
Непрерывное развертывание (CI/CD) из системы управления версиями или из реестра контейнеров. Развертывания управляются платформой Службы приложений Azure (Kudu). |
Внешние конвейеры | • Azure Pipelines • GitHub Actions |
Рабочие конвейеры, включающие проверку, тестирование и другие действия, которые должны выполняться в рамках автоматического развертывания. Развертывания управляются конвейером. |
Конкретные развертывания должны использовать лучшие технологии на основе конкретного сценария. Многие методы развертывания основаны на zip-развертывании, которое рекомендуется для развертывания.
Доступность технологии развертывания
Метод развертывания также зависит от плана размещения и операционной системы, в которой выполняется приложение-функцию.
В настоящее время Функции предлагают пять вариантов размещения приложений-функций:
- План потребления Flex
- Потребление
- План Elastic Premium
- План категории "Выделенный" (Служба приложений)
- Приложения контейнеров Azure
Каждый план имеет различный функционал. Не все технологии развертывания доступны для каждого плана размещения и операционной системы. Эта диаграмма содержит сведения о поддерживаемых технологиях развертывания:
Технология развертывания | Использование Flex | Потребление | Эластичный Premium | Выделенные | Контейнеры приложений |
---|---|---|---|---|---|
OneDeploy | ✔ | ||||
Развертывание ZIP-файла | ✔ | ✔ | ✔ | ||
URL-адресвнешнего пакета 1 | ✔ | ✔ | ✔ | ||
Контейнер Docker | Только для Linux | Только для Linux | Только для Linux | ✔ | |
Система управления версиями | Только Для Windows | ✔ | ✔ | ||
Локальный Git1 | Только Для Windows | ✔ | ✔ | ||
FTPS1 | Только Для Windows | ✔ | ✔ | ||
Редактированиена портале 2 | ✔ | ✔ | ✔ |
1 Технологии развертывания, требующие ручной синхронизации триггеров , не рекомендуется.
2 Редактирование на портале отключено при развертывании кода в приложении-функции за пределами портала. Дополнительные сведения, включая сведения о поддержке языка для редактирования на портале, см . в разделе "Сведения о поддержке языка".
Основные понятия
Некоторые ключевые понятия, важные для понимания работы развертываний в Функциях Azure.
Синхронизация триггеров
При изменении любого из триггеров инфраструктура функций должна учитывать изменения. Синхронизация происходит автоматически для многих технологий развертывания. Однако в некоторых случаях необходимо вручную синхронизировать триггеры.
При использовании следующих параметров развертывания необходимо вручную синхронизировать триггеры:
Триггеры синхронизации можно синхронизировать одним из следующих способов:
Перезапустите приложение-функцию на портале Azure.
az rest
Используйте команду для отправки HTTP-запроса POST, вызывающегоsyncfunctiontriggers
API, как в следующем примере:az rest --method post --url https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Web/sites/<APP_NAME>/syncfunctiontriggers?api-version=2016-08-01
При развертывании обновленной версии пакета развертывания и поддержании того же URL-адреса внешнего пакета необходимо вручную перезапустить приложение-функцию. Это указывает на узел, который должен синхронизировать и повторно развертывать обновления из того же URL-адреса пакета. Узел функций также выполняет синхронизацию фонового триггера после запуска приложения. Однако для планов размещения потребления и elastic Premium необходимо также вручную синхронизировать триггеры в следующих сценариях:
- Развертывания с использованием URL-адреса внешнего пакета с шаблонами ARM или Terraform.
- При обновлении пакета развертывания по одному URL-адресу внешнего пакета.
Удаленная сборка
Во время развертывания можно запросить Функции Azure выполнить удаленную сборку проекта кода. В этих сценариях следует запросить удаленную сборку вместо локального создания:
- Вы развертываете приложение в приложении-функции под управлением Linux, которое было разработано на компьютере Windows. Это обычно относится к разработке приложений Python. Вы можете в конечном итоге использовать неправильные библиотеки при создании пакета развертывания локально в Windows.
- Проект имеет зависимости от пользовательского индекса пакета.
- Вы хотите уменьшить размер пакета развертывания.
Запрос удаленной сборки зависит от того, работает ли ваше приложение в Azure в 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>
для обновления приложения-функции. Для выполнения этой команды может потребоваться две попытки.
Хранилище содержимого приложения
Методы развертывания на основе пакетов хранят пакет в учетной записи хранения, связанной с приложением-функцией, которая определена в параметре AzureWebJobsStorage . При наличии приложения плана "Потребление и эластичная премиум" пытаются использовать общую папку содержимого Файлы Azure из этой учетной записи, но вы также можете сохранить пакет в другом расположении. Вместо этого приложения плана потребления Flex используют контейнер хранилища в учетной записи хранения по умолчанию, если для развертывания не настроена другая учетная запись хранения. Дополнительные сведения см . в разделе "Где содержимое приложения хранится в каждой технологии развертывания", описанной в следующем разделе.
Внимание
Учетная запись хранения используется для хранения важных данных приложения, иногда включая сам код приложения. Необходимо ограничить доступ от других приложений и пользователей к учетной записи хранения.
Подробное описание технологии развертывания
В Функциях Azure доступны следующие методы развертывания.
Одно развертывание
Одно развертывание — это единственная технология развертывания, поддерживаемая для приложений в плане потребления Flex. Конечный результат — это готовый пакет .zip, на котором работает приложение-функция.
Практическое руководство. Развертывание с помощью функции публикации Visual Studio Code или из командной строки с помощью Функции Azure основных средств или Azure CLI. Задача Azure Dev Ops и действие GitHub также используют одно развертывание при обнаружении развертывания приложения Flex Consumption в.
При создании приложения Flex Consumption необходимо указать контейнер хранилища (BLOB-объектов), а также метод проверки подлинности. По умолчанию используется та же учетная запись хранения, что
AzureWebJobsStorage
и подключение, с строка подключения в качестве метода проверки подлинности. Таким образом, параметры развертывания настраиваются во время создания приложения без каких-либо параметров приложения.
Когда его использовать: одно развертывание является единственной технологией развертывания, доступной для приложений-функций, работающих в плане потребления Flex.
Где хранится содержимое приложения: при создании приложения-функции Flex Consumption необходимо указать контейнер хранилища развертывания. Это контейнер BLOB-объектов, в котором платформа отправит развернутое содержимое приложения. Чтобы изменить расположение, перейдите в колонку "Параметры развертывания" в портал Azure или с помощью Azure CLI.
Развертывание из ZIP-файла
Zip-развертывание — это стандартная и рекомендуемая технология развертывания для приложений-функций в планах потребления, elastic Premium и Служба приложений (выделенные). Конечный результат готового к выполнению пакета .zip, на котором работает приложение-функция. Он отличается от URL-адреса внешнего пакета в том, что наша платформа отвечает за удаленное построение и хранение содержимого приложения.
Практическое руководство. Развертывание с помощью любимого клиентского средства: Visual Studio Code, Visual Studio или из командной строки с помощью Функции Azure основных средств или Azure CLI. Задача Azure Dev Ops и GitHub Action аналогично используют zip-развертывание.
При развертывании из ZIP-файла можно настроить приложение для запуска из пакета. Для выполнения запуска из пакета необходимо установить параметр приложения
WEBSITE_RUN_FROM_PACKAGE
в значение1
. Рекомендуется использовать развертывание из ZIP-файла. Это позволяет ускорить загрузку приложений, и это метод по умолчанию для VS Code, Visual Studio и Azure CLI.
Когда его использовать: zip-развертывание — это стандартная и рекомендуемая технология развертывания для приложений-функций в планах потребления Windows, Windows и Linux Elastic Premium и Windows и Linux Служба приложений (выделенные).
Где хранится содержимое приложения: содержимое приложения из ZIP-файла по умолчанию хранится в файловой системе, которая может быть сохранена Файлы Azure из учетной записи хранения, указанной при создании приложения-функции. В потреблении Linux содержимое приложения сохраняется в большом двоичном объекте в учетной записи хранения, указанной
AzureWebJobsStorage
параметром приложения, и параметрWEBSITE_RUN_FROM_PACKAGE
приложения будет принимать значение URL-адреса БОЛЬШОго двоичного объекта.
URL-адрес внешнего пакета
URL-адрес внешнего пакета — это параметр, если вы хотите вручную управлять выполнением развертываний. Вы несете ответственность за отправку готового пакета .zip, содержащего созданное содержимое приложения в хранилище BLOB-объектов и ссылаясь на этот внешний URL-адрес как параметр приложения в приложении-функции. При перезапуске приложения он извлекает пакет, подключает его и запускается в режиме запуска из пакета .
Как использовать. Добавьте
WEBSITE_RUN_FROM_PACKAGE
в параметры приложения. Значение этого параметра должно быть URL-адресом БОЛЬШОго двоичного объекта, указывающим на расположение конкретного пакета, который требуется запустить приложение. Параметры можно добавить либо на портале, либо с использованием Azure CLI.Если вы используете Хранилище BLOB-объектов Azure, приложение-функция может получить доступ к контейнеру с помощью управляемого подключения на основе удостоверений или с подписанным URL-адресом (SAS). Выбор параметра влияет на тип URL-адреса, который вы используете в качестве значения для WEBSITE_RUN_FROM_PACKAGE. Управляемое удостоверение рекомендуется для общей безопасности, так как срок действия маркеров SAS истекает и должен поддерживаться вручную.
При развертывании файла пакета, на который ссылается приложение-функция, необходимо вручную синхронизировать триггеры, включая начальное развертывание. При изменении содержимого файла пакета и не самого URL-адреса необходимо также перезапустить приложение-функцию для синхронизации триггеров. Ознакомьтесь с нашим руководством по настройке этой технологии развертывания.
Когда его использовать: URL-адрес внешнего пакета является единственным поддерживаемым методом развертывания для приложений, работающих в плане потребления Linux, если вы не хотите выполнять удаленную сборку . Этот метод также является рекомендуемой технологией развертывания при создании приложения без Файлы Azure. Для масштабируемых приложений, работающих в Linux, следует вместо этого рассмотреть возможность размещения плана потребления Flex.
Где хранится содержимое приложения: вы несете ответственность за отправку содержимого приложения в хранилище BLOB-объектов. Вы можете использовать любую учетную запись хранения BLOB-объектов, хотя Хранилище BLOB-объектов Azure рекомендуется.
Контейнер Docker
Вы можете развернуть приложение-функцию, работающее в контейнере Linux.
Практическое руководство. Создайте функции в контейнере Linux, а затем разверните контейнер в плане "Премиум" или "Выделенный" в Функции Azure или другом узле контейнера. Используйте Функции Azure Core Tools для создания настраиваемого файла Dockerfile для проекта, используемого для создания контейнерного приложения-функции. Контейнер можно использовать в следующих развертываниях:
- Развернитесь в Функции Azure ресурсов, создаваемых в портал Azure. Дополнительные сведения см. в статье портал Azure создании с помощью контейнеров.
- Развертывание для Функции Azure ресурсов, создаваемых из командной строки. Требуется план "Премиум" или "Выделенный" (Служба приложений). Дополнительные сведения см. в статье "Создание первого контейнеризованного Функции Azure".
- Развертывание в приложениях контейнеров Azure. Сведения о том, как создать первую контейнерную Функции Azure в приложениях контейнеров Azure.
- Развертывание в Azure Arc (предварительная версия). Дополнительные сведения см. в статье "Создание первого контейнеризованного Функции Azure в Azure Arc (предварительная версия)".
- Развертывание в кластере Kubernetes. Вы можете развернуть в кластере с помощью Функции Azure основных средств. Используйте команду
func kubernetes deploy
.
Когда его использовать: используйте параметр контейнера 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.
Следующие шаги
Ознакомьтесь со следующими статьями, чтобы узнать больше о развертывании приложений-функций.