演習 - ブルーグリーン デプロイを設定する

完了

このデモでは、ブルーグリーン デプロイについて調べます。

手順

リリース パイプラインを使用してブルーグリーン デプロイを実装する方法を見てみましょう。

まず、Parts Unlimited テンプレートを再デプロイできるリリース パイプラインを使用して、新しいプロジェクトを作成します。

アプリの初期デプロイ

  1. ブラウザーで Azure DevOps Demo Generator (https://azuredevopsdemogenerator.azurewebsites.net) にアクセスし、[サインイン] をクリックします。

    必要に応じてサインインを求められます。

  2. [新しいプロジェクトの作成] ウィンドウで、既存の組織を選択し、[プロジェクト名] を「PU Hosted」に設定して、[テンプレートの選択] をクリックします。

    Choose template.

  3. PartsUnlimited プロジェクト (PartsUnlimited-YAML プロジェクトではない) をクリックし、[テンプレートの選択][テンプレートの作成] の順にクリックします。 デプロイが完了したら、[プロジェクトに移動] をクリックします。

  4. PU Hosted プロジェクトのメイン メニューで、[パイプライン][ビルド][キュー][実行] の順にクリックします。

    ビルドは成功するはずです。

    注意

    "警告が表示される場合がありますが、このチュートリアルでは無視できます。"

    Build succeeded with warnings.

  5. メイン メニューの [リリース] をクリックします。 継続的インテグレーション トリガーが有効になっていたため、リリースが試行されました。 しかし、まだリリースを構成していないので、これは失敗します。 [編集] をクリックして、リリースの編集モードに入ります。

    Release pipeline edit.

  6. [タスク] の横にあるドロップダウン リストから [開発] ステージを選択した後、[Azure デプロイ] タスクをクリックして選択します。

  7. [Azure リソース グループのデプロイ] ウィンドウで、お使いの Azure サブスクリプションを選択した後、メッセージが表示されたら [認可] をクリックします。 認可が完了したら、Web アプリの [場所] を選択します。

    Note

    "この時点で、Azure へのサインインを求めるメッセージが表示される場合があります。"

    Resource group deployment.

  8. タスクの一覧で [Azure App Service デプロイ] をクリックして、その設定を開きます。 もう一度 Azure サブスクリプションを選択します。 [デプロイ スロット][ステージング] に設定します。

    Staging app service deploy.

    Note

    このテンプレートを使用すると、運用サイトと 2 つのデプロイ スロット (開発とステージング) が作成されます。 グリーン サイトにステージングを使用します。

  9. タスクの一覧で [開発] をクリックし、[エージェント ジョブ] ペインで、[エージェント プール] では [Azure Pipelines] を、[エージェントの指定] では [windows-latest] を選択します。

    Agent job configuration.

  10. 上部のメニューから、[パイプライン] をクリックします。 [開発] ステージをクリックし、プロパティ ウィンドウで名前を「グリーン サイト」に変更します。 [品質保証] ステージをクリックし、[削除][確認] の順にクリックします。 [運用] ステージをクリックし、[削除][確認] の順にクリックします。 [保存] をクリックし、[OK] をクリックします。

    Green site stages complete.

  11. [グリーン サイト] ステージにマウス ポインターを合わせ、[複製] アイコンが表示されたらクリックします。 [ステージ名] を「運用」に変更します。 [タスク] ドロップダウン リストから [運用] ステージを選択します。

    Production tasks.

  12. [Azure App Service デプロイ] タスクをクリックして、[スロットにデプロイ] オプションをオフにします。 [保存][OK] の順にクリックします。

    No deploy to slot.

    運用サイトはデプロイ スロットにデプロイされません。 メイン サイトにデプロイされます。

  13. [リリースの作成][作成] の順にクリックして、新しいリリースを作成します。 作成されたら、リリースのリンクをクリックしてその状態を表示します。

    Release link.

    しばらくすると、デプロイに成功します。

    Deployment succeeded for green site and production.

グリーン サイトと運用サイトをテストする

  1. Azure portal で、プロジェクトのデプロイによって作成された ASPDOTNET リソース グループのブレードを開きます。 デプロイされている Web アプリの名前に注目します。 クリックして、"ステージング"* Web アプリのブレードを開きます。 左上隅の URL をコピーします。

    Resource group and URL.

  2. 新しいブラウザー タブを開き、コピーした URL に移動します。 アプリケーションのコンパイルが完了するまでしばらく時間がかかりますが、その後、(ステージング スロット上の) グリーン Web サイトが表示されます。

    Parts Unlimited site on staging.

Note

"ステージング スロットが使用されていることは、Web サイトの URL に -staging サフィックスがあることでわかります。"

  1. 別の新しいブラウザー タブを開き、-staging スロットを使用せずに同じ URL に移動します。 運用サイトも動作しているはずです。

    Production site.

Note

"このチュートリアルで後ほど使うため、両方のブラウザー ウィンドウを開いたままにしてください。"

ブルーグリーンのスワップと承認を構成する

両方のサイトが動作しているので、ブルーグリーン デプロイのリリース パイプラインを構成してみましょう。

  1. Azure DevOpsPU Hosted プロジェクトのメイン メニューで、[パイプライン][リリース][編集] の順にクリックして編集モードに戻ります。

  2. [運用] ステージをクリックし、[削除][確認] の順にクリックしてそれを削除します。 [+ 追加] をクリックしてステージを追加し、テンプレートの [空のジョブ] をクリックします。 [ステージ名] として「ブルーグリーンのスワップ」を設定します。

    New swap blue-green stage.

  3. [変数] をクリックし、WebsiteName[スコープ][リリース] に変更します。

    Variable scope.

  4. [タスク] ドロップダウン リストから、[ブルーグリーンのスワップ] ステージを選択します。 + の右側にある + をクリックして、新しいタスクを追加します。 検索ボックスに「CLI」と入力します。

    CLI search.

  5. Azure CLI テンプレートの上にマウス ポインターを置き、[追加] ボタンが表示されたらそれをクリックします。次に、[Azure CLI] タスクをクリックして選択し、その設定ウィンドウを開きます。

    Azure CLI settings pane.

  6. 次のように、お使いのサブスクリプション、スクリプトの場所 (インライン スクリプト)、インライン スクリプトを指定して、このウィンドウを構成します。

    Az webapp deployment slot swap -g $(ResourceGroupName) -n $(WebsiteName) --slot Staging --target-slot production

    Azure CLI configured.

  7. タスク一覧の上部にあるメニューで、[パイプライン] をクリックします。 [ブルーグリーンのスワップ] ステージの [配置前条件] アイコンをクリックしてから、[トリガー] ウィンドウで [配置前の承認] を有効にします。

  8. 自分自身を承認者として構成し、[保存][OK] の順にクリックします。

    Approver enabled.

ブルーグリーンのスワップをテストする

  1. PU Hosted のメイン メニューで、[リポジトリ][ファイル] の順にクリックしてプロジェクト ファイルを開きます。 次のファイルに移動します。

    Index view code.

    Web サイトが更新されたことを確認するために、表面的な変更を行います。 海外のユーザーをターゲットにするため、メイン ページ ローテーションの単語「tires」を「tyres」に変更します。

  2. [編集] をクリックして編集を許可してから、単語「tires」を見つけ、それを単語「tyres」に置き換えます。 [コミット][コミット] の順にクリックして変更を保存し、ビルドとリリースをトリガーします。

Update tyres.

  1. メイン メニューで、[パイプライン][ビルド] の順にクリックします。 継続的インテグレーション ビルドが正常に完了するまで待ちます。

    Build succeeded.

  2. メイン メニューの [リリース] をクリックします。 (一覧の一番上にある) 最新のリリースをクリックして開きます。

    Approval required.

    ここで、運用環境へのデプロイのスワップを承認するように求められます。 まず、グリーンのデプロイを確認します。

  3. グリーン サイト (つまり、ステージング スロット) のブラウザー タブを更新して、変更が発生したかどうかを確認します。 変更された単語が表示されます。

    Green site updated.

  4. 運用サイトのブラウザー タブを更新すると、まだ更新されていないことがわかります。

    Production site unchanged.

  5. 変更について問題がなければ、リリースの詳細で [承認][承認] の順にクリックして、ステージが完了するまで待ちます。

    Swap completed.

  6. 運用サイトのブラウザー タブを更新して、更新されたコードが実行されていることを確認します。

    Production site updated.

最後の注意事項

グリーン サイトを確認すると、以前のバージョンのコードが含まれていることがわかります。

これは、あるステージング サイトから別のサイトに移動するだけの一般的なデプロイ プロセスとは大きく異なるスワップの特徴です。 必要であれば、サイトを元の状態にスワップして、すばやくフォールバックすることもできます。