Hızlı başlangıç: ilk Azure Spring Cloud uygulamanızı dağıtın

Bu hızlı başlangıçta, Azure 'da çalıştırmak üzere basit bir Azure yay bulutu mikro hizmet uygulamasının nasıl dağıtılacağı açıklanmaktadır.

Not

Azure yay bulutu için steeltoe desteği şu anda genel önizleme olarak sunulmaktadır. Genel Önizleme teklifleri, müşterilerin resmi sürümünden önceki yeni özelliklerle deneme yapmasına olanak tanır. Genel Önizleme özellikleri ve Hizmetleri üretim kullanımı için tasarlanmamıştır. Önizlemeler sırasında destek hakkında daha fazla bilgi için bkz. SSS veya dosya a destek isteği.

Bu hızlı başlangıcı izleyerek şunları nasıl yapacağınızı öğreneceksiniz:

  • Temel bir Steeltoe .NET Core projesi oluşturma
  • Azure yay bulut hizmeti örneği sağlama
  • Uygulamayı ortak bir uç nokta ile derleyin ve dağıtın
  • Gerçek zamanlı olarak günlük akışı yapma

Bu hızlı başlangıçta kullanılan uygulama kodu, .NET Core Web API 'SI proje şablonuyla oluşturulmuş basit bir uygulamadır. Bu örneği tamamladığınızda, uygulama çevrimiçi olarak erişilebilir olur ve Azure portal ve Azure CLı aracılığıyla yönetilebilir.

Önkoşullar

Azure CLI uzantısını yükleme

Azure CLı sürümünüzün 2.0.67 veya üzeri olduğunu doğrulayın:

az --version

Aşağıdaki komutu kullanarak Azure CLı için Azure yay bulutu uzantısını yükler:

az extension add --name spring-cloud

Azure'da oturum açma

  1. Azure CLı 'da oturum açın:

    az login
    
  2. Birden fazla aboneliğiniz varsa, bu hızlı başlangıç için kullanmak istediğiniz birini seçin.

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

Steeltoe .NET Core projesi oluşturma

Visual Studio ' de, apı proje şablonuyla "hello-world" olarak adlandırılan bir ASP.NET Core Web uygulaması oluşturun. Bu, daha sonra test uç noktanız olacak otomatik olarak oluşturulmuş bir üst, bir otomatik oluşturulan dalgalı işlem denetleyicisi olacağını lütfen unutmayın.

  1. Proje kaynak kodu için bir klasör oluşturun ve proje oluşturun.

    mkdir source-code
    
    cd source-code
    
    dotnet new webapi -n hello-world --framework netcoreapp3.1
    
  2. Proje dizinine gidin.

    cd hello-world
    
  3. Aşağıdaki ayarları eklemek için dosyadaki appSettings.js düzenleyin:

    "spring": {
      "application": {
        "name": "hello-world"
      }
    },
    "eureka": {
      "client": {
        "shouldFetchRegistry": true,
        "shouldRegisterWithEureka": true
      }
    }
    
  4. Ayrıca appsettings.jsüzerinde, kategori için günlük düzeyini ' dan ' a değiştirin Microsoft Warning Information . Bu değişiklik, akış günlüklerini sonraki bir adımda görüntülediğinizde günlüklerin üretileceği bir işlem sağlar.

    Dosyadaki appsettings.js artık aşağıdaki örneğe benzer şekilde görünür:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Information",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "spring": {
        "application": {
          "name": "hello-world"
        }
      },
      "eureka": {
        "client": {
          "shouldFetchRegistry": true,
          "shouldRegisterWithEureka": true
        }
      }
    }
    
  5. Bağımlılıklar ve bir Zip görevi . csproj dosyasına ekleyin:

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

    Paketler, Steeltoe hizmeti bulma ve Azure yay bulutu istemci kitaplığı içindir. Bu Zip görev, Azure 'a dağıtım içindir. dotnet publishKomutunu çalıştırdığınızda, bu, dosyaları Yayımla klasöründe oluşturur ve bu görev Publish klasörünü Azure 'a yüklediğiniz bir .zip dosyasına dönüştürür.

  6. Program. cs dosyasında, using Azure yay bulutu istemci kitaplığı 'nı kullanan bir yönerge ve kod ekleyin:

    using Microsoft.Azure.SpringCloud.Client;
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .UseAzureSpringCloudService()
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
    
  7. Başlangıç. cs dosyasında, using yöntemin sonunda Steeltoe hizmeti bulma 'yı kullanan bir yönerge ve kod ekleyin ConfigureServices :

    using Steeltoe.Discovery.Client;
    
    public void ConfigureServices(IServiceCollection services)
    {
        // Template code not shown.
    
        services.AddDiscoveryClient(Configuration);
    }
    
  8. Derleme hatası olmadığından emin olmak için projeyi derleyin.

    dotnet build
    

Hizmet örneği sağlama

