演習 - ブルーグリーン デプロイを設定する
このデモでは、ブルーグリーン デプロイについて調べます。
手順
リリース パイプラインを使用してブルーグリーン デプロイを実装する方法を見てみましょう。
まず、Parts Unlimited テンプレートを再デプロイできるリリース パイプラインを使用して、新しいプロジェクトを作成します。
アプリの初期デプロイ
ブラウザーで Azure DevOps Demo Generator (https://azuredevopsdemogenerator.azurewebsites.net) にアクセスし、[サインイン] をクリックします。
必要に応じてサインインを求められます。
[新しいプロジェクトの作成] ウィンドウで、既存の組織を選択し、[プロジェクト名] を「PU Hosted」に設定して、[テンプレートの選択] をクリックします。
PartsUnlimited プロジェクト (PartsUnlimited-YAML プロジェクトではない) をクリックし、[テンプレートの選択]、[テンプレートの作成] の順にクリックします。 デプロイが完了したら、[プロジェクトに移動] をクリックします。
PU Hosted プロジェクトのメイン メニューで、[パイプライン]、[ビルド]、[キュー]、[実行] の順にクリックします。
ビルドは成功するはずです。
注意
"警告が表示される場合がありますが、このチュートリアルでは無視できます。"
メイン メニューの [リリース] をクリックします。 継続的インテグレーション トリガーが有効になっていたため、リリースが試行されました。 しかし、まだリリースを構成していないので、これは失敗します。 [編集] をクリックして、リリースの編集モードに入ります。
[タスク] の横にあるドロップダウン リストから [開発] ステージを選択した後、[Azure デプロイ] タスクをクリックして選択します。
[Azure リソース グループのデプロイ] ウィンドウで、お使いの Azure サブスクリプションを選択した後、メッセージが表示されたら [認可] をクリックします。 認可が完了したら、Web アプリの [場所] を選択します。
Note
"この時点で、Azure へのサインインを求めるメッセージが表示される場合があります。"
タスクの一覧で [Azure App Service デプロイ] をクリックして、その設定を開きます。 もう一度 Azure サブスクリプションを選択します。 [デプロイ スロット] を [ステージング] に設定します。
Note
このテンプレートを使用すると、運用サイトと 2 つのデプロイ スロット (開発とステージング) が作成されます。 グリーン サイトにステージングを使用します。
タスクの一覧で [開発] をクリックし、[エージェント ジョブ] ペインで、[エージェント プール] では [Azure Pipelines] を、[エージェントの指定] では [windows-latest] を選択します。
上部のメニューから、[パイプライン] をクリックします。 [開発] ステージをクリックし、プロパティ ウィンドウで名前を「グリーン サイト」に変更します。 [品質保証] ステージをクリックし、[削除]、[確認] の順にクリックします。 [運用] ステージをクリックし、[削除]、[確認] の順にクリックします。 [保存] をクリックし、[OK] をクリックします。
[グリーン サイト] ステージにマウス ポインターを合わせ、[複製] アイコンが表示されたらクリックします。 [ステージ名] を「運用」に変更します。 [タスク] ドロップダウン リストから [運用] ステージを選択します。
[Azure App Service デプロイ] タスクをクリックして、[スロットにデプロイ] オプションをオフにします。 [保存]、[OK] の順にクリックします。
運用サイトはデプロイ スロットにデプロイされません。 メイン サイトにデプロイされます。
[リリースの作成]、[作成] の順にクリックして、新しいリリースを作成します。 作成されたら、リリースのリンクをクリックしてその状態を表示します。
しばらくすると、デプロイに成功します。
グリーン サイトと運用サイトをテストする
Azure portal で、プロジェクトのデプロイによって作成された ASPDOTNET リソース グループのブレードを開きます。 デプロイされている Web アプリの名前に注目します。 クリックして、"ステージング"* Web アプリのブレードを開きます。 左上隅の URL をコピーします。
新しいブラウザー タブを開き、コピーした URL に移動します。 アプリケーションのコンパイルが完了するまでしばらく時間がかかりますが、その後、(ステージング スロット上の) グリーン Web サイトが表示されます。
Note
"ステージング スロットが使用されていることは、Web サイトの URL に -staging サフィックスがあることでわかります。"
別の新しいブラウザー タブを開き、-staging スロットを使用せずに同じ URL に移動します。 運用サイトも動作しているはずです。
Note
"このチュートリアルで後ほど使うため、両方のブラウザー ウィンドウを開いたままにしてください。"
ブルーグリーンのスワップと承認を構成する
両方のサイトが動作しているので、ブルーグリーン デプロイのリリース パイプラインを構成してみましょう。
Azure DevOps の PU Hosted プロジェクトのメイン メニューで、[パイプライン]、[リリース]、[編集] の順にクリックして編集モードに戻ります。
[運用] ステージをクリックし、[削除]、[確認] の順にクリックしてそれを削除します。 [+ 追加] をクリックしてステージを追加し、テンプレートの [空のジョブ] をクリックします。 [ステージ名] として「ブルーグリーンのスワップ」を設定します。
[変数] をクリックし、WebsiteName の [スコープ] を [リリース] に変更します。
[タスク] ドロップダウン リストから、[ブルーグリーンのスワップ] ステージを選択します。 + の右側にある + をクリックして、新しいタスクを追加します。 検索ボックスに「CLI」と入力します。
Azure CLI テンプレートの上にマウス ポインターを置き、[追加] ボタンが表示されたらそれをクリックします。次に、[Azure CLI] タスクをクリックして選択し、その設定ウィンドウを開きます。
次のように、お使いのサブスクリプション、スクリプトの場所 (インライン スクリプト)、インライン スクリプトを指定して、このウィンドウを構成します。
Az webapp deployment slot swap -g $(ResourceGroupName) -n $(WebsiteName) --slot Staging --target-slot production
タスク一覧の上部にあるメニューで、[パイプライン] をクリックします。 [ブルーグリーンのスワップ] ステージの [配置前条件] アイコンをクリックしてから、[トリガー] ウィンドウで [配置前の承認] を有効にします。
自分自身を承認者として構成し、[保存]、[OK] の順にクリックします。
ブルーグリーンのスワップをテストする
PU Hosted のメイン メニューで、[リポジトリ]、[ファイル] の順にクリックしてプロジェクト ファイルを開きます。 次のファイルに移動します。
Web サイトが更新されたことを確認するために、表面的な変更を行います。 海外のユーザーをターゲットにするため、メイン ページ ローテーションの単語「tires」を「tyres」に変更します。
[編集] をクリックして編集を許可してから、単語「tires」を見つけ、それを単語「tyres」に置き換えます。 [コミット]、[コミット] の順にクリックして変更を保存し、ビルドとリリースをトリガーします。
メイン メニューで、[パイプライン][ビルド] の順にクリックします。 継続的インテグレーション ビルドが正常に完了するまで待ちます。
メイン メニューの [リリース] をクリックします。 (一覧の一番上にある) 最新のリリースをクリックして開きます。
ここで、運用環境へのデプロイのスワップを承認するように求められます。 まず、グリーンのデプロイを確認します。
グリーン サイト (つまり、ステージング スロット) のブラウザー タブを更新して、変更が発生したかどうかを確認します。 変更された単語が表示されます。
運用サイトのブラウザー タブを更新すると、まだ更新されていないことがわかります。
変更について問題がなければ、リリースの詳細で [承認]、[承認] の順にクリックして、ステージが完了するまで待ちます。
運用サイトのブラウザー タブを更新して、更新されたコードが実行されていることを確認します。
最後の注意事項
グリーン サイトを確認すると、以前のバージョンのコードが含まれていることがわかります。
これは、あるステージング サイトから別のサイトに移動するだけの一般的なデプロイ プロセスとは大きく異なるスワップの特徴です。 必要であれば、サイトを元の状態にスワップして、すばやくフォールバックすることもできます。