Schnellstart: Bereitstellen Ihrer ersten Anwendung in Azure Spring Apps

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Basic-/Standard-Dienstebene ✔️ Enterprise-Dienstebene

In dieser Schnellstartanleitung erfahren Sie, wie Sie eine kleine Anwendung für die Ausführung in Azure Spring Apps bereitstellen.

Hinweis

Steeltoe-Unterstützung für Azure Spring Apps wird zurzeit als öffentliche Vorschau angeboten. Angebote der Public Preview ermöglichen Kunden das Experimentieren mit neuen Funktionen vor der offiziellen Veröffentlichung. Funktionen und Dienste in der öffentlichen Vorschau sind nicht zur Verwendung in der Produktion bestimmt. Weitere Informationen zur Unterstützung während der Vorschauphase finden Sie in den häufig gestellten Fragen. Sie können auch eine Supportanfrage einreichen.

In dieser Schnellstartanleitung wird Folgendes vermittelt:

  • Generieren eines einfachen Steeltoe-.NET Core-Projekts
  • Bereitstellen einer Azure Spring Apps-Dienstinstanz
  • Erstellen und Bereitstellen der App mit einem öffentlichen Endpunkt
  • Streamen von Protokollen in Echtzeit

Der in diesem Schnellstart verwendete Anwendungscode ist eine einfache App, die mit einer .NET Core-Web-API-Projektvorlage erstellt wurde. Wenn Sie dieses Beispiel abgeschlossen haben, kann auf die Anwendung online zugegriffen werden, und sie kann über das Azure-Portal und die Azure CLI verwaltet werden.

Voraussetzungen

Installieren der Azure CLI-Erweiterung

Vergewissern Sie sich, dass Sie mindestens Version 2.0.67 der Azure CLI verwenden:

az --version

Führen Sie den folgenden Befehl aus, um die Azure Spring Apps-Erweiterung für die Azure CLI zu installieren:

az extension add --name spring

Anmelden bei Azure

  1. Melden Sie sich bei der Azure CLI an:

    az login
    
  2. Falls Sie über mehrere Abonnements verfügen, wählen Sie das gewünschte Abonnement für diese Schnellstartanleitung aus.

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

Generieren eines Steeltoe-.NET Core-Projekts

Erstellen Sie in Visual Studio mit der API-Projektvorlage eine ASP.NET Core-Webanwendung mit dem Namen „hello-world“. Beachten Sie, dass ein automatisch generierter WeatherForecastController vorhanden ist, der später als Testendpunkt verwendet wird.

  1. Erstellen Sie einen Ordner für den Projektquellcode, und generieren Sie das Projekt.

    mkdir source-code
    
    cd source-code
    
    dotnet new webapi -n hello-world --framework netcoreapp3.1
    
  2. Navigieren Sie zum Projektverzeichnis.

    cd hello-world
    
  3. Bearbeiten Sie die Datei appSettings.json, um die folgenden Einstellungen hinzuzufügen:

    "spring": {
      "application": {
        "name": "hello-world"
      }
    },
    "eureka": {
      "client": {
        "shouldFetchRegistry": true,
        "shouldRegisterWithEureka": true
      }
    }
    
  4. Ändern Sie außerdem in appsettings.json die Protokollebene für die Kategorie Microsoft von Warning in Information. Durch diese Änderung wird sichergestellt, dass Protokolle erstellt werden, wenn Sie Streamingprotokolle in einem späteren Schritt anzeigen.

    Die Datei appsettings.json sieht nun in etwa wie im folgenden Beispiel aus:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Information",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "spring": {
        "application": {
          "name": "hello-world"
        }
      },
      "eureka": {
        "client": {
          "shouldFetchRegistry": true,
          "shouldRegisterWithEureka": true
        }
      }
    }
    
  5. Fügen Sie der Datei .csproj Abhängigkeiten und eine Aufgabe vom Typ Zip hinzu:

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

    Die Pakete sind für die Steeltoe-Dienstermittlung und die Azure Spring Apps-Clientbibliothek bestimmt. Die Aufgabe Zip ist für die Bereitstellung in Azure vorgesehen. Wenn Sie den Befehl dotnet publish ausführen, werden die Binärdateien im Ordner publish generiert, und mit dieser Aufgabe wird der Ordner publish in einer ZIP-Datei komprimiert, die Sie in Azure hochladen.

  6. Fügen Sie in der Datei Program.cs eine using-Anweisung sowie Code hinzu, der die Azure Spring Apps-Clientbibliothek verwendet:

    using Microsoft.Azure.SpringCloud.Client;
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .UseAzureSpringCloudService()
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
    
  7. Fügen Sie in der Datei Startup.cs eine using-Anweisung sowie Code hinzu, der die Steeltoe-Dienstermittlung am Ende der ConfigureServices-Methode verwendet:

    using Steeltoe.Discovery.Client;
    
    public void ConfigureServices(IServiceCollection services)
    {
        // Template code not shown.
    
        services.AddDiscoveryClient(Configuration);
    }
    
  8. Erstellen Sie das Projekt, um sich zu vergewissern, dass keine Kompilierungsfehler auftreten.

    dotnet build
    