Aşağıdaki yordam Azure portal kullanarak bir Azure Spring Cloud örneği oluşturur.

  1. Azure portalını açın.

  2. Üst arama kutusundan Azure yay bulutu' nı arayın.

  3. Sonuçlardan Azure yay bulutu ' nı seçin.

    ASC simgesi başlangıç

  4. Azure yay bulutu sayfasında Oluştur' u seçin.

    ASC simgesi ekle

  5. Azure yay bulutu Oluştur sayfasında formu doldurun. Aşağıdaki yönergeleri göz önünde bulundurun:

    • Abonelik: Bu kaynak için faturalandırılması istediğiniz aboneliği seçin.
    • Kaynak grubu: yeni bir kaynak grubu oluşturun. Buraya girdiğiniz ad sonraki adımlarda olduğu gibi kullanılacaktır <resource group name> .
    • Hizmet Ayrıntıları/adı: öğesini belirtin <service instance name> . Ad 4 ila 32 karakter uzunluğunda olmalı ve yalnızca küçük harf, sayı ve kısa çizgi içermelidir. Hizmet adının ilk karakteri bir harf olmalıdır ve son karakter bir harf ya da sayı olmalıdır.
    • Bölge: hizmet örneğiniz için bölgeyi seçin.

    ASC portalı başlangıcı

  6. Gözden geçir ve Oluştur ' u seçin.

  7. Oluştur’u seçin.

Uygulama derleme ve dağıtma

Aşağıdaki yordam, daha önce oluşturduğunuz projeyi oluşturur ve dağıtır.

  1. Komut isteminin hala proje klasöründe olduğundan emin olun.

  2. Projeyi derlemek, ikilileri yayımlamak ve ikili dosyaları proje klasöründe bir .zip dosyasında depolamak için aşağıdaki komutu çalıştırın.

    dotnet publish -c release -o ./publish
    
  3. Azure Spring Cloud örneğiniz için genel bir uç nokta atanmış olarak bir uygulama oluşturun. Üzerindeappsettings.js belirttiğiniz "Hello-World" uygulama adını kullanın.

    az spring-cloud app create -n hello-world -s <service instance name> -g <resource group name> --assign-endpoint --runtime-version NetCore_31
    
  4. .zip dosyasını uygulamaya dağıtın.

    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-entrySeçeneği, uygulamanın giriş noktasını içeren .dll dosyasını tanımlar. Hizmet .zip dosyayı karşıya yükledikten sonra, tüm dosya ve klasörleri ayıklar ve tarafından belirtilen .dll dosyasında giriş noktasını yürütmeye çalışır --main-entry .

    Uygulamanın dağıtım işleminin tamamlanmasının birkaç dakika sürer. Dağıtıldığını doğrulamak için Azure portal uygulamalar dikey penceresine gidin.

Uygulamayı test etme

Dağıtım tamamlandıktan sonra uygulamaya şu URL 'den erişin:

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

Uygulama, aşağıdaki örneğe benzer JSON verileri döndürür:

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

Gerçek zamanlı olarak günlük akışı yapma

Uygulamadan gerçek zamanlı günlükleri almak için aşağıdaki komutu kullanın.

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

Günlükler çıkışta görüntülenir:

