Snabbstart: Distribuera ditt första program till Azure Spring Cloud

Den här snabbstarten förklarar hur du distribuerar ett litet program som ska köras Azure Spring Cloud.

Anteckning

Stöd för metalltå för Azure Spring Cloud erbjuds för närvarande som en offentlig förhandsversion. Med offentliga förhandsversioner kan kunder experimentera med nya funktioner innan de släpps officiellt. Funktioner och tjänster i den offentliga förhandsversionen är inte avsedda för produktionsanvändning. Mer information om support under förhandsversioner finns i Vanliga frågor och svar eller skapa en Supportbegäran.

Genom att följa den här snabbstarten lär du dig att:

  • Generera ett grundläggande .NET Core-projekt för Steeltoe
  • Etablera en Azure Spring Cloud-tjänstinstans
  • Skapa och distribuera appen med en offentlig slutpunkt
  • Strömma loggar i realtid

Programkoden som används i den här snabbstarten är en enkel app som skapats med en projektmall för .NET Core Web API. När du har slutfört det här exemplet är programmet tillgängligt online och kan hanteras via Azure Portal och Azure CLI.

Förutsättningar

Installera Azure CLI-tillägg

Kontrollera att din Azure CLI-version är 2.0.67 eller senare:

az --version

Installera Azure Spring Cloud för Azure CLI med följande kommando:

az extension add --name spring-cloud

Logga in på Azure

  1. Logga in på Azure CLI:

    az login
    
  2. Om du har fler än en prenumeration väljer du den som du vill använda för den här snabbstarten.

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

Generera ett .NET Core-projekt för Steeltoe

I Visual Studio skapar du en ASP.NET Core webbapp med namnet "hello-world" med API-projektmallen. Observera att det kommer att finnas en automatiskt genererad WeatherForecastController som blir vår testslutpunkt senare.

  1. Skapa en mapp för projektets källkod och generera projektet.

    mkdir source-code
    
    cd source-code
    
    dotnet new webapi -n hello-world --framework netcoreapp3.1
    
  2. Navigera till projektkatalogen.

    cd hello-world
    
  3. Redigera filen appSettings.json och lägg till följande inställningar:

    "spring": {
      "application": {
        "name": "hello-world"
      }
    },
    "eureka": {
      "client": {
        "shouldFetchRegistry": true,
        "shouldRegisterWithEureka": true
      }
    }
    
  4. I appsettings.json ändrar du även loggnivån för Microsoft kategorin från till Warning Information . Den här ändringen säkerställer att loggar skapas när du visar strömningsloggar i ett senare steg.

    Filen appsettings.json ser nu ut ungefär som i följande exempel:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Information",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "spring": {
        "application": {
          "name": "hello-world"
        }
      },
      "eureka": {
        "client": {
          "shouldFetchRegistry": true,
          "shouldRegisterWithEureka": true
        }
      }
    }
    
  5. Lägg till beroenden och en Zip uppgift i .csproj-filen:

    <ItemGroup>
      <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="3.1.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>
    

    Paketen är för Identifiering av Steeltoe Service och Azure Spring Cloud klientbibliotek. Uppgiften Zip är för distribution till Azure. När du kör kommandot genererar det binärfilerna i dotnet publish publiceringsmappen, och den här uppgiften zippa in publiceringsmappen i en .zip-fil som du laddar upp till Azure.

  6. I filen Program.cs lägger du till using ett direktiv och kod som använder Azure Spring Cloud klientbiblioteket:

    using Microsoft.Azure.SpringCloud.Client;
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .UseAzureSpringCloudService()
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
    
  7. I filen Startup.cs lägger du till ett direktiv och using kod som använder Identifiering av Steeltoe Service i slutet av ConfigureServices metoden:

    using Steeltoe.Discovery.Client;
    
    public void ConfigureServices(IServiceCollection services)
    {
        // Template code not shown.
    
        services.AddDiscoveryClient(Configuration);
    }
    
  8. Skapa projektet för att se till att det inte finns några kompileringsfel.

    dotnet build
    

Etablera en tjänstinstans

