Rychlý Start: nasazení první aplikace do jarního cloudu Azure

V tomto rychlém startu se dozvíte, jak nasadit malou aplikaci pro běh v Azure jaře Cloud.

Poznámka

Podpora Steeltoe pro jarní cloud Azure je teď nabízená jako verze Public Preview. Nabídky veřejné verze Preview umožňují zákazníkům experimentovat s novými funkcemi před jejich oficiální verzí. Funkce a služby verze Public Preview nejsou určeny pro produkční použití. Další informace o podpoře v rámci verzí Preview najdete v tématu Nejčastější dotazy nebo soubor a support Request.

V tomto rychlém startu se dozvíte, jak:

  • Vygenerování základního projektu Steeltoe .NET Core
  • Zřízení instance služby jarní cloudová služba Azure
  • Sestavení a nasazení aplikace s veřejným koncovým bodem
  • Streamování protokolů v reálném čase

Kód aplikace použitý v tomto rychlém startu je jednoduchá aplikace vytvořená pomocí šablony projektu webového rozhraní API .NET Core. Po dokončení tohoto příkladu bude aplikace dostupná online a bude ji možné spravovat prostřednictvím Azure Portal a Azure CLI.

Požadavky

Instalace rozšíření Azure CLI

Ověřte, jestli je verze Azure CLI 2.0.67 nebo novější:

az --version

Pomocí následujícího příkazu nainstalujte rozšíření Azure jaře Cloud pro rozhraní příkazového řádku Azure:

az extension add --name spring-cloud

Přihlášení k Azure

  1. Přihlaste se k Azure CLI:

    az login
    
  2. Pokud máte více než jedno předplatné, vyberte ho, který chcete použít pro tento rychlý Start.

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

Generování projektu Steeltoe .NET Core

v Visual Studio vytvořte webovou aplikaci ASP.NET Core s názvem "hello-world" se šablonou projektu rozhraní API. Všimněte si, že zde budou automaticky generované WeatherForecastControllery, které budou naše testovací koncové body později.

  1. Vytvořte složku pro zdrojový kód projektu a vygenerujte projekt.

    mkdir source-code
    
    cd source-code
    
    dotnet new webapi -n hello-world --framework netcoreapp3.1
    
  2. Přejděte do adresáře projektu.

    cd hello-world
    
  3. Upravte soubor appSettings. JSON a přidejte následující nastavení:

    "spring": {
      "application": {
        "name": "hello-world"
      }
    },
    "eureka": {
      "client": {
        "shouldFetchRegistry": true,
        "shouldRegisterWithEureka": true
      }
    }
    
  4. Také v souboru appSettings. JSON změňte úroveň protokolu pro Microsoft kategorii z Warning na Information . Tato změna zajistí, že se protokoly vytvoří při zobrazení protokolů streamování v pozdějším kroku.

    Soubor appSettings. JSON teď vypadá podobně jako v následujícím příkladu:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Information",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "spring": {
        "application": {
          "name": "hello-world"
        }
      },
      "eureka": {
        "client": {
          "shouldFetchRegistry": true,
          "shouldRegisterWithEureka": true
        }
      }
    }
    
  5. Přidejte závislosti a Zip úlohu do souboru . 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>
    

    Balíčky jsou pro zjišťování služby Steeltoe a klientskou knihovnu pro Azure jaře Cloud. ZipÚloha je určena k nasazení do Azure. Když dotnet publish příkaz spustíte, vygeneruje binární soubory ve složce pro publikování a tato úloha zips složku pro publikování do souboru .zip , který nahrajete do Azure.

  6. V souboru program. cs přidejte using direktivu a kód, který používá knihovnu klienta Azure pro jarní Cloud:

    using Microsoft.Azure.SpringCloud.Client;
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .UseAzureSpringCloudService()
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
    
  7. V souboru Startup. cs přidejte using direktivu a kód, který používá zjišťování služby Steeltoe na konci ConfigureServices metody:

    using Steeltoe.Discovery.Client;
    
    public void ConfigureServices(IServiceCollection services)
    {
        // Template code not shown.
    
        services.AddDiscoveryClient(Configuration);
    }
    
  8. Sestavte projekt, abyste se ujistili, že nejsou k dispozici žádné chyby kompilace.

    dotnet build
    

Zřízení instance služby

