Azure Spring Cloud でステージング環境を設定するSet up a staging environment in Azure Spring Cloud

この記事では、Azure Spring Cloud でブルーグリーン デプロイ パターンを使ってステージング環境のデプロイを設定する方法について説明します。This article discusses how to set up a staging deployment by using the blue-green deployment pattern in Azure Spring Cloud. ブルー/グリーン デプロイとは、新しい (グリーン) バージョンのデプロイ中に、既存 (ブルー) のバージョンを実行状態のまま保持する、Azure DevOps の継続的デリバリーのパターンです。Blue/green deployment is an Azure DevOps Continuous Delivery pattern that relies on keeping an existing (blue) version live, while a new (green) one is deployed. この記事では、運用環境デプロイに直接変更を加えることなく、ステージング環境のデプロイを運用環境に移す方法について説明します。This article shows you how to put that staging deployment into production without changing the production deployment directly.

前提条件Prerequisites

この記事では、Azure Spring Cloud アプリケーションの起動に関するチュートリアルの PiggyMetrics アプリケーションを既にデプロイしてあることを前提としています。This article assumes that you've already deployed the PiggyMetrics application from our tutorial about launching an Azure Spring Cloud application. PiggyMetrics は、"gateway"、"account-service"、"auth-service" という 3 つのアプリケーションで構成されます。PiggyMetrics comprises three applications: "gateway," "account-service," and "auth-service."

この例に別のアプリケーションを使用したい場合は、そのアプリケーションの公開部分に簡単な変更を加える必要があります。If you want to use a different application for this example, you need to make a simple change in a public-facing portion of the application. その変更により、ステージング環境のデプロイが運用環境と区別されます。This change differentiates your staging deployment from production.

ヒント

Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。Azure Cloud Shell is a free interactive shell that you can use to run the instructions in this article. 最新バージョンの Git、JDK、Maven、Azure CLI など、一般的な Azure ツールがプレインストールされています。It has common, preinstalled Azure tools, including the latest versions of Git, JDK, Maven, and the Azure CLI. Azure サブスクリプションにサインインしている場合は、Azure Cloud Shell を開始します。If you're signed in to your Azure subscription, start your Azure Cloud Shell. 詳細については、Cloud Shell の概要に関するページをご覧ください。To learn more, see Overview of Azure Cloud Shell.

Azure Spring Cloud でステージング環境を設定するには、次のセクションの手順に従います。To set up a staging environment in Azure Spring Cloud, follow the instructions in the next sections.

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

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

az extension add --name spring-cloud

すべてのデプロイを表示するView all deployments

Azure portal で自分のサービス インスタンスに移動し、 [Deployment management](デプロイ管理) を選択してすべてのデプロイを表示します。Go to your service instance in the Azure portal, and select Deployment management to view all deployments. 詳細を表示するには、各デプロイを選択します。To view more details, you can select each deployment.

ステージング環境のデプロイの作成Create a staging deployment

  1. ローカル開発環境で、PiggyMetrics のゲートウェイ アプリケーションに小さな変更を加えます。In your local development environment, make a small modification to the PiggyMetrics gateway application. たとえば、gateway/src/main/resources/static/css/launch.css ファイルの色を変更します。For instance, change the color in the gateway/src/main/resources/static/css/launch.css file. こうすることで、2 つのデプロイを簡単に区別できるようになります。Doing so lets you easily differentiate the two deployments. jar パッケージをビルドするには、次のコマンドを実行します。To build the jar package, run the following command:

    mvn clean package
    
  2. Azure CLI で新しいデプロイを作成し、ステージング環境のデプロイの名前を "グリーン" にします。In the Azure CLI, create a new deployment, and give it the staging deployment name "green."

    az spring-cloud app deployment create -g <resource-group-name> -s <service-instance-name> --app gateway -n green --jar-path gateway/target/gateway.jar
    
  3. デプロイが正常に完了したら、 [アプリケーション ダッシュボード] からゲートウェイのページにアクセスし、左側の [App Instances](アプリ インスタンス) タブで自分のインスタンスをすべて表示します。After the deployment finishes successfully, access the gateway page from the Application Dashboard, and view all your instances in the App Instances tab on the left.

注意

検出状態が OUT_OF_SERVICE になっているので、確認が完了するまで、このデプロイにはトラフィックがルーティングされません。The discovery status is OUT_OF_SERVICE so that traffic won't be routed to this deployment before verification is complete.

