Создание первой функции в Azure Arc (предварительная версия)
В этом кратком руководстве показано, как создать проект Функций Azure и развернуть его в приложении-функции, работающей в кластере Kubernetes с поддержкой Azure Arc. Дополнительные сведения см. в разделе Служба приложений, функции и Logic Apps в службе Azure Arc. Этот сценарий поддерживает только приложения функций, работающие в Linux.
Примечание.
Возможность выполнения функций в кластере Kubernetes с поддержкой Azure Arc в настоящее время доступна в предварительной версии.
Публикация проектов функций PowerShell в кластерах Kubernetes с поддержкой Azure Arc сейчас не поддерживается. Если вам нужно развернуть функции PowerShell в кластерах Kubernetes с поддержкой Azure Arc, создайте приложение-функцию в контейнере.
Если необходимо настроить контейнер, в котором выполняется приложение-функция, вместо этого см. статью "Создание первых контейнерных функций в Azure Arc (предварительная версия)".
Необходимые компоненты
На локальном компьютере:
- Пакет SDK для .NET 6.0
- Azure CLI 2.4 или более поздней версии
Установка основных инструментов Функций Azure
Рекомендуемый способ установки основных средств зависит от операционной системы локального компьютера разработки.
Следующая процедура устанавливает Core Tools версии v4.x с помощью установщика Windows (MSI). Дополнительные сведения о других установщиках на основе пакетов, см. в файле readme для Core Tools.
Скачайте и запустите установщик Core Tools для используемой версии Windows:
- v4.x — Windows 64-разрядная версия (рекомендуется для отладки Visual Studio Code требуется 64-разрядная версия.)
- v4.x - Windows 32-bit
Если вы ранее использовали установщик 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 проект функций представляет собой единицу развертывания и выполнения для одной или нескольких отдельных функций, каждая из которых реагирует на конкретный триггер. Все функции в проекте совместно используют те же локальные конфигурации и конфигурации размещения. В этом разделе вы создадите проект функций, содержащий одну функцию.
Выполните команду
func init
, как показано ниже, чтобы создать проект функций в папке с именем LocalFunctionProj с указанной средой выполнения:func init LocalFunctionProj --dotnet
Перейдите в папку проекта:
cd LocalFunctionProj
Эта папка содержит различные файлы проекта, в том числе файлы конфигурации local.settings.json и host.json. По умолчанию файл local.settings.json исключен из системы управления версиями в файле с расширением .gitignore. Это исключение связано с тем, что файл может содержать секреты, скачанные из Azure.
Добавьте функцию в проект с помощью приведенной ниже команды, где аргумент
--name
— уникальное имя функции (HttpExample), а аргумент--template
позволяет указать триггер функции (HTTP).func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
Локальное выполнение функции
Выполните функцию, запустив локальное хост-приложение среды выполнения Функций Azure из папки LocalFunctionProj.
func start
Ближе к концу выходных данных появятся следующие строки:
Примечание.
Если результат HttpExample не похож на пример выше, скорее всего, вы запустили основное приложение из папки, отличной от корневой папки проекта. В этом случае остановите хост-приложение клавишами CTRL+C, перейдите в корневую папку проекта и снова выполните указанную выше команду.
Скопируйте URL-адрес функции HTTP из этих выходных данных в браузер и добавьте строку
?name=<YOUR_NAME>
запроса, выполнив полный URL-адрес, напримерhttp://localhost:7071/api/HttpExample?name=Functions
. Браузер отобразит ответное сообщение, содержащее значение строки запроса. Терминал, в котором вы запустили проект, также выводит данные журнала при выполнении запросов.Когда все будет готово, нажмите клавиши 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
. В браузере должны отображаться выходные данные, аналогичные данным при локальном запуске функции.
Следующие шаги
Теперь, когда приложение-функция работает в контейнере среды Kubernetes Службы приложений с поддержкой Azure Arc, вы можете подключить его к службе хранилища Azure, добавив выходную привязку Хранилища очередей.