Následující postup vytvoří instanci Azure jarního cloudu pomocí Azure Portal.

  1. Otevřete Azure Portal.

  2. V horním vyhledávacím poli vyhledejte Azure jaře Cloud.

  3. Z výsledků vyberte Azure jaře Cloud .

    Ikona ASC – začátek

  4. Na stránce jarní cloud Azure vyberte vytvořit.

    Ikona ASC přidat

  5. Vyplňte formulář na stránce Vytvoření jarního cloudu Azure. Zvažte následující pokyny:

    • Předplatné: vyberte předplatné, které chcete pro tento prostředek fakturovat.
    • Skupina prostředků: Vytvořte novou skupinu prostředků. Název, který zde zadáte, bude použit v pozdějších krocích jako <resource group name> .
    • Podrobnosti o službě/název: zadejte <service instance name> . Název musí být dlouhý 4 až 32 znaků a může obsahovat jenom malá písmena, číslice a spojovníky. První znak názvu služby musí být písmeno a poslední znak musí být písmeno nebo číslo.
    • Oblast: Vyberte oblast pro instanci služby.

    Začátek portálu ASC

  6. Vyberte možnost zkontrolovat a vytvořit.

  7. Vyberte Vytvořit.

Sestavení a nasazení aplikace

Následující postup sestaví a nasadí projekt, který jste vytvořili dříve.

  1. Ujistěte se, že je příkazový řádek stále ve složce projektu.

  2. Spusťte následující příkaz pro sestavení projektu, publikování binárních souborů a uložení binárních souborů do souboru .zip ve složce projektu.

    dotnet publish -c release -o ./publish
    
  3. Vytvořte aplikaci v instanci cloudu Azure jaře s přiřazeným veřejným koncovým bodem. Použijte stejný název aplikace "Hello-World", který jste zadali v souboru 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. Nasaďte soubor .zip do aplikace.

    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-entryMožnost identifikuje soubor .dll , který obsahuje vstupní bod aplikace. Poté, co služba nahraje soubor .zip , extrahuje všechny soubory a složky a pokusí se spustit vstupní bod v souboru .dll určeném parametrem --main-entry .

    Dokončení nasazení aplikace trvá několik minut. Pokud chcete ověřit, že je nasazený, vyberte v Azure Portal část aplikace .

Otestování aplikace

Po dokončení nasazení přejděte k aplikaci na následující adrese URL:

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

Aplikace vrátí data JSON podobně jako v následujícím příkladu:

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

Streamování protokolů v reálném čase

Pomocí následujícího příkazu můžete z aplikace získat protokoly v reálném čase.

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

Protokoly se zobrazí ve výstupu:

[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

Slouží az spring-cloud app logs -h k prozkoumávání dalších parametrů a funkcí streamování protokolů.

Pro pokročilé funkce Log Analytics přejděte na kartu protokoly v nabídce na Azure Portal. Protokoly mají latenci během několika minut. Analýza protokolů

V tomto rychlém startu se dozvíte, jak nasadit malé aplikace do jarního cloudu Azure.

Kód aplikace použitý v tomto kurzu je jednoduchá aplikace vytvořená s pružinou Initializr. Po dokončení tohoto příkladu bude aplikace dostupná online a bude ji možné spravovat prostřednictvím Azure Portal.

V tomto rychlém startu se dozvíte, jak:

  • Vygenerujte základní projekt jarního cloudu
  • Zřízení instance služby
  • Sestavení a nasazení aplikace s veřejným koncovým bodem
  • Streamování protokolů v reálném čase

Požadavky

K provedení kroků v tomto kurzu Rychlý start je potřeba:

Vygenerování jarního cloudového projektu

Začněte s pružinou Initializr a vygenerujte ukázkový projekt s doporučenými závislostmi pro jarní cloud Azure. Tento odkaz k poskytnutí výchozích nastavení používá následující adresu URL.

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

Následující obrázek ukazuje Doporučené Initializr nastavení pro tento ukázkový projekt.

V tomto příkladu se používá Java verze 8. pokud chcete použít jazyk Java verze 11, změňte možnost v části Project Metadata.

Stránka Initializr

  1. Vyberte možnost Generovat , když jsou nastaveny všechny závislosti.

  2. Stáhněte a rozbalte balíček a pak vytvořte webový řadič pro jednoduchou webovou aplikaci přidáním souboru Src/Main/Java/com/example/hellospring/HelloController. Java s následujícím obsahem:

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

Zřízení instance Azure jarního cloudu

Následující postup vytvoří instanci Azure jarního cloudu pomocí Azure Portal.

  1. Na nové kartě otevřete Azure Portal.

  2. V horním vyhledávacím poli vyhledejte Azure jaře Cloud.

  3. Z výsledků vyberte Azure jaře Cloud .

    Ikona ASC – začátek

  4. Na stránce jarní cloud Azure vyberte vytvořit.

    Ikona ASC přidat

  5. Vyplňte formulář na stránce Vytvoření jarního cloudu Azure. Zvažte následující pokyny:

    • Předplatné: vyberte předplatné, které chcete pro tento prostředek fakturovat.
    • Skupina prostředků: vytváření nových skupin prostředků pro nové prostředky je osvědčeným postupem. Tuto skupinu prostředků použijete v pozdějších krocích jako <resource group name> .
    • Podrobnosti o službě/název: zadejte <service instance name> . Název musí být dlouhý 4 až 32 znaků a může obsahovat jenom malá písmena, číslice a spojovníky. První znak názvu služby musí být písmeno a poslední znak musí být písmeno nebo číslo.
    • Umístění: Vyberte oblast pro instanci služby.

    Začátek portálu ASC

  6. Vyberte možnost zkontrolovat a vytvořit.

Sestavení a nasazení aplikace

Následující postup sestaví a nasadí aplikaci pomocí rozhraní příkazového řádku Azure CLI. Spusťte následující příkaz v kořenu projektu.

  1. Přihlaste se k Azure a vyberte své předplatné.

    az login
    

    Pokud máte více než jedno předplatné, použijte následující příkaz k vypsání předplatných, ke kterým máte přístup, a pak vyberte ten, který chcete použít pro tento rychlý Start.

    az account list -o table
    

    Pomocí následujícího příkazu nastavte výchozí předplatné pro použití s příkazy Azure CLI v tomto rychlém startu.

    az account set --subscription <Name or ID of a subscription from the last step>
    
  2. Sestavte projekt pomocí Maven:

    mvn clean package -DskipTests
    
  3. Vytvořte aplikaci s přiřazeným veřejným koncovým bodem. Pokud jste při generování jarního cloudového projektu vybrali Java verze 11, zahrňte --runtime-version=Java_11 přepínač.

    az spring-cloud app create -n hellospring -s <service instance name> -g <resource group name> --assign-endpoint true
    
  4. Nasadit soubor JAR pro aplikaci ( target\hellospring-0.0.1-SNAPSHOT.jar na 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. Dokončení nasazení aplikace trvá několik minut. Pokud chcete ověřit, že je nasazený, vyberte v Azure Portal část aplikace . Měl by se zobrazit stav aplikace.

Po dokončení nasazení budete mít k aplikaci přístup na adrese https://<service instance name>-hellospring.azuremicroservices.io/ .

Přístup k aplikaci z prohlížeče

Streamování protokolů v reálném čase

Pomocí následujícího příkazu můžete z aplikace získat protokoly v reálném čase.

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

Protokoly se zobrazí ve výsledcích:

Protokoly streamování

Tip

Slouží az spring-cloud app logs -h k prozkoumávání dalších parametrů a funkcí streamování protokolů.

Pokročilé funkce pro analýzu protokolů najdete na kartě protokoly v nabídce na Azure Portal. Protokoly mají latenci během několika minut.

Analýza protokolů

Vyčištění prostředků

Ve výše uvedených krocích jste vytvořili prostředky Azure, které budou nadále účtovat poplatky, i když zůstanou v rámci vašeho předplatného. Pokud neočekáváte, že tyto prostředky budete potřebovat v budoucnu, odstraňte skupinu prostředků z portálu nebo spuštěním následujícího příkazu v rozhraní příkazového řádku Azure CLI:

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

Další kroky

V tomto rychlém startu jste se naučili:

  • Vygenerujte základní projekt jarního cloudu
  • Zřízení instance služby
  • Sestavení a nasazení aplikace s veřejným koncovým bodem
  • Streamování protokolů v reálném čase

Pokud se chcete dozvědět, jak používat další funkce Azure Springu, v této sérii rychlých startů nasadíte ukázkovou aplikaci pro Azure Spring Cloud:

Další ukázky jsou k dispozici na GitHub: Azure Spring Cloud Samples.