クイック スタート:初めての Azure Spring Cloud アプリケーションをデプロイするQuickstart: Deploy your first Azure Spring Cloud application

このクイックスタートでは、Azure で実行する単純な Azure Spring Cloud マイクロサービス アプリケーションをデプロイする方法について説明します。This quickstart explains how to deploy a simple Azure Spring Cloud microservice application to run on Azure.

注意

Azure Spring Cloud の Steeltoe のサポートは、現時点ではパブリック プレビューとして提供されています。Steeltoe support for Azure Spring Cloud is currently offered as a public preview. パブリック プレビュー オファリングにより、お客様は公式リリースの前に新機能を試すことができます。Public preview offerings allow customers to experiment with new features prior to their official release. パブリック プレビューの機能とサービスは、運用環境での使用を目的としたものではありません。Public preview features and services are not meant for production use. プレビュー段階のサポートの詳細については、FAQ を参照するか、サポート リクエストを提出してください。For more information about support during previews, see the FAQ or file a Support request.

このクイックスタートでは、次の方法について説明します。By following this quickstart, you'll learn how to:

  • 基本的な Steeltoe .NET Core プロジェクトを生成するGenerate a basic Steeltoe .NET Core project
  • Azure Spring Cloud サービス インスタンスをプロビジョニングするProvision an Azure Spring Cloud service instance
  • パブリック エンドポイントがあるアプリをビルドしてデプロイするBuild and deploy the app with a public endpoint
  • リアルタイムでログをストリームするStream logs in real time

このクイックスタートで使用するアプリケーション コードは、.NET Core Web API プロジェクト テンプレートを使用して構築された単純なアプリです。The application code used in this quickstart is a simple app built with a .NET Core Web API project template. この例を完了すると、このアプリケーションにオンラインでアクセスし、Azure portal と Azure CLI で管理できるようになります。When you've completed this example, the application will be accessible online and can be managed via the Azure portal and the Azure CLI.

前提条件Prerequisites

Azure CLI 拡張機能をインストールするInstall Azure CLI extension

Azure CLI のバージョンが 2.0.67 以降であることを確認します。Verify that your Azure CLI version is 2.0.67 or later:

az --version

次のコマンドを使用して、Azure CLI 用の Azure Spring Cloud 拡張機能をインストールします。Install the Azure Spring Cloud extension for the Azure CLI using the following command:

az extension add --name spring-cloud

Azure にログインするLog in to Azure

  1. Azure CLI にログインするLog in to the Azure CLI

    az login
    
  2. サブスクリプションが複数ある場合は、このクイックスタートで使用するものを選択します。If you have more than one subscription, choose the one you want to use for this quickstart.

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

Steeltoe .NET Core プロジェクトを生成するGenerate a Steeltoe .NET Core project

Visual Studio で API プロジェクト テンプレートを使用して、"hello world" という名前の ASP.NET Core Web アプリケーションを作成します。In Visual Studio, create an ASP.NET Core Web application named as "hello-world" with API project template. 自動生成される WeatherForecastController を後でテスト エンドポイントとして使用することに注意してください。Please notice there will be a auto generated WeatherForecastController which will be our test endpoint later on.

  1. プロジェクトのソース コード用のフォルダーを作成し、プロジェクトを生成します。Create a folder for the project source code and generate the project.

    mkdir source-code
    
    cd source-code
    
    dotnet new webapi -n hello-world --framework netcoreapp3.1
    
  2. プロジェクト ディレクトリに移動します。Navigate into the project directory.

    cd hello-world
    
  3. appSettings.json ファイルを編集して、次の設定を追加します。Edit the appSettings.json file to add the following settings:

    "spring": {
      "application": {
        "name": "hello-world"
      }
    },
    "eureka": {
      "client": {
        "shouldFetchRegistry": true,
        "shouldRegisterWithEureka": true
      }
    }
    
  4. また、 appsettings.json で、Microsoft カテゴリのログ レベルを Warning から Informationに変更します。Also in appsettings.json , change the log level for the Microsoft category from Warning to Information. この変更により、後の手順でストリーミング ログを表示するときにログが生成されるようになります。This change ensures that logs will be produced when you view streaming logs in a later step.

    appsettings.json ファイルは、次の例のようになります。The appsettings.json file now looks similar to the following example:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Information",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "spring": {
        "application": {
          "name": "hello-world"
        }
      },
      "eureka": {
        "client": {
          "shouldFetchRegistry": true,
          "shouldRegisterWithEureka": true
        }
      }
    }
    
  5. .csproj ファイルに依存関係と Zip タスクを追加します。Add dependencies and a Zip task to the .csproj file:

    <ItemGroup>
      <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="3.0.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>
    

    パッケージは、Steeltoe サービスの検出と Azure Spring Cloud クライアント ライブラリ用です。The packages are for Steeltoe Service Discovery and the Azure Spring Cloud client library. Zip タスクは、Azure へのデプロイ用です。The Zip task is for deployment to Azure. dotnet publish コマンドを実行すると、 publish フォルダーにバイナリが生成されます。このタスクにより、 publish フォルダーが .zip ファイルに圧縮されます。これを Azure にアップロードします。When you run the dotnet publish command, it generates the binaries in the publish folder, and this task zips the publish folder into a .zip file that you upload to Azure.

  6. Program.cs ファイルに、using ディレクティブと Azure Spring Cloud クライアント ライブラリを使用するコードを追加します。In the Program.cs file, add a using directive and code that uses the Azure Spring Cloud client library:

    using Microsoft.Azure.SpringCloud.Client;
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .UseAzureSpringCloudService()
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
    
  7. Startup.cs ファイルに、ConfigureServices および Configure メソッドの最後に、using ディレクティブと Steeltoe サービス検出を使用するコードを追加します。In the Startup.cs file, add a using directive and code that uses the Steeltoe Service Discovery at the end of the ConfigureServices and Configure methods:

    using Steeltoe.Discovery.Client;
    
    public void ConfigureServices(IServiceCollection services)
    {
        // Template code not shown.
    
        services.AddDiscoveryClient(Configuration);
    }
    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Template code not shown.
    
        app.UseDiscoveryClient();
    }
    
  8. プロジェクトをビルドし、コンパイル エラーがないことを確認します。Build the project to make sure there are no compile errors.

    dotnet build
    