Följande procedur skapar en instans av Azure Spring Cloud med hjälp av Azure Portal.

  1. Öppna Azure-portalen.

  2. I den övre sökrutan söker du efter Azure Spring Cloud.

  3. Välj Azure Spring Cloud i resultatet.

    ASC-ikon starta

  4. På sidan Azure Spring Cloud väljer du Skapa.

    ASC-ikon lägg till

  5. Fyll i formuläret på sidan Azure Spring Cloud Skapa. Läs igenom följande riktlinjer:

    • Prenumeration: Välj den prenumeration som du vill debiteras för den här resursen.
    • Resursgrupp: Skapa en ny resursgrupp. Det namn som du anger här används i senare steg som <resource group name> .
    • Tjänstinformation/namn: Ange <service instance name> . Namnet måste vara mellan 4 och 32 tecken långt och får bara innehålla gemener, siffror och bindestreck. Det första tecknet i tjänstnamnet måste vara en bokstav och det sista tecknet måste vara antingen en bokstav eller en siffra.
    • Region: Välj region för tjänstinstansen.

    ASC-portalen startar

  6. Välj Granska och skapa.

  7. Välj Skapa.

Skapa och distribuera appen

Följande procedur skapar och distribuerar projektet som du skapade tidigare.

  1. Kontrollera att kommandotolken fortfarande finns i projektmappen.

  2. Kör följande kommando för att skapa projektet, publicera binärfilerna och lagra binärfilerna i en.zip-fil i projektmappen.

    dotnet publish -c release -o ./publish
    
  3. Skapa en app i din Azure Spring Cloud instans med en tilldelad offentlig slutpunkt. Använd samma programnamn "hello-world" som du angav i appsettings.json.

    az spring-cloud app create -n hello-world -s <service instance name> -g <resource group name> --assign-endpoint --runtime-version NetCore_31
    
  4. Distribuera .zip till appen.

    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
    

    Alternativet --main-entry identifierar den .dll som innehåller programmets startpunkt. När tjänsten har överfört .zip den alla filer och mappar och försöker köra startpunkten i den.dll som anges av --main-entry .

    Det tar några minuter att slutföra distributionen av programmet. Bekräfta att den har distribuerats genom att gå till avsnittet Appar i Azure Portal.

Testa appen

När distributionen är klar får du åtkomst till appen via följande URL:

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

Appen returnerar JSON-data som liknar följande exempel:

[{"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"}]

Strömma loggar i realtid

Använd följande kommando för att hämta realtidsloggar från appen.

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

Loggarna visas i utdata:

[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

Tips

Använd az spring-cloud app logs -h för att utforska fler parametrar och funktioner för loggströmmar.

Avancerade funktioner för logganalys finns på fliken Loggar i menyn på Azure Portal. Loggarna här har en svarstid på några minuter. Logs Analytics

Den här snabbstarten förklarar hur du distribuerar ett litet program till Azure Spring Cloud.

Programkoden som används i den här självstudien är en enkel app som skapats med Spring Initializr. När du har slutfört det här exemplet är programmet tillgängligt online och kan hanteras via Azure Portal.

Den här snabbstarten förklarar hur du:

  • Generera ett grundläggande Spring Cloud projekt
  • Etablera en tjänstinstans
  • Skapa och distribuera appen med en offentlig slutpunkt
  • Strömma loggar i realtid

Förutsättningar

För att slutföra den här snabbstarten behöver du:

Generera ett Spring Cloud projekt

Börja med Spring Initializr för att generera ett exempelprojekt med rekommenderade beroenden för Azure Spring Cloud. Den här länken använder följande URL för att tillhandahålla standardinställningar åt dig.

https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.5&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-config-client

Följande bild visar den rekommenderade Initializr-installationen för det här exempelprojektet.

I det här exemplet används Java version 8. Om du vill använda Java version 11 ändrar du alternativet under Project Metadata.

Sidan Initializr

  1. Välj Generera när alla beroenden har angetts.

  2. Ladda ned och packa upp paketet och skapa sedan en webbkontrollant för en enkel webbapp genom att lägga till filen src/main/java/com/example/hellospring/HelloController.java med följande innehåll:

    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!";
        }
    
    }
    