Bereitstellen einer Dienstinstanz

Mit dem folgenden Verfahren erstellen Sie eine Azure Spring Apps-Instanz über das Azure-Portal.

  1. Öffnen Sie das Azure-Portal.

  2. Suchen Sie im Suchfeld oben nach Azure Spring Apps.

  3. Wählen Sie in den Ergebnissen Azure Spring Apps aus.

    Screenshot of Azure portal showing Azure Spring Apps service in search results.

  4. Wählen Sie auf der Seite „Azure Spring Apps“ die Option Erstellen aus.

    Screenshot of Azure portal showing Azure Spring Apps resource with Create button highlighted.

  5. Füllen Sie das Formular auf der Azure Spring Apps-Seite Erstellen aus. Berücksichtigen Sie die folgenden Richtlinien:

    • Abonnement: Wählen Sie das Abonnement aus, unter dem diese Ressource abgerechnet werden soll.
    • Ressourcengruppe: Erstellen Sie eine neue Ressourcengruppe. Der hier eingegebene Name wird später als <Ressourcengruppenname> verwendet.
    • Dienstdetails/Name: Geben Sie den <Dienstinstanznamen> an. Der Name muss zwischen 4 und 32 Zeichen lang sein und darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten. Das erste Zeichen des Dienstnamens muss ein Buchstabe und das letzte Zeichen entweder ein Buchstabe oder eine Ziffer sein.
    • Region: Wählen Sie die Region für Ihre Dienstinstanz aus.

    Screenshot of Azure portal showing Azure Spring Apps Create page.

  6. Klicken Sie auf Überprüfen und erstellen.

  7. Klicken Sie auf Erstellen.

Erstellen und Bereitstellen der App

Im folgenden Verfahren wird das zuvor von Ihnen generierte Projekt erstellt und bereitgestellt.

  1. Stellen Sie sicher, dass sich die Eingabeaufforderung noch im Projektordner befindet.

  2. Führen Sie den folgenden Befehl aus, um das Projekt zu erstellen, die Binärdateien zu veröffentlichen und die Binärdateien in einer ZIP-Datei im Projektordner zu speichern.

    dotnet publish -c release -o ./publish
    
  3. Erstellen Sie eine App in Ihrer Azure Spring Apps-Instanz mit einem zugewiesenen öffentlichen Endpunkt. Verwenden Sie den gleichen Anwendungsnamen (hello-world), den Sie in appsettings.json angegeben haben.

    az spring app create -n hello-world -s <service instance name> -g <resource group name> --assign-endpoint --runtime-version NetCore_31
    
  4. Stellen Sie die ZIP-Datei in der App bereit.

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

    Die Option --main-entry identifiziert die DLL-Datei, die den Einstiegspunkt der Anwendung enthält. Nachdem der Dienst die ZIP-Datei hochgeladen hat, werden alle Dateien und Ordner extrahiert, und es wird versucht, den Einstiegspunkt in der von --main-entryangegebenen DLL-Datei auszuführen.

    Es dauert einige Minuten, bis die Bereitstellung der Anwendung abgeschlossen ist. Navigieren Sie im Azure-Portal zum Abschnitt Apps, um zu überprüfen, ob die Anwendung bereitgestellt wurde.

