Создание первой функции в 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
    

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

    Screenshot of terminal window output when running function locally.

    Примечание.

    Если результат 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.

В следующем примере замените <APP_NAME> на имя своего приложения.

func azure functionapp publish <APP_NAME>

Команда publish показывает результаты, аналогичные приведенным ниже (усечены для простоты):

...

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. В браузере должны отображаться выходные данные, аналогичные данным при локальном запуске функции.

The output of the function run on Azure in a browser

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

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