Etablera en instans av Azure Spring Cloud

Följande procedur skapar en instans av Azure Spring Cloud med hjälp av Azure Portal.

  1. I en ny flik öppnar du Azure Portal.

  2. I den övre sökrutan söker du efter Azure Spring Cloud.

  3. Välj Azure Spring Cloud i resultatet.

    ASC-ikonen starta

  4. På Azure Spring Cloud väljer du Skapa.

    ASC-ikon lägg till

  5. Fyll i formuläret på sidan Azure Spring Cloud Skapa. Läs igenom följande riktlinjer:

    • Prenumeration: Välj den prenumeration som du vill debiteras för den här resursen.
    • Resursgrupp: Bästa praxis är att skapa nya resursgrupper för nya resurser. Du kommer att använda den här resursgruppen i senare steg som <resource group name> .
    • Tjänstinformation/namn: Ange <service instance name> . Namnet måste vara mellan 4 och 32 tecken långt och får bara innehålla gemener, siffror och bindestreck. Det första tecknet i tjänstnamnet måste vara en bokstav och det sista tecknet måste vara antingen en bokstav eller en siffra.
    • Plats: Välj region för din tjänstinstans.

    ASC-portalstart

  6. Välj Granska och skapa.

Skapa och distribuera appen

Följande procedur skapar och distribuerar programmet med hjälp av Azure CLI. Kör följande kommando i projektroten.

  1. Logga in på Azure och välj din prenumeration.

    az login
    

    Om du har fler än en prenumeration använder du följande kommando för att visa en lista över de prenumerationer som du har åtkomst till. Välj sedan den du vill använda för den här snabbstarten.

    az account list -o table
    

    Använd följande kommando för att ange den standardprenumeration som ska användas med Azure CLI-kommandona i den här snabbstarten.

    az account set --subscription <Name or ID of a subscription from the last step>
    
  2. Skapa projektet med hjälp av Maven:

    mvn clean package -DskipTests
    
  3. Skapa appen med en tilldelad offentlig slutpunkt. Om du valde Java version 11 när du genererade Spring Cloud projekt inkluderar du --runtime-version=Java_11 växeln .

    az spring-cloud app create -n hellospring -s <service instance name> -g <resource group name> --assign-endpoint true
    
  4. Distribuera Jar-filen för appen ( target\hellospring-0.0.1-SNAPSHOT.jar på Windows):

    az spring-cloud app deploy -n hellospring -s <service instance name> -g <resource group name> --artifact-path <jar file path>/hellospring-0.0.1-SNAPSHOT.jar
    
  5. Det tar några minuter att slutföra distributionen av programmet. Bekräfta att den har distribuerats genom att gå till avsnittet Appar i Azure Portal. Du bör se status för programmet.

När distributionen är klar kan du komma åt appen på https://<service instance name>-hellospring.azuremicroservices.io/ .

Åtkomst till app från webbläsare

Strömma loggar i realtid

Använd följande kommando för att hämta realtidsloggar från appen.

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

Loggarna visas i resultatet:

Strömningsloggar

Tips

Använd az spring-cloud app logs -h för att utforska fler parametrar och funktioner för loggströmmar.

För avancerade funktioner för logganalys går du till fliken Loggar i menyn på Azure Portal. Loggarna här har en svarstid på några minuter.

Logs Analytics

Rensa resurser

I stegen ovan skapade du Azure-resurser som fortsätter att ackumulera avgifter medan de finns kvar i din prenumeration. Om du inte tror att du behöver dessa resurser i framtiden kan du ta bort resursgruppen från portalen eller genom att köra följande kommando i Azure CLI:

az group delete --name <your resource group name> --yes

Nästa steg

I den här snabbstarten har du lärt dig att:

  • Generera ett grundläggande Spring Cloud projekt
  • Etablera en tjänstinstans
  • Skapa och distribuera appen med en offentlig slutpunkt
  • Strömma loggar i realtid

Om du vill lära dig hur du använder fler Azure Spring-funktioner går du vidare till snabbstartsserien som distribuerar ett exempelprogram till Azure Spring Cloud:

Fler exempel finns på GitHub: Azure Spring Cloud Exempel.