Testen der App

Nach Abschluss der Bereitstellung können Sie unter folgender URL auf die App zugreifen:

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

Die App gibt JSON-Daten wie im folgenden Beispiel zurück:

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

Streamen von Protokollen in Echtzeit

Verwenden Sie den folgenden Befehl, um Echtzeitprotokolle von der App zu erhalten.

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

Protokolle werden in der Ausgabe angezeigt:

[Azure Spring Apps] 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://asa-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

Tipp

Verwenden Sie az spring app logs -h, um weitere Parameter und Funktionen für Protokolldatenströme zu untersuchen.

Informationen zu erweiterten Protokollanalysefeatures finden Sie im Menü im Azure-Portal auf der Registerkarte Protokolle. Bei den hier aufgeführten Protokollen kommt es zu einer Wartezeit von einigen Minuten.

Screenshot of Azure portal showing Azure Spring Apps Logs query.

In dieser Schnellstartanleitung erfahren Sie, wie Sie eine kleine Anwendung für Azure Spring Apps bereitstellen.

Der in diesem Tutorial verwendete Anwendungscode ist eine einfache App, die mit Spring initializr erstellt wurde. Wenn Sie das Tutorial abgeschlossen haben, kann auf die Anwendung online zugegriffen werden, und sie kann über das Azure-Portal verwaltet werden.

In dieser Schnellstartanleitung wird Folgendes erläutert:

  • Generieren eines einfachen Spring-Projekts
  • Bereitstellen einer Dienstinstanz
  • Erstellen und Bereitstellen der App mit einem öffentlichen Endpunkt
  • Streamen von Protokollen in Echtzeit

Voraussetzungen

So führen Sie diesen Schnellstart durch:

Generieren eines Spring-Projekts

Beginnen Sie mit Spring Initializr, um ein Beispielprojekt mit den empfohlenen Abhängigkeiten für Azure Spring Apps zu generieren. Dieser Link verwendet die folgende URL, um Ihnen Standardeinstellungen bereitzustellen.

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

Die folgende Abbildung zeigt die empfohlene Initializr-Instanz, die für dieses Beispielprojekt eingerichtet wurde.

In diesem Beispiel wird Java-Version 8 verwendet. Wenn Sie Java-Version 11 verwenden möchten, ändern Sie die Option unter Projektmetadaten.

Screenshot of Spring Initializr page.

  1. Wählen Sie Generieren aus, wenn alle Abhängigkeiten festgelegt sind.

  2. Laden Sie das Paket herunter, und entpacken Sie es. Erstellen Sie anschließend einen Webcontroller für eine einfache Webanwendung, indem Sie die Datei src/main/java/com/example/hellospring/HelloController.java mit dem folgenden Inhalt hinzufügen:

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

Bereitstellen einer Instanz von Azure Spring Apps

Mit dem folgenden Verfahren erstellen Sie eine Azure Spring Apps-Instanz über das Azure-Portal.

  1. Öffnen Sie das Azure-Portal in einem neuen Tab.

  2. Suchen Sie im Suchfeld oben nach Azure Spring Apps.

  3. Wählen Sie in den Ergebnissen Azure Spring Apps aus.

    Screenshot of Azure portal showing Azure Spring Apps service in search results.

  4. Wählen Sie auf der Seite „Azure Spring Apps“ die Option Erstellen aus.

    Screenshot of Azure portal showing Azure Spring Apps resource with Create button highlighted.

  5. Füllen Sie das Formular auf der Azure Spring Apps-Seite Erstellen aus. Berücksichtigen Sie die folgenden Richtlinien:

    • Abonnement: Wählen Sie das Abonnement aus, unter dem diese Ressource abgerechnet werden soll.
    • Ressourcengruppe: Die Erstellung neuer Ressourcengruppen für neue Ressourcen ist eine bewährte Methode. Sie verwenden diese Ressourcengruppe in späteren Schritten als <Ressourcengruppennamen>.
    • Dienstdetails/Name: Geben Sie den <Dienstinstanznamen> an. Der Name muss zwischen 4 und 32 Zeichen lang sein und darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten. Das erste Zeichen des Dienstnamens muss ein Buchstabe und das letzte Zeichen entweder ein Buchstabe oder eine Ziffer sein.
    • Standort: Wählen Sie die Region für Ihre Dienstinstanz aus.

    Screenshot of Azure portal showing Azure Spring Apps Create page.

  6. Klicken Sie auf Überprüfen und erstellen.