サービス インスタンスをプロビジョニングするProvision a service instance

次の手順では、Azure portal を使用して、Azure Spring Cloud のインスタンスを作成します。The following procedure creates an instance of Azure Spring Cloud using the Azure portal.

  1. Azure Portalを開きます。Open the Azure portal.

  2. 上部の検索ボックスから Azure Spring Cloud を探します。From the top search box, search for Azure Spring Cloud.

  3. その結果から [Azure Spring Cloud] を選択します。Select Azure Spring Cloud from the results.

    ASC アイコンでの開始

  4. [Azure Spring Cloud] ページで [+ 追加] を選択します。On the Azure Spring Cloud page, select + Add.

    ASC アイコンでの追加

  5. Azure Spring Cloud の [作成] ページで、フォームに入力します。Fill out the form on the Azure Spring Cloud Create page. 次のガイドラインを考慮してください。Consider the following guidelines:

    • サブスクリプション :このリソースに対する課金用のサブスクリプションを選択します。Subscription : Select the subscription you want to be billed for this resource.
    • [リソース グループ] :新しいリソース グループを作成します。Resource group : Create a new resource group. ここで入力する名前は、後の手順で <resource group name> として使用されます。The name you enter here will be used in later steps as <resource group name>.
    • [サービスの詳細/名前] : <service instance name> を指定します。Service Details/Name : Specify the <service instance name>. 名前の長さは 4 文字から 32 文字で、小文字、数字、およびハイフンのみを使用できます。The name must be between 4 and 32 characters long and can contain only lowercase letters, numbers, and hyphens. サービス名の最初の文字は英字でなければならず、最後の文字は英字または数字でなければなりません。The first character of the service name must be a letter and the last character must be either a letter or a number.
    • [リージョン] :自分のサービス インスタンスのリージョンを選択します。Region : Select the region for your service instance.

    ASC ポータルの起動

  6. [確認と作成] を選択します。Select Review and create.

アプリを構築してデプロイするBuild and deploy the app

次の手順では、前に作成したプロジェクトをビルドして配置します。The following procedure builds and deploys the project that you created earlier.

  1. コマンド プロンプトがプロジェクト フォルダー内にあることを確認してください。Make sure the command prompt is still in the project folder.

  2. 次のコマンドを実行してプロジェクトをビルドし、バイナリを発行して、バイナリをプロジェクトフォルダー内の .zip ファイルに格納します。Run the following command to build the project, publish the binaries, and store the binaries in a .zip file in the project folder.

    dotnet publish -c release -o ./publish
    
  3. パブリック エンドポイントが割り当てられた Azure Spring Cloud インスタンスでアプリを作成します。Create an app in your Azure Spring Cloud instance with a public endpoint assigned. appsettings.json で指定したものと同じアプリケーション名 "hello world" を使用します。Use the same application name "hello-world" that you specified in appsettings.json.

    az spring-cloud app create -n hello-world -s <service instance name> -g <resource group name> --is-public --runtime-version NetCore_31
    
  4. .zip ファイルをアプリにデプロイします。Deploy the .zip file to the 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
    

    --main-entry オプションにより、アプリケーションのエントリ ポイントを含む .dll ファイルを識別します。The --main-entry option identifies the .dll file that contains the application's entry point. サービスは、 .zip ファイルをアップロードした後、すべてのファイルとフォルダーを抽出し、--main-entry で指定された .dll ファイル内のエントリ ポイントを実行しようとします。After the service uploads the .zip file, it extracts all the files and folders and tries to execute the entry point in the .dll file specified by --main-entry.

    アプリケーションのデプロイが完了するまでに数分かかります。It takes a few minutes to finish deploying the application. デプロイが完了したことを確認するには、Azure portal で [アプリ] ブレードに移動します。To confirm that it has deployed, go to the Apps blade in the Azure portal.

