Краткое руководство. Развертывание первого приложения Azure Spring CloudQuickstart: Deploy your first Azure Spring Cloud application

В этом кратком руководстве объясняется, как развернуть простое приложение микрослужбы Azure Spring Cloud для запуска в Azure.This quickstart explains how to deploy a simple Azure Spring Cloud microservice application to run on Azure.

Примечание

В настоящее время поддержка Steeltoe для Azure Spring Cloud предлагается в качестве общедоступной предварительной версии.Steeltoe support for Azure Spring Cloud is currently offered as a public preview. Предложения общедоступной предварительной версии позволяют клиентам экспериментировать с новыми функциями до официального выпуска.Public preview offerings allow customers to experiment with new features prior to their official release. Общедоступные предварительные версии функций и служб не предназначены для использования в рабочей среде.Public preview features and services are not meant for production use. Чтобы получить дополнительные сведения о поддержке на этапе использования предварительных версий, ознакомьтесь с разделом Вопросы и ответы или оформите запрос на поддержку.For more information about support during previews, see the FAQ or file a Support request.

Из этого краткого руководства вы узнаете, как выполнить следующие задачи:By following this quickstart, you'll learn how to:

  • создание базового проекта Steeltoe .NET Core;Generate a basic Steeltoe .NET Core project
  • подготовка экземпляра службы Azure Spring Cloud;Provision an Azure Spring Cloud service instance
  • сборка и развертывание приложения с общедоступной конечной точкой;Build and deploy the app with a public endpoint
  • Потоковая передача журналов в режиме реального времениStream logs in real time

Код приложения, используемый в этом кратком руководстве, представляет собой простое приложение, созданное с помощью шаблона проекта веб-API .NET Core.The application code used in this quickstart is a simple app built with a .NET Core Web API project template. После завершения работы с этим примером приложение будет доступно через Интернет, и вы сможете управлять им с помощью портала Azure и Azure CLI.When you've completed this example, the application will be accessible online and can be managed via the Azure portal and the Azure CLI.

Предварительные требованияPrerequisites

Установка расширения Azure CLIInstall Azure CLI extension

Убедитесь в наличии Azure CLI версии 2.0.67 или более поздней.Verify that your Azure CLI version is 2.0.67 or later:

az --version

Установите расширение Azure Spring Cloud для Azure CLI с помощью следующей команды:Install the Azure Spring Cloud extension for the Azure CLI using the following command:

az extension add --name spring-cloud

Вход в AzureLog in to Azure

  1. Войдите в систему Azure CLI.Log in to the Azure CLI

    az login
    
  2. Если у вас есть несколько подписок, выберите ту, которую будете использовать для изучения этого краткого руководства.If you have more than one subscription, choose the one you want to use for this quickstart.

    az account list -o table
    
    az account set --subscription <Name or ID of a subscription from the last step>
    

Создание проекта Steeltoe .NET CoreGenerate a Steeltoe .NET Core project

