Hızlı başlangıç: ilk uygulamanızı Azure Spring Cloud 'a dağıtma

Bu hızlı başlangıçta, Azure Spring Cloud 'da çalıştırmak için küçük bir uygulamanı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. Daha sonra test uç noktanız olacak şekilde otomatik olarak üretilmiş bir hava düzeyi 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 appSettings. JSON dosyasını düzenleyin:

    "spring": {
      "application": {
        "name": "hello-world"
      }
    },
    "eureka": {
      "client": {
        "shouldFetchRegistry": true,
        "shouldRegisterWithEureka": true
      }
    }
    
  4. Ayrıca appSettings. JSON içinde, 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.

    AppSettings. JSON dosyası 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. AppSettings. JSON içinde belirttiğiniz aynı uygulama adını ("Hello-World") 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 bölümüne 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ükler 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üdeki 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 Spring Cloud 'a küçük bir uygulamanı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:

Yay bulutu projesi oluşturma

Azure Spring Cloud için önerilen bağımlılıklara sahip bir örnek proje oluşturmak üzere Spring ınitialku ile başlayın. Bu bağlantı, sizin için varsayılan ayarları sağlamak üzere aşağıdaki URL 'YI kullanır.

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

Aşağıdaki görüntüde Bu örnek proje için önerilen ınitialr ayarı gösterilmektedir.

Bu örnek Java sürüm 8 ' i kullanır. Java sürüm 11 ' i kullanmak istiyorsanız, Project meta verileri' ndeki seçeneği değiştirin.

Initialkr sayfası

  1. Tüm bağımlılıklar ayarlandığında Oluştur ' u seçin.

  2. Paketi indirip paketini açın ve ardından şu içeriğe sahip src/Main/Java/com/example/hellospring/HelloController. Java dosyasını ekleyerek basit bir Web uygulaması için bir Web 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!";
        }
    
    }
    

Azure yay bulutu örneği sağlama

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

  1. Yeni bir sekmede Azure Portalaçı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 kaynaklar için yeni kaynak grupları oluşturmak en iyi uygulamadır. Daha sonraki adımlarda bu kaynak grubunu olarak kullanacaksınız <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.
    • Konum: 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.

Uygulama derleme ve dağıtma

Aşağıdaki yordam, Azure CLı kullanarak uygulamayı oluşturur ve dağıtır. Projenin kökünde aşağıdaki komutu yürütün.

  1. Azure 'da oturum açın ve aboneliğinizi seçin.

    az login
    

    Birden fazla aboneliğiniz varsa, erişiminizin olduğu abonelikleri listelemek için aşağıdaki komutu kullanın, ardından bu hızlı başlangıç için kullanmak istediğiniz birini seçin.

    az account list -o table
    

    Bu hızlı başlangıçta Azure CLı komutlarıyla kullanılacak 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 derleyin:

    mvn clean package -DskipTests
    
  3. Ortak bir uç nokta atanmış uygulamayı oluşturun. Yay bulutu projesi oluştururken Java sürüm 11 ' i seçtiyseniz, --runtime-version=Java_11 anahtarını ekleyin.

    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>/hellospring-0.0.1-SNAPSHOT.jar
    
  5. 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 bölümüne gidin. Uygulamanın durumunu görmeniz gerekir.

Dağıtım tamamlandıktan sonra uygulamasına ' de erişebilirsiniz https://<service instance name>-hellospring.azuremicroservices.io/ .

Tarayıcıdan uygulamaya erişme

Akış günlükleri gerçek zamanlı olarak

Uygulamadan gerçek zamanlı Günlükler 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üntülenir:

Akış günlükleri

İ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ş günlük analizi özellikleri için Azure Portalmenüdeki Günlükler sekmesini ziyaret edin. Burada günlüklerde birkaç dakika gecikme vardır.

Günlük Analizi

Kaynakları temizleme

Yukarıdaki adımlarda, abonelikleriniz sırasında ücretlendirmeye devam edecek Azure kaynakları oluşturdunuz. Gelecekte bu kaynaklara ihtiyacınız yoksa, kaynak grubunu portaldan silin veya Azure CLı 'de aşağıdaki komutu çalıştırın:

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

Sonraki adımlar

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

  • Temel yay bulutu projesi 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.