Бөлісу құралы:


Технологии развертывания в Функциях 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 Потребление Эластичный 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 для проекта, используемого для создания контейнерного приложения-функции. Контейнер можно использовать в следующих развертываниях:

Когда его использовать: используйте параметр контейнера 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.

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

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