В Visual Studio создайте веб-приложение ASP.NET Core с именем hello-world с помощью шаблона проекта API.In Visual Studio, create an ASP.NET Core Web application named as "hello-world" with API project template. Обратите внимание, что в дальнейшем WeatherForecastController будет создаваться автоматически и станет нашей конечной точкой для тестирования.Please notice there will be a auto generated WeatherForecastController which will be our test endpoint later on.

  1. Создайте папку для исходного кода проекта и сам проект.Create a folder for the project source code and generate the project.

    mkdir source-code
    
    cd source-code
    
    dotnet new webapi -n hello-world --framework netcoreapp3.1
    
  2. Перейдите в каталог проекта.Navigate into the project directory.

    cd hello-world
    
  3. Измените файл appSettings.json , чтобы добавить следующие параметры:Edit the appSettings.json file to add the following settings:

    "spring": {
      "application": {
        "name": "hello-world"
      }
    },
    "eureka": {
      "client": {
        "shouldFetchRegistry": true,
        "shouldRegisterWithEureka": true
      }
    }
    
  4. Кроме того, в файле appsettings.json измените уровень ведения журнала для категории Microsoft с Warning на Information.Also in appsettings.json , change the log level for the Microsoft category from Warning to Information. Это изменение гарантирует, что журналы будут создаваться при просмотре журналов потоковой передачи на более позднем этапе.This change ensures that logs will be produced when you view streaming logs in a later step.

    Файл appsettings.json теперь выглядит как в следующем примере:The appsettings.json file now looks similar to the following example:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Information",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "spring": {
        "application": {
          "name": "hello-world"
        }
      },
      "eureka": {
        "client": {
          "shouldFetchRegistry": true,
          "shouldRegisterWithEureka": true
        }
      }
    }
    
  5. Добавьте зависимости и задачу Zip в файл .csproj :Add dependencies and a Zip task to the .csproj file:

    <ItemGroup>
      <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="3.0.0" />
      <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="2.0.0-preview.1" />
    </ItemGroup>
    <Target Name="Publish-Zip" AfterTargets="Publish">
        <ZipDirectory SourceDirectory="$(PublishDir)" DestinationFile="$(MSBuildProjectDirectory)/deploy.zip" Overwrite="true" />
    </Target>
    

    Пакеты предназначены для обнаружения службы Steeltoe и клиентской библиотеки Azure Spring Cloud.The packages are for Steeltoe Service Discovery and the Azure Spring Cloud client library. Задача Zip предназначена для развертывания в Azure.The Zip task is for deployment to Azure. При выполнении команды dotnet publish создаются двоичные файлы в папке publish , и эта задача архивирует папку publish в файл .zip , который вы отправляете в Azure.When you run the dotnet publish command, it generates the binaries in the publish folder, and this task zips the publish folder into a .zip file that you upload to Azure.

  6. В файле Program.cs добавьте директиву using и код, который использует клиентскую библиотеку Azure Spring Cloud:In the Program.cs file, add a using directive and code that uses the Azure Spring Cloud client library:

    using Microsoft.Azure.SpringCloud.Client;
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .UseAzureSpringCloudService()
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
    
  7. В файле Startup.cs добавьте директиву using и код, который использует обнаружение службы Steeltoe, в конце методов ConfigureServices и Configure:In the Startup.cs file, add a using directive and code that uses the Steeltoe Service Discovery at the end of the ConfigureServices and Configure methods:

    using Steeltoe.Discovery.Client;
    
    public void ConfigureServices(IServiceCollection services)
    {
        // Template code not shown.
    
        services.AddDiscoveryClient(Configuration);
    }
    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Template code not shown.
    
        app.UseDiscoveryClient();
    }
    
  8. Выполните сборку проекта и убедитесь в отсутствии ошибок компиляции.Build the project to make sure there are no compile errors.

    dotnet build
    

подготовка экземпляра службы к работе;Provision a service instance

Следующая процедура создает экземпляр Azure Spring Cloud с помощью портала Azure.The following procedure creates an instance of Azure Spring Cloud using the Azure portal.

  1. Откройте портал Azure.Open the Azure portal.

  2. В поле поиска сверху введите Azure Spring Cloud.From the top search box, search for Azure Spring Cloud.

  3. Выберите пункт Azure Spring Cloud в списке результатов.Select Azure Spring Cloud from the results.

    Значок ASC — запуск

  4. На странице Azure Spring Cloud выберите элемент + Добавить.On the Azure Spring Cloud page, select + Add.

    Значок ASC — добавление

  5. Заполните форму на странице создания Azure Spring Cloud.Fill out the form on the Azure Spring Cloud Create page. Ознакомьтесь со следующими рекомендациями:Consider the following guidelines:

    • Подписка : Выберите подписку, на которую будет выставляться счет за этот ресурс.Subscription : Select the subscription you want to be billed for this resource.
    • Группа ресурсов. Создайте новую группу ресурсов.Resource group : Create a new resource group. Введенное здесь имя будет использоваться в дальнейших шагах как <resource group name> .The name you enter here will be used in later steps as <resource group name>.
    • Сведения о службе или ее название. Укажите <service instance name> .Service Details/Name : Specify the <service instance name>. Его длина должна быть от 4 до 32 знаков. Имя может содержать только строчные буквы, цифры и дефисы.The name must be between 4 and 32 characters long and can contain only lowercase letters, numbers, and hyphens. Первым символом в имени службы должна быть буква, а последним — буква или цифра.The first character of the service name must be a letter and the last character must be either a letter or a number.
    • Регион. Выберите регион для экземпляра службы.Region : Select the region for your service instance.

    Начальная страница портала ASC

  6. Выберите Просмотреть и создать.Select Review and create.

Создание и развертывание приложенияBuild and deploy the app