[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

İpucu

az spring-cloud app logs -hDaha fazla parametre ve günlük akışı işlevlerini araştırmak için kullanın.

Gelişmiş Log Analytics özellikleri için, Azure Portalmenüsündeki Günlükler sekmesini ziyaret edin. Burada günlüklerde birkaç dakika gecikme vardır. Günlük Analizi

Bu hızlı başlangıçta, Azure 'da çalıştırmak üzere basit bir Azure yay bulutu mikro hizmet uygulamasının nasıl dağıtılacağı açıklanmaktadır.

Bu öğreticide kullanılan uygulama kodu, Spring ınitialsır ile oluşturulmuş basit bir uygulamadır. Bu örneği tamamladığınızda, uygulama çevrimiçi olarak erişilebilir olur ve Azure portal aracılığıyla yönetilebilir.

Bu hızlı başlangıçta nasıl yapılacağı açıklanmaktadır:

  • Temel yay bulutu projesi oluşturma
  • Hizmet örneği sağlama
  • Uygulamayı ortak bir uç nokta ile derleyin ve dağıtın
  • Gerçek zamanlı olarak günlük akışı yapma

Önkoşullar

Bu hızlı başlangıcı tamamlamak için:

Bir Spring Cloud oluşturma

Spring Initializr'ı başlatarak projeniz için önerilen bağımlılıklara sahip Azure Spring Cloud. Bu bağlantı, sizin için varsayılan ayarları sağlamak için aşağıdaki URL'yi kullanır.

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

Aşağıdaki görüntüde, bu örnek proje için önerilen Initializr ayarlanmıştır.

Bu örnekte Java sürüm 8'i kullandığına dikkat edin. Java sürüm 11'i kullanmak için Meta Veriler altında seçeneğini Project olun.

Initializr sayfası

  1. Tüm bağımlılıklar ayarlanırken Oluştur'a seçin. Paketi indirip paketin paketini açıp basit bir web uygulaması için aşağıdaki gibi ekleyerek bir web src/main/java/com/example/hellospring/HelloController.java denetleyicisi oluşturun:

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

Örnek sağlama Azure Spring Cloud

Aşağıdaki yordam, Azure Spring Cloud kullanarak bir Azure portal.

  1. Yeni bir sekmede, yeni Azure portal.

  2. Üst arama kutusundan Azure Spring Cloud.

  3. Sonuçlardan Azure Spring Cloud'yi seçin.

    ASC simgesi başlat

  4. Yeni Azure Spring Cloud Oluştur'a tıklayın.

    ASC simgesi ekleme

  5. Oluştur sayfasında formu Azure Spring Cloud doldurun. Aşağıdaki yönergeleri göz önünde bulundurun:

    • Abonelik: Bu kaynak için faturalandır yapmak istediğiniz aboneliği seçin.
    • Kaynak grubu: Yeni kaynaklar için yeni kaynak grupları oluşturmak en iyi yöntemdir. Bu, sonraki adımlarda olarak <resource group name> kullanılacaktır.
    • Hizmet Ayrıntıları/Adı: <service instance name> belirtin. Ad 4 ile 32 karakter uzunluğunda olmalıdır ve yalnızca küçük harf, rakam ve kısa çizgi içerebilir. Hizmet adının ilk karakteri bir harf, son karakter ise bir harf veya sayı olması gerekir.
    • Konum: Hizmet örneğinin bölgelerini seçin.

    ASC portalı başlatma

  6. Gözden geçir'i seçin ve oluşturun.

Uygulama derleme ve dağıtma

Aşağıdaki yordam, Uygulamayı Azure CLI kullanarak derleme ve dağıtma işlemlerini gerçekleştirmektedir. Projenin kökünde aşağıdaki komutu yürütün.

  1. Azure'da oturum açma ve aboneliğinizi seçme.

    az login
    

    Birden fazla aboneliğiniz varsa, erişiminiz olan abonelikleri listeleyen aşağıdaki komutu kullanın ve ardından bu hızlı başlangıç için kullanmak istediğiniz aboneliği seçin.

    az account list -o table
    

    Bu hızlı başlangıçta Azure CLI komutlarıyla kullanmak üzere varsayılan aboneliği ayarlamak için aşağıdaki komutu kullanın.

    az account set --subscription <Name or ID of a subscription from the last step>
    
  2. Maven kullanarak projeyi derleme:

    mvn clean package -DskipTests
    
  3. Uygulamayı atanmış genel uç noktayla oluşturun. Spring Cloud projesini oluşturmada Java sürüm 11'i seçtiyebilirsiniz. --runtime-version=Java_11 anahtarını dahil edin.

    az spring-cloud app create -n hellospring -s <service instance name> -g <resource group name> --assign-endpoint true
    
  4. Uygulama için Jar dosyasını dağıtın ( target\hellospring-0.0.1-SNAPSHOT.jar Windows):

    az spring-cloud app deploy -n hellospring -s <service instance name> -g <resource group name> --artifact-path <jar file path>
    
  5. Uygulamanın dağıtımı birkaç dakika sürer. Dağıtıldığından onaylamak için uygulamanın Uygulama dikey penceresine Azure portal. Uygulamanın durumunu görüyor gerekir.

Dağıtım tamamlandıktan sonra, üzerinden uygulamaya https://<service instance name>-hellospring.azuremicroservices.io/ erişebilirsiniz.

Uygulamaya tarayıcıdan erişme

Günlüklerin gerçek zamanlı olarak akışının gerçek zamanlı olarak

Uygulamanın gerçek zamanlı günlüklerini almak için aşağıdaki komutu kullanın.

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

Günlükler sonuçlarda görünür:

Akış Günlükleri

İpucu

Daha az spring-cloud app logs -h fazla parametre ve günlük akışı işlevini keşfetmek için kullanın.

Gelişmiş günlük analizi özellikleri için, günlükler menüsündeki Günlükler sekmesiniAzure portal. Buradaki günlüklerde birkaç dakikalık bir gecikme süresi vardır.

Günlük Analizi

Kaynakları temizleme

Önceki adımlarda, aboneliğiniz içinde kalırken ücret tahakkuka devam edecek Azure kaynakları oluşturdunız. Gelecekte bu kaynaklara ihtiyacınız olmasını bekleye ediyorsanız kaynak grubunu portaldan veya Azure CLI'da aşağıdaki komutu çalıştırarak silin:

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

Sonraki adımlar

Bu hızlı başlangıçta şunları öğrendiniz:

  • Temel bir Azure Spring Cloud oluşturma
  • Hizmet örneği sağlama
  • Uygulamayı genel uç noktayla derleme ve dağıtma
  • Gerçek zamanlı olarak günlük akışı yapma

Daha fazla Azure Spring özelliği kullanmayı öğrenmek için örnek bir uygulama dağıtan hızlı başlangıç serisine ilerleyin ve Azure Spring Cloud:

Daha fazla örnek için GitHub: Azure Spring Cloud Örnekleri.