Erstellen und Bereitstellen der App

Im folgenden Verfahren wird die Anwendung mithilfe der Azure CLI erstellt und bereitgestellt. Führen Sie im Stammverzeichnis des Projekts folgenden Befehl aus:

  1. Melden Sie sich bei Azure an, und wählen Sie Ihr Abonnement aus.

    az login
    

    Wenn Sie über mehr als ein Abonnement verfügen, listen Sie mit dem folgenden Befehl die Abonnements auf, auf die Sie Zugriff haben, und wählen Sie dann das Abonnement aus, das Sie für diese Schnellstartanleitung verwenden möchten.

    az account list -o table
    

    Verwenden Sie den folgenden Befehl, um das Standardabonnement festzulegen, das mit den Azure CLI-Befehlen in dieser Schnellstartanleitung verwendet werden soll.

    az account set --subscription <Name or ID of a subscription from the last step>
    
  2. Erstellen Sie das Projekt mithilfe von Maven:

    mvn clean package -DskipTests
    
  3. Erstellen Sie die App mit einem zugewiesenen öffentlichen Endpunkt. Fügen Sie die Option --runtime-version=Java_11 ein, wenn Sie beim Generieren des Spring-Projekts die Java-Version 11 ausgewählt haben.

    az spring app create -n hellospring -s <service instance name> -g <resource group name> --assign-endpoint true
    
  4. Stellen Sie die JAR-Datei für die App bereit (target\hellospring-0.0.1-SNAPSHOT.jar unter Windows):

    az spring app deploy -n hellospring -s <service instance name> -g <resource group name> --artifact-path <jar file path>/hellospring-0.0.1-SNAPSHOT.jar
    
  5. Es dauert einige Minuten, bis die Bereitstellung der Anwendung abgeschlossen ist. Navigieren Sie im Azure-Portal zum Abschnitt Apps, um zu überprüfen, ob die Anwendung bereitgestellt wurde. Der Status der Anwendung sollte angezeigt werden.

Nach Abschluss der Bereitstellung können Sie unter https://<service instance name>-hellospring.azuremicroservices.io/ auf die App zugreifen.

Screenshot of app in browser window.

Streamingprotokolle in Echtzeit

Verwenden Sie den folgenden Befehl, um Echtzeitprotokolle von der App zu erhalten.

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

Protokolle werden in den Ergebnissen angezeigt:

Screenshot of streaming logs in a console window.

Tipp

Verwenden Sie az spring app logs -h, um weitere Parameter und Funktionen für Protokolldatenströme zu untersuchen.

Informationen zu erweiterten Protokollanalysefeatures finden Sie im Menü im Azure-Portal auf der Registerkarte Protokolle. Bei den hier aufgeführten Protokollen kommt es zu einer Wartezeit von einigen Minuten.

Screenshot of Azure portal showing Azure Spring Apps Logs query.

Bereinigen von Ressourcen

Falls Sie mit weiteren Schnellstartanleitungen und Tutorials fortfahren möchten, sollten Sie die Ressourcen nicht bereinigen. Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden die Ressourcen in der Ressourcengruppe gelöscht. Wenn Sie die Ressourcengruppe mithilfe der Azure CLI löschen möchten, verwenden Sie die folgenden Befehle:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Nächste Schritte

In diesem Schnellstart haben Sie gelernt, wie Sie:

  • Generieren eines einfachen Spring-Projekts
  • Bereitstellen einer Dienstinstanz
  • Erstellen und Bereitstellen der App mit einem öffentlichen Endpunkt
  • Streamen von Protokollen in Echtzeit

Informationen zu weiteren Azure Spring-Funktionen finden Sie in der Schnellstartserie, in der eine Beispielanwendung in Azure Spring Apps bereitgestellt wird:

Weitere Beispiele finden Sie auf GitHub: Azure Spring Apps-Beispiele.