Следующая процедура используется для сборки и развертывания созданного ранее проекта.The following procedure builds and deploys the project that you created earlier.

  1. Убедитесь, что командная строка все еще находится в папке проекта.Make sure the command prompt is still in the project folder.

  2. Запустите приведенную ниже команду, чтобы выполнить сборку проекта, опубликовать двоичные файлы и сохранить их в файле .zip в папке проекта.Run the following command to build the project, publish the binaries, and store the binaries in a .zip file in the project folder.

    dotnet publish -c release -o ./publish
    
  3. Создайте приложение в экземпляре Azure Spring Cloud с назначенной общедоступной конечной точкой.Create an app in your Azure Spring Cloud instance with a public endpoint assigned. Используйте то же имя приложения hello-world, указанное в appsettings.json.Use the same application name "hello-world" that you specified in appsettings.json.

    az spring-cloud app create -n hello-world -s <service instance name> -g <resource group name> --is-public --runtime-version NetCore_31
    
  4. Разверните в приложении файл .zip.Deploy the .zip file to the app.

    az spring-cloud app deploy -n hello-world -s <service instance name> -g <resource group name> --runtime-version NetCore_31 --main-entry hello-world.dll --artifact-path ./deploy.zip
    

    Параметр --main-entry определяет файл .dll , содержащий точку входа приложения.The --main-entry option identifies the .dll file that contains the application's entry point. После того как служба загрузит файл .zip , она извлекает все файлы и папки и пытается выполнить точку входа в указанном --main-entry файле .dll.After the service uploads the .zip file, it extracts all the files and folders and tries to execute the entry point in the .dll file specified by --main-entry.

    Для завершения развертывания приложения потребуется несколько минут.It takes a few minutes to finish deploying the application. Чтобы убедиться, что оно развернуто, перейдите в колонку Приложения на портале Azure.To confirm that it has deployed, go to the Apps blade in the Azure portal.

Тестирование приложенияTest the app

По завершении развертывания получите доступ к приложению по следующему URL-адресу:Once deployment has completed, access the app at the following URL:

https://<service instance name>-hello-world.azuremicroservices.io/weatherforecast

Приложение вернет данные JSON, как в следующем примере:The app returns JSON data similar to the following example:

[{"date":"2020-09-08T21:01:50.0198835+00:00","temperatureC":14,"temperatureF":57,"summary":"Bracing"},{"date":"2020-09-09T21:01:50.0200697+00:00","temperatureC":-14,"temperatureF":7,"summary":"Bracing"},{"date":"2020-09-10T21:01:50.0200715+00:00","temperatureC":27,"temperatureF":80,"summary":"Freezing"},{"date":"2020-09-11T21:01:50.0200717+00:00","temperatureC":18,"temperatureF":64,"summary":"Chilly"},{"date":"2020-09-12T21:01:50.0200719+00:00","temperatureC":16,"temperatureF":60,"summary":"Chilly"}]

Потоковая передача журналов в режиме реального времениStream logs in real time

Используйте следующую команду, чтобы получать журналы в режиме реального времени из приложения.Use the following command to get real time logs from the App.

az spring-cloud app logs -n hello-world -s <service instance name> -g <resource group name> --lines 100 -f

Журналы отображаются в выходных данных:Logs appear in the output:

[Azure Spring Cloud] The following environment variables are loaded:
2020-09-08 20:58:42,432 INFO supervisord started with pid 1
2020-09-08 20:58:43,435 INFO spawned: 'event-gather_00' with pid 9
2020-09-08 20:58:43,436 INFO spawned: 'dotnet-app_00' with pid 10
2020-09-08 20:58:43 [Warning] No managed processes are running. Wait for 30 seconds...
2020-09-08 20:58:44,843 INFO success: event-gather_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2020-09-08 20:58:44,843 INFO success: dotnet-app_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
←[40m←[32minfo←[39m←[22m←[49m: Steeltoe.Discovery.Eureka.DiscoveryClient[0]
      Starting HeartBeat
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://[::]:1025
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /netcorepublish/6e4db42a-b160-4b83-a771-c91adec18c60
2020-09-08 21:00:13 [Information] [10] Start listening...
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://asc-svc-hello-world.azuremicroservices.io/weatherforecast
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'hello_world.Controllers.WeatherForecastController.Get (hello-world)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
      Route matched with {action = "Get", controller = "WeatherForecast"}. Executing controller action with signature System.Collections.Generic.IEnumerable`1[hello_world.WeatherForecast] Get() on controller hello_world.Controllers.WeatherForecastController (hello-world).
info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]
      Executing ObjectResult, writing value of type 'hello_world.WeatherForecast[]'.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
      Executed action hello_world.Controllers.WeatherForecastController.Get (hello-world) in 1.8902ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'hello_world.Controllers.WeatherForecastController.Get (hello-world)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 4.2591ms 200 application/json; charset=utf-8

Совет

Используйте az spring-cloud app logs -h для просмотра дополнительных параметров и функциональных возможностей потоковой передачи журналов.Use az spring-cloud app logs -h to explore more parameters and log stream functionalities.

Чтобы получить дополнительные возможности анализа журналов, перейдите на вкладку Журналы в меню на портале Azure.For advanced log analytics features, visit Logs tab in the menu on Azure portal. Журналы отображаются с задержкой в несколько минут.Logs here have a latency of a few minutes. Аналитика журналов Logs Analytics

В этом кратком руководстве объясняется, как развернуть простое приложение микрослужбы Azure Spring Cloud для запуска в Azure.This quickstart explains how to deploy a simple Azure Spring Cloud microservice application to run on Azure.

Код приложения, используемый в этом учебнике, — это простое приложение, созданное с помощью Spring Initializr.The application code used in this tutorial is a simple app built with Spring Initializr. После завершения работы с этим примером приложение будет доступно через Интернет и им можно управлять с помощью портала Azure.When you've completed this example, the application will be accessible online and can be managed via the Azure portal.

В этом кратком руководстве объясняются такие операции:This quickstart explains how to:

  • создание простого проекта Spring Cloud;Generate a basic Spring Cloud project
  • подготовка экземпляра службы к работе;Provision a service instance
  • сборка и развертывание приложения с общедоступной конечной точкой;Build and deploy the app with a public endpoint
  • Потоковая передача журналов в режиме реального времениStream logs in real time

Предварительные требованияPrerequisites

Для работы с этим кратким руководством сделайте следующее:To complete this quickstart:

Создание проекта Spring CloudGenerate a Spring Cloud project

Начните со Spring Initializr, чтобы создать пример проекта с рекомендуемыми зависимостями для Azure Spring Cloud.Start with Spring Initializr to generate a sample project with recommended dependencies for Azure Spring Cloud. На рисунке ниже показан Initializr, настроенный для этого примера проекта.The following image shows the Initializr set up for this sample project.

https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.3.4.RELEASE&packaging=jar&jvmVersion=1.8&groupId=com.example&artifactId=hellospring&name=hellospring&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.hellospring&dependencies=web,cloud-eureka,actuator,cloud-starter-sleuth,cloud-starter-zipkin,cloud-config-client

Страница Initializr

  1. Щелкните Создать , если все зависимости заданы.Click Generate when all the dependencies are set. Загрузите и распакуйте пакет, а затем создайте веб-контроллер для простого веб-приложения, добавив src/main/java/com/example/hellospring/HelloController.java следующим образом:Download and unpack the package, then create a web controller for a simple web application by adding src/main/java/com/example/hellospring/HelloController.java as follows:

    package com.example.hellospring;
    
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @RestController
    public class HelloController {
    
        @RequestMapping("/")
        public String index() {
            return "Greetings from Azure Spring Cloud!";
        }
    
    }
    

Подготовка к работе экземпляра Azure Spring CloudProvision an instance of Azure Spring Cloud

Следующая процедура создает экземпляр Azure Spring Cloud с помощью портала Azure.The following procedure creates an instance of Azure Spring Cloud using the Azure portal.

  1. На новой вкладке откройте портал Azure.In a new tab, open the Azure portal.

  2. В поле поиска сверху введите Azure Spring Cloud.From the top search box, search for Azure Spring Cloud.

  3. Выберите пункт Azure Spring Cloud в списке результатов.Select Azure Spring Cloud from the results.

    Значок ASC — запуск

  4. На странице Azure Spring Cloud щелкните элемент + Добавить.On the Azure Spring Cloud page, click + Add.

    Значок ASC — добавление

  5. Заполните форму на странице создания Azure Spring Cloud.Fill out the form on the Azure Spring Cloud Create page. Ознакомьтесь со следующими рекомендациями:Consider the following guidelines:

    • Подписка : Выберите подписку, на которую будет выставляться счет за этот ресурс.Subscription : Select the subscription you want to be billed for this resource.
    • Группа ресурсов. Советуем создавать группы ресурсов для новых ресурсов.Resource group : Creating new resource groups for new resources is a best practice. Она будет использоваться в дальнейших шагах как <resource group name> .This will be used in later steps as <resource group name>.
    • Сведения о службе или ее название. Укажите <service instance name> .Service Details/Name : Specify the <service instance name>. Его длина должна быть от 4 до 32 знаков. Имя может содержать только строчные буквы, цифры и дефисы.The name must be between 4 and 32 characters long and can contain only lowercase letters, numbers, and hyphens. Первым символом в имени службы должна быть буква, а последним — буква или цифра.The first character of the service name must be a letter and the last character must be either a letter or a number.
    • Расположение. Выберите регион для экземпляра службы.Location : Select the region for your service instance.

    Начальная страница портала ASC

  6. Щелкните Проверка и создание.Click Review and create.

Создание и развертывание приложенияBuild and deploy the app

Следующая процедура используется для сборки и развертывания приложения с помощью Azure CLI.The following procedure builds and deploys the application using the Azure CLI. Выполните следующую команду в корневом каталоге проекта.Execute the following command at the root of the project.

  1. Выполните сборку проекта с помощью Maven:Build the project using Maven:

    mvn clean package -DskipTests
    
  2. Если вы еще не установили его, установите облачное расширение Spring Cloud для Azure CLI:(If you haven't already installed it) Install the Azure Spring Cloud extension for the Azure CLI:

    az extension add --name spring-cloud
    
  3. Создайте приложение с назначенной общедоступной конечной точкой:Create the app with public endpoint assigned:

    az spring-cloud app create -n hellospring -s <service instance name> -g <resource group name> --is-public
    
  4. Разверните JAR-файл для приложения (target\hellospring-0.0.1-SNAPSHOT.jar в Windows):Deploy the Jar file for the app (target\hellospring-0.0.1-SNAPSHOT.jar on Windows):

    az spring-cloud app deploy -n hellospring -s <service instance name> -g <resource group name> --jar-path <jar file path>
    
  5. Для завершения развертывания приложения потребуется несколько минут.It takes a few minutes to finish deploying the application. Чтобы убедиться, что оно развернуто, перейдите в колонку Приложения на портале Azure.To confirm that it has deployed, go to the Apps blade in the Azure portal. В ней должно отобразиться состояние приложения.You should see the status of the application.

По завершении развертывания можно получить доступ к https://<service instance name>-hellospring.azuremicroservices.io/.Once deployment has completed, you can access the app at https://<service instance name>-hellospring.azuremicroservices.io/.

Доступ к приложению из браузера Access app from browser

Потоковая передача журналов в режиме реального времениStreaming logs in real time

Используйте следующую команду, чтобы получать журналы в режиме реального времени из приложения.Use the following command to get real time logs from the App.

az spring-cloud app logs -n hellospring -s <service instance name> -g <resource group name> --lines 100 -f

Внешний вид журналов в итоге:Logs appear in the results:

Журналы потоковой передачи Streaming Logs

Совет

Используйте az spring-cloud app logs -h для просмотра дополнительных параметров и функциональных возможностей потоковой передачи журналов.Use az spring-cloud app logs -h to explore more parameters and log stream functionalities.

Чтобы получить дополнительные возможности аналитики журналов, перейдите на вкладку Журналы в меню портал Azure.For advanced logs analytics features, visit Logs tab in the menu on Azure portal. Журналы отображаются с задержкой в несколько минут.Logs here have a latency of a few minutes.

Аналитика журналов Logs Analytics

Очистка ресурсовClean up resources

На предыдущих шагах вы создали ресурсы Azure, за которые будет взиматься плата, если вы оставите их в своей в подписке.In the preceding steps, you created Azure resources that will continue to accrue charges while they remain in your subscription. Если эти ресурсы вам не понадобятся в будущем, вы можете удалить группу ресурсов на портале или с помощью приведенной ниже команды в Azure CLI:If you don't expect to need these resources in the future, delete the resource group from the portal or by running the following command in the Azure CLI:

az group delete --name <your resource group name; for example: hellospring-1558400876966-rg> --yes

Дальнейшие действияNext steps

В этом кратком руководстве рассматривались следующие темы:In this quickstart, you learned how to:

  • создание базового проекта Azure Spring Cloud;Generate a basic Azure Spring Cloud project
  • подготовка экземпляра службы к работе;Provision a service instance
  • сборка и развертывание приложения с общедоступной конечной точкой;Build and deploy the app with a public endpoint
  • Потоковая передача журналов в режиме реального времениStream logs in real time

Чтобы узнать, как использовать дополнительные возможности Azure Spring, перейдите к серии кратких руководств, в которой описано развертывание примера приложения в Azure Spring Cloud:To learn how to use more Azure Spring capabilities, advance to the quickstart series that deploys a sample application to Azure Spring Cloud:

Дополнительные примеры доступны на GitHub: Примеры для Azure Spring Cloud.More samples are available on GitHub: Azure Spring Cloud Samples.