Quickstart: Uw eerste toepassing implementeren in Azure Spring Cloud

In deze quickstart wordt uitgelegd hoe u een kleine toepassing implementeert om te worden uitgevoerd op Azure Spring Cloud.

Notitie

Steeltoe-ondersteuning voor Azure Spring Cloud wordt momenteel aangeboden als openbare preview. Met openbare preview-aanbiedingen kunnen klanten voorafgaand aan de officiële release met nieuwe functies experimenteren. Openbare preview-functies en -services zijn niet bedoeld voor gebruik in productie. Voor meer informatie over ondersteuning tijdens previews kunt u de Veelgestelde vragen raadplegen of een Ondersteuningsaanvraag indienen.

In deze quickstart leert u het volgende:

  • Een eenvoudig Steeltoe .NET Core-project genereren
  • Een exemplaar van de Azure Spring Cloud-service inrichten
  • De app bouwen en implementeren met een openbaar eindpunt
  • Logboeken in real-time streamen

De toepassingscode die in deze quickstart wordt gebruikt, is een eenvoudige app die wordt ontwikkeld met een .NET Core-projectsjabloon voor web-API’s. Wanneer u dit voorbeeld hebt voltooid, is de toepassing online toegankelijk en kan deze worden beheerd via de Azure-portal en Azure CLI.

Vereisten

Azure CLI-extensie installeren

Controleer of de Azure CLI-versie 2.0.67 of hoger is:

az --version

Voer de volgende opdracht uit om de Azure Spring Cloud-extensie voor Azure CLI te installeren:

az extension add --name spring-cloud

Aanmelden bij Azure

  1. Meld u aan bij de Azure CLI:

    az login
    
  2. Als u meerdere abonnementen hebt, kiest u het abonnement dat u voor deze quickstart wilt gebruiken.

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

Een Steeltoe .NET Core-project genereren

Maak in Visual Studio een ASP.NET Core-webtoepassing met de naam ‘hello-world’ met behulp van een projectsjabloon voor API’s. U ziet dat er een automatisch gegenereerde WeatherForecastController is die ons test-eindpunt later zal zijn.

  1. Maak een map voor de projectbroncode en genereer het project.

    mkdir source-code
    
    cd source-code
    
    dotnet new webapi -n hello-world --framework netcoreapp3.1
    
  2. Navigeer naar de projectmap.

    cd hello-world
    
  3. Bewerk het bestand appSettings.json om de volgende instellingen toe te voegen:

    "spring": {
      "application": {
        "name": "hello-world"
      }
    },
    "eureka": {
      "client": {
        "shouldFetchRegistry": true,
        "shouldRegisterWithEureka": true
      }
    }
    
  4. Wijzig in appsettings.json het logboekniveau voor de categorie Microsoft van Warning in Information. Deze wijziging verzekert dat er logboeken worden geproduceerd wanneer u streaminglogboeken bekijkt in een latere stap.

    Het bestand appsettings.json ziet er nu ongeveer zoals het volgende voorbeeld uit:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Information",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "spring": {
        "application": {
          "name": "hello-world"
        }
      },
      "eureka": {
        "client": {
          "shouldFetchRegistry": true,
          "shouldRegisterWithEureka": true
        }
      }
    }
    
  5. Voeg afhankelijkheden en een Zip-taak toe aan het bestand .csproj:

    <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>
    

    De pakketten zijn voor Steeltoe Service Discovery en de Azure Spring Cloud-clientbibliotheek. De Zip-taak is voor implementatie in Azure. Wanneer u de opdracht dotnet publish uitvoert, worden de binaire bestanden in de map publish gegenereerd, en met deze taak wordt de map publish gezipt in een ZIP-bestand dat u naar Azure uploadt.

  6. In het bestand Program.cs voegt u een using-instructie en code die gebruikmaakt van de Azure Spring Cloud-clientbibliotheek toe:

    using Microsoft.Azure.SpringCloud.Client;
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .UseAzureSpringCloudService()
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
    
  7. Voeg in het bestand Startup.cs een -richtlijn en code toe die gebruikmaakt van de Steeltoe Service Discovery aan using het einde van de methode ConfigureServices :

    using Steeltoe.Discovery.Client;
    
    public void ConfigureServices(IServiceCollection services)
    {
        // Template code not shown.
    
        services.AddDiscoveryClient(Configuration);
    }
    
  8. Bouw het project om ervoor te zorgen dat er geen compilatiefouten zijn.

    dotnet build
    

Een service-exemplaar inrichten