ステージング環境のデプロイを確認するVerify the staging deployment

  1. [Deployment management](デプロイ管理) に戻って、新しいデプロイを選択します。Return to the Deployment management page, and select your new deployment. デプロイの状態は [実行中] と表示されます。The deployment status should show Running. 環境がステージング環境であるため、 [Assign/Unassign domain](ドメインの割り当て/割り当て解除) ボタンは淡色表示になります。The Assign/Unassign domain button should appear grayed, because the environment is a staging environment.

  2. [概要] ペインにはテスト エンドポイントが表示されます。In the Overview pane, you should see a Test Endpoint. 新しいブラウザー ウィンドウにコピーして貼り付けると、新しい PiggyMetrics ページが表示されます。Copy and paste it into a new browser window, and the new PiggyMetrics page should be displayed.

ヒント

  • テスト エンドポイントの末尾がスラッシュ (/) であり、CSS ファイルが正しく読み込まれていることを確認します。Confirm that your test endpoint ends with a slash (/) to ensure that the CSS file is loaded correctly.
  • ページを表示するためにブラウザーでログイン資格情報の入力を求められる場合は、URL デコードを使用して自分のテスト エンドポイントをデコードします。If your browser requires you to enter login credentials to view the page, use URL decode to decode your test endpoint. URL デコードは、"https://<ユーザー名>:<パスワード>@<クラスター名>.test.azureapps.io/gateway/green" の形式で URL を返します。URL decode returns a URL in the form "https://<username>:<password>@<cluster-name>.test.azureapps.io/gateway/green". このフォームを使用してエンドポイントにアクセスします。Use this form to access your endpoint.

注意

構成サーバーの設定はステージング環境と運用環境の両方に適用されます。Config server settings apply to both your staging environment and production. たとえば、構成サーバーでアプリ ゲートウェイのコンテキスト パス (server.servlet.context-path) を somepath に設定すると、自分のグリーン デプロイへのパスは、"https://<ユーザー名>:<パスワード>@<クラスター名>.test.azureapps.io/gateway/green/somepath/..." になります。For example, if you set the context path (server.servlet.context-path) for your app gateway in config server as somepath, the path to your green deployment changes to "https://<username>:<password>@<cluster-name>.test.azureapps.io/gateway/green/somepath/...".

このポイントで自分の公開アプリ ゲートウェイにアクセスすると、新しい変更が反映されていない古いページが表示されます。If you visit your public-facing app gateway at this point, you should see the old page without your new change.

実稼働環境としてグリーン デプロイを設定するSet the green deployment as the production environment

  1. ステージング環境で変更を確認したら、それを運用環境にプッシュすることができます。After you've verified your change in your staging environment, you can push it to production. [Deployment management](デプロイ管理) に戻って、ゲートウェイ アプリケーションのチェック ボックスをオンにします。Return to Deployment management, and select the gateway application check box.

  2. [Set deployment](デプロイの設定) を選択します。Select Set deployment.

  3. [運用環境デプロイ] の一覧で [グリーン] を選択し、 [適用] を選択します。In the Production Deployment list, select Green, and then select Apply.

  4. 自分のゲートウェイ アプリケーションの [概要] ページに移動します。Go to your gateway application Overview page. ゲートウェイ アプリケーションにドメインを既に割り当ててある場合、 [概要] ペインに URL が表示されます。If you've already assigned a domain for your gateway application, the URL will appear in the Overview pane. 変更された PiggyMetrics ページを表示するには、URL を選択してサイトにアクセスします。To view the modified PiggyMetrics page, select the URL, and go to the site.

注意

グリーン デプロイを運用環境に設定したら、前のデプロイがステージング環境のデプロイになります。After you've set the green deployment as the production environment, the previous deployment becomes the staging deployment.

ステージング環境のデプロイを変更するModify the staging deployment

変更に満足していない場合は、Azure CLI を使用することで、アプリケーション コードを変更し、新しい jar パッケージをビルドして、それをグリーン デプロイにアップロードできます。If you're not satisfied with your change, you can modify your application code, build a new jar package, and upload it to your green deployment by using the Azure CLI.

az spring-cloud app deploy  -g <resource-group-name> -s <service-instance-name> -n gateway -d green --jar-path gateway.jar

ステージング環境のデプロイを削除するDelete the staging deployment

Azure ポートから自分のステージング環境のデプロイを削除するには、ステージング環境のデプロイのページに移動して [削除] ボタンを選択します。To delete your staging deployment from the Azure port, go to your staging deployment page, and then select the Delete button.

または、次のコマンドを実行して Azure CLI でステージング環境のデプロイを削除します。Alternatively, delete your staging deployment from the Azure CLI by running the following command:

az spring-cloud app deployment delete -n <staging-deployment-name> -g <resource-group-name> -s <service-instance-name> --app gateway