アプリのテストTest the app

デプロイが完了したら、次の URL でアプリにアクセスできるようになります。Once deployment has completed, access the app at the following URL:

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

次の例のような JSON データが返されます。The app returns JSON data similar to the following example:

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

リアルタイムでログをストリームするStream logs in real time

次のコマンドを使用して、アプリからリアルタイム ログを取得します。Use the following command to get real time logs from the App.

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

出力にログが表示されます。Logs appear in the output:

[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

ヒント

さらに多くのパラメーターとログ ストリーム機能を調べるには、az spring-cloud app logs -h を使用します。Use az spring-cloud app logs -h to explore more parameters and log stream functionalities.

高度なログ分析機能については、 Azure portal のメニューで [ログ] タブにアクセスしてください。For advanced log analytics features, visit Logs tab in the menu on Azure portal. ここで、ログの待ち時間は数分です。Logs here have a latency of a few minutes. Logs Analytics Logs Analytics

このクイックスタートでは、Azure で実行する単純な Azure Spring Cloud マイクロサービス アプリケーションをデプロイする方法について説明します。This quickstart explains how to deploy a simple Azure Spring Cloud microservice application to run on Azure.

このチュートリアルで使用されるアプリケーション コードは、Spring Initializr を使用してビルドされる単純なアプリです。The application code used in this tutorial is a simple app built with Spring Initializr. この例を完了すると、アプリケーションにオンラインでアクセスし、Azure portal で管理できるようになります。When you've completed this example, the application will be accessible online and can be managed via the Azure portal.

このクイックスタートでは、以下の方法について説明します。This quickstart explains how to:

  • 基本的な Spring Cloud プロジェクトを生成するGenerate a basic Spring Cloud project
  • サービス インスタンスをプロビジョニングするProvision a service instance
  • パブリック エンドポイントがあるアプリをビルドしてデプロイするBuild and deploy the app with a public endpoint
  • リアルタイムでログをストリームするStream logs in real time

前提条件Prerequisites

このクイック スタートを完了するには、以下が必要です。To complete this quickstart:

Spring Cloud プロジェクトを生成するGenerate a Spring Cloud project

Spring Initializr を開始して、Azure Spring Cloud に対して推奨される依存関係があるサンプル プロジェクトを生成します。Start with Spring Initializr to generate a sample project with recommended dependencies for Azure Spring Cloud. 次の図は、このサンプル プロジェクトに対して設定された Initializr を示しています。The following image shows the Initializr set up for this sample project.

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

Initializr のページ

  1. すべての依存関係が設定されたら、 [生成] をクリックします。Click Generate when all the dependencies are set. パッケージをダウンロードしてアンパックし、次のように src/main/java/com/example/hellospring/HelloController.java を追加して、単純な Web アプリケーション用の Web コントローラーを作成します。Download and unpack the package, then create a web controller for a simple web application by adding src/main/java/com/example/hellospring/HelloController.java as follows:

    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 Spring Cloud のインスタンスをプロビジョニングするProvision an instance of Azure Spring Cloud

次の手順では、Azure portal を使用して、Azure Spring Cloud のインスタンスを作成します。The following procedure creates an instance of Azure Spring Cloud using the Azure portal.

  1. 新しいタブで、Azure portal を開きます。In a new tab, open the Azure portal.

  2. 上部の検索ボックスから Azure Spring Cloud を探します。From the top search box, search for Azure Spring Cloud.

  3. その結果から [Azure Spring Cloud] を選択します。Select Azure Spring Cloud from the results.

    ASC アイコンでの開始

  4. Azure Spring Cloud ページで [+ 追加] をクリックします。On the Azure Spring Cloud page, click + Add.

    ASC アイコンでの追加

  5. Azure Spring Cloud の [作成] ページで、フォームに入力します。Fill out the form on the Azure Spring Cloud Create page. 次のガイドラインを考慮してください。Consider the following guidelines:

    • サブスクリプション :このリソースに対する課金用のサブスクリプションを選択します。Subscription : Select the subscription you want to be billed for this resource.
    • [リソース グループ] :新しいリソース用に新しいリソース グループを作成することをお勧めします。Resource group : Creating new resource groups for new resources is a best practice. これが、後の手順で <resource group name> として使用されます。This will be used in later steps as <resource group name>.
    • [サービスの詳細/名前] : <service instance name> を指定します。Service Details/Name : Specify the <service instance name>. 名前の長さは 4 文字から 32 文字で、小文字、数字、およびハイフンのみを使用できます。The name must be between 4 and 32 characters long and can contain only lowercase letters, numbers, and hyphens. サービス名の最初の文字は英字でなければならず、最後の文字は英字または数字でなければなりません。The first character of the service name must be a letter and the last character must be either a letter or a number.
    • [場所] :自分のサービス インスタンスのリージョンを選択します。Location : Select the region for your service instance.

    ASC ポータルの起動

  6. [確認と作成] をクリックします。Click Review and create.

アプリを構築してデプロイするBuild and deploy the app

以下の手順では、Azure CLI を使用してアプリケーションをビルドし、デプロイします。The following procedure builds and deploys the application using the Azure CLI. プロジェクトのルートで、次のコマンドを実行します。Execute the following command at the root of the project.

  1. Maven を使用してプロジェクトをビルドします。Build the project using Maven:

    mvn clean package -DskipTests
    
  2. Azure CLI 用の Azure Spring Cloud 拡張機能をまだインストールしていない場合は、インストールします。(If you haven't already installed it) Install the Azure Spring Cloud extension for the Azure CLI:

    az extension add --name spring-cloud
    
  3. パブリック エンドポイントが割り当てられるアプリを作成します。Create the app with public endpoint assigned:

    az spring-cloud app create -n hellospring -s <service instance name> -g <resource group name> --is-public
    
  4. アプリの Jar ファイルをデプロイします (Windows では target\hellospring-0.0.1-SNAPSHOT.jar)。Deploy the Jar file for the app (target\hellospring-0.0.1-SNAPSHOT.jar on Windows):

    az spring-cloud app deploy -n hellospring -s <service instance name> -g <resource group name> --jar-path <jar file path>
    
  5. アプリケーションのデプロイが完了するまでに数分かかります。It takes a few minutes to finish deploying the application. デプロイが完了したことを確認するには、Azure portal で [アプリ] ブレードに移動します。To confirm that it has deployed, go to the Apps blade in the Azure portal. アプリケーションの状態が表示されるはずです。You should see the status of the application.

デプロイが完了したら、https://<service instance name>-hellospring.azuremicroservices.io/ でアプリにアクセスできるようになります。Once deployment has completed, you can access the app at https://<service instance name>-hellospring.azuremicroservices.io/.

ブラウザーからアプリにアクセスする Access app from browser

リアルタイムでログをストリーミングするStreaming logs in real time

次のコマンドを使用して、アプリからリアルタイム ログを取得します。Use the following command to get real time logs from the App.

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

結果のログが表示されます。Logs appear in the results:

ストリーミング ログ Streaming Logs

ヒント

さらに多くのパラメーターとログ ストリーム機能を調べるには、az spring-cloud app logs -h を使用します。Use az spring-cloud app logs -h to explore more parameters and log stream functionalities.

高度なログ分析機能については、 Azure portal のメニューで [ログ] タブにアクセスしてください。For advanced logs analytics features, visit Logs tab in the menu on Azure portal. ここで、ログの待ち時間は数分です。Logs here have a latency of a few minutes.

Logs Analytics Logs Analytics

リソースをクリーンアップするClean up resources

前の手順で作成した Azure リソースは、サブスクリプションに残っている間は課金され続けます。In the preceding steps, you created Azure resources that will continue to accrue charges while they remain in your subscription. これらのリソースが今後は必要ないと予想される場合は、ポータルから、または Azure CLI で次のコマンドを実行して、このリソース グループを削除してください。If you don't expect to need these resources in the future, delete the resource group from the portal or by running the following command in the Azure CLI:

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

次の手順Next steps

このクイックスタートでは、次の方法について学習しました。In this quickstart, you learned how to:

  • 基本的な Azure Spring Cloud プロジェクトを生成するGenerate a basic Azure Spring Cloud project
  • サービス インスタンスをプロビジョニングするProvision a service instance
  • パブリック エンドポイントがあるアプリをビルドしてデプロイするBuild and deploy the app with a public endpoint
  • リアルタイムでログをストリームするStream logs in real time

Azure Spring のその他の機能を使用する方法について学習するには、Azure Spring Cloud にサンプル アプリケーションをデプロイするクイックスタート シリーズに進んでください。To learn how to use more Azure Spring capabilities, advance to the quickstart series that deploys a sample application to Azure Spring Cloud:

その他のサンプルを GitHub で入手できます (Azure Spring Cloud のサンプル)。More samples are available on GitHub: Azure Spring Cloud Samples.