Поделиться через


Создание первой функции в Azure Arc (предварительная версия)

В этом кратком руководстве показано, как создать проект Функций Azure и развернуть его в приложении-функции, работающей в кластере Kubernetes с поддержкой Azure Arc. Дополнительные сведения см. в разделе Служба приложений, функции и Logic Apps в службе Azure Arc. Этот сценарий поддерживает только приложения функций, работающие в Linux.

Примечание.

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

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

Если необходимо настроить контейнер, в котором выполняется приложение-функция, вместо этого см. статью "Создание первых контейнерных функций в Azure Arc (предварительная версия)".

Необходимые компоненты

На локальном компьютере:

Установка основных инструментов Функций Azure

Рекомендуемый способ установки основных средств зависит от операционной системы локального компьютера разработки.

Следующая процедура устанавливает Core Tools версии v4.x с помощью установщика Windows (MSI). Дополнительные сведения о других установщиках на основе пакетов, см. в файле readme для Core Tools.

Скачайте и запустите установщик Core Tools для используемой версии Windows:

Если вы ранее использовали установщик Windows (MSI) для установки основных инструментов в Windows, перед установкой последней версии удалите старую версию из команды "Добавить программы".

Создание среды Kubernetes для Службы приложений

Прежде чем начать, необходимо создать среду Kubernetes Службы приложений для кластера Kubernetes с поддержкой Azure Arc.

Примечание.

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

Если вы не создали среду, обратитесь к администратору кластера.

Добавление расширений Azure CLI

Откройте среду Bash в Azure Cloud Shell.

Так как эти команды интерфейса командной строки пока не входят в основной набор CLI, добавьте их с помощью следующих команд:

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

Создание локального проекта функции

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

  1. Выполните команду func init, как показано ниже, чтобы создать проект функций в папке с именем LocalFunctionProj с указанной средой выполнения:

    func init LocalFunctionProj --dotnet
    
  2. Перейдите в папку проекта:

    cd LocalFunctionProj
    

    Эта папка содержит различные файлы проекта, в том числе файлы конфигурации local.settings.json и host.json. По умолчанию файл local.settings.json исключен из системы управления версиями в файле с расширением .gitignore. Это исключение связано с тем, что файл может содержать секреты, скачанные из Azure.

  3. Добавьте функцию в проект с помощью приведенной ниже команды, где аргумент --name — уникальное имя функции (HttpExample), а аргумент --template позволяет указать триггер функции (HTTP).

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

Локальное выполнение функции

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

    func start
    

    Ближе к концу выходных данных появятся следующие строки:

    Снимок экрана: вывод окна терминала при локальном выполнении функции.

    Примечание.

    Если результат HttpExample не похож на пример выше, скорее всего, вы запустили основное приложение из папки, отличной от корневой папки проекта. В этом случае остановите хост-приложение клавишами CTRL+C, перейдите в корневую папку проекта и снова выполните указанную выше команду.

  2. Скопируйте URL-адрес функции HTTP из этих выходных данных в браузер и добавьте строку ?name=<YOUR_NAME>запроса, выполнив полный URL-адрес, например http://localhost:7071/api/HttpExample?name=Functions. Браузер отобразит ответное сообщение, содержащее значение строки запроса. Терминал, в котором вы запустили проект, также выводит данные журнала при выполнении запросов.

  3. Когда все будет готово, нажмите клавиши CTRL+C и введите y, чтобы отключить хост-приложение функции.

Получение пользовательского расположения

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

Получите сведения о пользовательском расположении от администратора кластера (см. раздел Создание пользовательского расположения).

customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"

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

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

Создание ресурсов Azure

Перед развертыванием кода функции в новой среде Kubernetes Службы приложений необходимо создать еще два ресурса:

  • Учетная запись хранения. В этой статье описано создание учетной записи хранения, но в некоторых случаях она не требуется. Подробнее см. раздел Кластеры с поддержкой Azure Arc в статье рекомендаций по хранению.
  • Приложение-функция, которое предоставляет контекст для выполнения кода вашей функции. Приложение-функция выполняется в среде Kubernetes Службы приложений и сопоставляется с вашим локальным проектом функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание и совместное использование ресурсов, а также управление ими.

Примечание.

Приложения-функции выполняются в среде Kubernetes Службы приложений с планом "Выделенный" (Служба приложений). При создании приложения-функции без существующего плана необходимый план создается.

Создание учетной записи хранения

Воспользуйтесь командой az storage account create, чтобы создать учетную запись хранения общего назначения в группе ресурсов и регионе.

az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Примечание.

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

В предыдущем примере замените <STORAGE_NAME> соответствующим именем, которое является уникальным в службе хранилища Azure. Имена должны содержать от трех до 24 символов и только в нижнем регистре. Standard_LRS указывает учетную запись общего назначения, которая поддерживается Функциями. Значение --location — стандартный регион Azure.

Создание приложения-функции

Выполните команду az functionapp create, чтобы создать новое приложение-функцию в среде.

az functionapp create --resource-group MyResourceGroup --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --functions-version 4 --runtime dotnet 

В этом примере замените <CUSTOM_LOCATION_ID> идентификатором пользовательского расположения, которое было определено для среды Kubernetes службы приложений. Также замените <STORAGE_NAME> именем учетной записи, использованной на предыдущем шаге, и измените <APP_NAME> на глобально уникальное имя, подходящее вам.

Развертывание проекта функций в Azure

После успешного создания приложения-функции в Azure теперь можно развернуть проект локальных функций с помощью func azure functionapp publish команды.

В корневой папке проекта выполните следующую func azure functionapp publish команду:

func azure functionapp publish <APP_NAME>

В этом примере следует заменить <APP_NAME> именем приложения. Успешное развертывание показывает результаты, аналогичные следующим выходным данным (усеченным для простоты):

...

Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.

...

Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in msdocs-azurefunctions-qs:
    HttpExample - [httpTrigger]
        Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample

Так как выполнение полного развертывания в кластере Kubernetes с поддержкой Azure Arc может занять некоторое время, для проверки опубликованных функций, возможно, потребуется повторно выполнить следующую команду:

func azure functionapp list-functions

Вызов функции в Azure

Функция использует триггер HTTP, поэтому ее необходимо вызывать через HTTP-запрос по URL-адресу в браузере или с помощью такого средства, как curl.

Скопируйте полный URL-адрес вызова Invoke URL, показанный в выходных данных команды publish, в адресную строку браузера, добавив параметр запроса ?name=Functions. В браузере должны отображаться выходные данные, аналогичные данным при локальном запуске функции.

Выходные данные функции, выполняемой в Azure в браузере

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

Теперь, когда приложение-функция работает в контейнере среды Kubernetes Службы приложений с поддержкой Azure Arc, вы можете подключить его к службе хранилища Azure, добавив выходную привязку Хранилища очередей.