Met de volgende procedure maakt u een exemplaar van Azure Spring Cloud met behulp van de Azure Portal.

  1. Open Azure Portal.

  2. Zoek in het bovenste zoekvak naar Azure Spring Cloud.

  3. Selecteer Azure Spring Cloud in de resultaten.

    ASC-pictogram: starten

  4. Selecteer op Azure Spring Cloud pagina Maken.

    ASC-pictogram: toevoegen

  5. Vul het formulier in op de Azure Spring Cloud-pagina Maken. Houd rekening met de volgende richtlijnen:

    • Abonnement: Selecteer het abonnement waarvoor u voor deze resource gefactureerd wilt worden.
    • Resourcegroep: Maak een nieuwe resourcegroep. De naam die u hier invoert, wordt in latere stappen gebruikt als <resource group name> .
    • Servicedetails/naam: Geef de <service instance name> op. De naam moet tussen de 4 en 32 tekens lang zijn en mag alleen kleine letters, cijfers en afbreekstreepjes bevatten. Het eerste teken van de servicenaam moet een letter zijn en het laatste teken moet een letter of een cijfer zijn.
    • Regio: Selecteer de regio voor uw service-exemplaar.

    ASC-portal starten

  6. Selecteer Controleren en maken.

  7. Selecteer Maken.

De app compileren en implementeren

Met de volgende procedure wordt het project gebouwd en geïmplementeerd dat u eerder hebt gemaakt.

  1. Zorg ervoor dat de opdrachtprompt nog steeds in de projectmap staat.

  2. Voer de volgende opdracht uit om het project te bouwen, de binaire bestanden te publiceren en de binaire bestanden op te slaan in een ZIP-bestand in de projectmap.

    dotnet publish -c release -o ./publish
    
  3. Maak een app in uw Azure Spring Cloud-exemplaar met een openbaar eindpunt eraan toegewezen. Gebruik dezelfde toepassingsnaam ‘hello-world’ die u hebt opgegeven in 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. Implementeer het ZIP-bestand in de 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
    

    De optie --main-entry identificeert het DLL-bestand dat het beginpunt van de toepassing bevat. Nadat het ZIP-bestand is geüpload, worden alle bestanden en mappen geëxtraheerd en wordt geprobeerd het beginpunt in het DLL-bestand opgegeven door --main-entry uit te voeren.

    Het duurt enkele minuten om de implementatie van de toepassing te voltooien. Als u wilt controleren of de app is geïmplementeerd, gaat u naar de sectie Apps in de Azure Portal.

De app testen

Zodra de implementatie is voltooid, kunt u de app openen op de volgende URL:

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

De app retourneert JSON-gegevens die lijken op die in het volgende voorbeeld:

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

Logboeken in real-time streamen

Gebruik de volgende opdracht om realtime logboeken op te halen uit de app.

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

Logboeken worden weergegeven in de uitvoer:

[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

Tip

Gebruik az spring-cloud app logs -h om meer parameters en functionaliteit van logboekstreaming te verkennen.

Ga voor geavanceerde log analytics-functies naar het tabblad Logboeken in het menu op Azure Portal. Logboeken hebben hier een latentie van enkele minuten. Logboekanalyse

In deze quickstart wordt uitgelegd hoe u een kleine toepassing implementeert in Azure Spring Cloud.

De toepassingscode die in deze zelfstudie wordt gebruikt, is een eenvoudige app die is gebouwd met Spring Initializr. Wanneer u dit voorbeeld hebt voltooid, is de toepassing online toegankelijk en kan deze worden beheerd via de Azure-portal.

In deze quickstart wordt het volgende uitgelegd:

  • Een eenvoudig Spring Cloud-project genereren
  • Een service-exemplaar inrichten
  • De app bouwen en implementeren met een openbaar eindpunt
  • Logboeken in real-time streamen

Vereisten

Dit zijn de vereisten voor het voltooien van deze snelstart:

Een Spring Cloud-project genereren

Begin met Spring Initializr om een voorbeeldproject te genereren met aanbevolen afhankelijkheden voor Azure Spring Cloud. Deze koppeling maakt gebruik van de volgende URL om de standaardinstellingen voor u op te geven.

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

In de volgende afbeelding ziet u de aanbevolen Initializr-set-up voor dit voorbeeldproject.

In dit voorbeeld wordt Java versie 8 gebruikt. Als u Java versie 11 wilt gebruiken, wijzigt u de optie onder metagegevens Project metagegevens.

Initializr-pagina

  1. Selecteer Genereren wanneer alle afhankelijkheden zijn ingesteld.

  2. Download het pakket en pak het uit. Maak vervolgens een webcontroller voor een eenvoudige webtoepassing door het bestand src/main/java/com/example/hellospring/HelloController.java toe te voegen met de volgende inhoud:

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

Een exemplaar van Azure Spring Cloud inrichten

Met de volgende procedure maakt u een exemplaar van Azure Spring Cloud met behulp van de Azure-portal.

  1. Open Azure Portal op een nieuw tabblad.

  2. Zoek in het bovenste zoekvak naar Azure Spring Cloud.

  3. Selecteer Azure Spring Cloud in de resultaten.

    ASC-pictogram: starten

  4. Selecteer op Azure Spring Cloud pagina Maken.

    ASC-pictogram: toevoegen

  5. Vul het formulier in op de Azure Spring Cloud-pagina Maken. Houd rekening met de volgende richtlijnen:

    • Abonnement: Selecteer het abonnement waarvoor u voor deze resource gefactureerd wilt worden.
    • Resourcegroep: Het is een best practice om nieuwe resourcegroepen te maken voor nieuwe resources. U gebruikt deze resourcegroep in latere stappen als <resource group name> .
    • Servicedetails/naam: Geef de <service instance name> op. De naam moet tussen de 4 en 32 tekens lang zijn en mag alleen kleine letters, cijfers en afbreekstreepjes bevatten. Het eerste teken van de servicenaam moet een letter zijn en het laatste teken moet een letter of een cijfer zijn.
    • Locatie: Selecteer de regio voor uw service-exemplaar.

    ASC-portal starten

  6. Selecteer Controleren en maken.

De app compileren en implementeren

Met de volgende procedure wordt de toepassing gebouwd en geïmplementeerd met behulp van de Azure CLI. Voer de volgende opdracht uit in de hoofdmap van het project.

  1. Meld u aan bij Azure en kies uw abonnement.

    az login
    

    Als u meer dan één abonnement hebt, gebruikt u de volgende opdracht om de abonnementen weer te geven waar u toegang toe hebt. Kies vervolgens het abonnement dat u wilt gebruiken voor deze quickstart.

    az account list -o table
    

    Gebruik de volgende opdracht om het standaardabonnement in te stellen voor gebruik met de Azure CLI-opdrachten in deze quickstart.

    az account set --subscription <Name or ID of a subscription from the last step>
    
  2. Bouw het project met behulp van Maven:

    mvn clean package -DskipTests
    
  3. Maak de app met een openbaar eindpunt toegewezen. Als u Java versie 11 hebt geselecteerd bij het genereren van het Spring Cloud project, moet u de --runtime-version=Java_11 switch opnemen.

    az spring-cloud app create -n hellospring -s <service instance name> -g <resource group name> --assign-endpoint true
    
  4. Implementeer het JAR-bestand voor de app (target\hellospring-0.0.1-SNAPSHOT.jar in 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. Het duurt enkele minuten om de implementatie van de toepassing te voltooien. Als u wilt controleren of de app is geïmplementeerd, gaat u naar de sectie Apps in het Azure Portal. U ziet hier de status van de toepassing.

Zodra de implementatie is voltooid, hebt u toegang tot de app op https://<service instance name>-hellospring.azuremicroservices.io/.

Toegang tot de app vanuit de browser

Streaminglogboeken in real-time

Gebruik de volgende opdracht om realtime logboeken op te halen uit de app.

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

Logboeken worden weergegeven in de resultaten:

Streaminglogboeken

Tip

Gebruik az spring-cloud app logs -h om meer parameters en functionaliteit van logboekstreaming te verkennen.

Ga voor geavanceerde functies voor logboekanalyse naar het tabblad Logboeken in het menu op Azure Portal. Logboeken hebben hier een latentie van enkele minuten.

Logboekanalyse

Resources opschonen

In de bovenstaande stappen hebt u Azure-resources gemaakt die nog steeds in rekening worden gebracht terwijl ze in uw abonnement blijven. Als u deze resources niet meer nodig denkt te hebben, verwijdert u de resourcegroep uit de portal of door de volgende opdracht in Azure CLI uit te voeren:

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

Volgende stappen

In deze snelstart hebt u de volgende zaken geleerd:

  • Een eenvoudig Spring Cloud-project genereren
  • Een service-exemplaar inrichten
  • De app bouwen en implementeren met een openbaar eindpunt
  • Logboeken in real-time streamen

Als u wilt weten hoe u nog meer Azure Spring-mogelijkheden kunt gebruiken, gaat u verder met de quickstart-reeks waarin een voorbeeldtoepassing wordt geïmplementeerd in Azure Spring Cloud:

Meer voorbeelden zijn beschikbaar in GitHub: Azure Spring Cloud-voorbeelden.