Рубрики
Без рубрики

Использование нового плагина Gradle для функций Azure для развертывания бессерверных приложений Spring Boot

В этом посте показано, как использовать новый плагин Gradle для функций Azure с функциями Spring Cloud. Помечен как spring, azure, java, сервлеты.

Представляем новый плагин Gradle для Azure

Для создания и развертывания Java-проектов Azure всегда имела отличную поддержку Maven, но ей не хватало поддержки Gradle. Поскольку многие люди любят Gradle, особенно при создании сложных проектов, я был очень рад узнать, что разрабатывается новый набор плагинов Gradle! Все они будут с открытым исходным кодом, и их код будет доступен на GitHub по адресу https://github.com/microsoft/azure-gradle-plugins .

Первый плагин, который будет выпущен, – это плагин для функций Azure, расположенный по адресу https://github.com/microsoft/azure-gradle-plugins/tree/master/azure-functions-gradle-plugin . Azure Functions – это бессерверное предложение Azure, и вы можете использовать его для запуска ваших рабочих нагрузок Java в управляемой, управляемой событиями, полностью масштабируемой и недорогой среде.

Если вы хотите запустить этот плагин Gradle для простого приложения без сервера Java, полная документация доступна на веб-сайте Microsoft Docs . Это хорошо для простого Java-приложения, которое вы бы использовали для очень простой функции, но как насчет более сложных приложений, которые обычно получают больше пользы от использования Gradle?

Запуск Spring Boot в бессерверной среде

Благодаря работе Microsoft с Pivotal/VMware вы можете запускать функции Spring Boot в Azure, используя Spring Cloud Function project, который имеет специальные Поддержка Azure .

Если вы хотите протестировать функцию Spring Cloud и функции Azure, я поддерживаю официальный образец приложения по адресу Если вы хотите протестировать функцию Spring Cloud и функции Azure, я поддерживаю официальный образец приложения по адресу

Использование нового плагина Gradle для развертывания функций Spring Boot в Azure

Я создал конкретную ветку gradle в официальном образце проекта, который вы можете проверить по адресу Я создал конкретную ветку gradle

С помощью этого кода вы сможете использовать новый плагин Azure Gradle для развертывания приложения Spring Cloud Function в Azure Functions.

Он использует один конкретный трюк, чтобы заставить функции Azure запускать “Основной” класс Spring Boot, и именно поэтому мы добавили этот блок в файл build.gradle :

jar {
    manifest {
        attributes 'Main-Class' : 'com.example.HelloFunction'
    }
}

Приведенный выше блок кода создаст определенный файл манифеста Java, который указывает на основной класс Spring Boot, чтобы функции Azure выполняли его.

Если вы посмотрите на версию Maven этого приложения, мы копируем определенный файл local.settings.json для достижения той же цели (помогая функциям Azure находить основной класс). Это решение выглядит более элегантно с Gradle.

Затем остальная часть конфигурации обычно использует плагин Gradle:

azurefunctions {
    resourceGroup = 'my-spring-function-resource-group'
    appName = 'my-spring-function'
    appSettings {
        WEBSITE_RUN_FROM_PACKAGE = '1'
        FUNCTIONS_EXTENSION_VERSION = '~2'
        FUNCTIONS_WORKER_RUNTIME = 'java'
        MAIN_CLASS = 'com.example.HelloFunction'
    }
    authentication {
        type = 'azure_cli'
    }
    // enable local debug
    // localDebug = "transport=dt_socket,server=y,suspend=n,address=5005"
    deployment {
        type = 'run_from_blob'
    }
}
  • Вам нужно будет настроить определенную группу ресурсов Azure, в которой будет выполняться ваша функция.
  • Вам нужно будет присвоить вашей функции уникальное имя приложения : это имя должно быть уникальным во всей Azure, поэтому обычно люди добавляют к нему префикс своего имени пользователя.
  • Мы используем последнюю версию FUNCTIONS_EXTENSION_VERSION , доступную на момент написания этой статьи, поскольку она имеет гораздо лучшую производительность холодного запуска при запуске Java.

Теперь, когда плагин установлен, вы можете использовать следующие команды Gradle:

gradle azureFunctionsRun

Это позволит запускать функции Azure локально, так что это лучший способ разработки и отладки вашей функции.

gradle azureFunctionsPackage

Это позволит упаковать ваше приложение, чтобы оно было готово к развертыванию в Azure Functions.

gradle azureFunctionsDeploy

Это позволит развернуть вашу функцию в Azure Functions, чтобы она была доступна в облаке.

Затем приложение, конечно же, работает точно так же, как и приложение, созданное с помощью Maven! Таким образом, вы можете протестировать его, выполнив запрос cURL следующим образом:

curl https://.azurewebsites.net/api/hello -d "{\"name\":\"Azure\"}"

Оригинал: “https://dev.to/azure/using-the-new-gradle-plugin-for-azure-functions-to-deploy-spring-boot-serverless-applications-4594”