4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ECSブルーグリーンデプロイメントをゼロから構築する。(その6:ブルーグリーンデプロイの実行)

Posted at

はじめに

過去5回にわたり、ブルーグリーンデプロイメントの設定を行ってきましたが、今回は実際にブルーグリーンデプロイの動作の確認や外部からのアクセスを試してみようと思います。

ECSブルーグリーンデプロイの実行

ブルーグリーンデプロイを試すため、「新しいデプロイの強制」(Force Deploy)を行うことでデプロイを行ってみようと思います。

Amazon Elastic Container Service」ダッシュボードの「クラスター」より、作成済みのクラスタを選択し、作成済みのサービスのチェックボックスにチェック→「更新」で更新画面に遷移します。

Monosnap_20231112_210029.png

新しいデプロイの強制」にチェックを行うことで、ECSタスクが再度デプロイされるためチェックを行い、また、「デプロイオプション」で、CodeDeployのアプリケーション名、デプロイグループ、デプロイ設定を選択します。

Monosnap_20231112_182020.png

他の設定はデフォルトで問題ないため、設定できたら画面下の「更新」ボタンで更新します。

更新すると、画面上にデプロイ中のデプロイIDへのリンクが表示されるため、リンクを選択してCodeDeployの画面に遷移します。

Monosnap_20231112_210610.png

CodeDeployの画面では、ロールバックやルーティングの変更、デプロイの中止等が行えるようになっており、予めテスト等を行い、問題ないことを確認してから新しいタスクにルーティングを切り替えるといったことができるようになっております。

今回はCodeDeployDefault.ECSAllAtOnceというデプロイ設定としているため、新しいタスクがデプロイされてすぐにルーティングを切り替える動作となりますが、デプロイ設定を変えると、テストトラフィックでのテストが完了するまで待機して、問題なければ手動で切り替えるといったこともできます。

新しいタスクに切り替えたことにより不要となる古いタスクは、「元のタスクセットの終了」を選択することで削除することができます。

Monosnap_20231112_210828.png

ブルーグリーンデプロイによるターゲットグループの遷移

ブルーグリーンデプロイにより、ELBのターゲットグループがどのように変化するかを見ていこうと思います。

Fargateの設定完了直後の状態では、ECSサービス設定時にリスナールールごとに別々のターゲットグループを指定しないと設定できないことからリスナールールに紐付けられているターゲットグループは以下のようになっています。

Monosnap_20231112_181633.png

ブルーグリーンデプロイ実行完了後、ブルーのグループ、グリーンのグループ共に同じターゲットグループへの振り分けとなることから、各リスナールールに紐付けられているターゲットグループはどちらも同じターゲットグループに変化します。

Monosnap_20231112_182424.png

次のデプロイでは、もう一方のターゲットグループ(上記の場合blue-green-blue-tg)に新しいタスクのデプロイを行い、問題なければ本稼働用のリスナールールのターゲットグループも切り替える動作となります。

以下、デプロイを2回実施した場合のデプロイ時のリスナールール、ターゲットグループの遷移について表にまとめます。

尚、以下の表は何度かブルーグリーンデプロイの切り替えを行っている前提で、デプロイ前の状態がそれぞれblue-tgからデプロイを実施した想定でまとめます。

本稼働用ポート テスト用ポート
デプロイ前 blue-tg blue-tg
新タスクのデプロイ&テスト(1回目) blue-tg green-tg
本稼働トラフィックの切り替え(1回目) green-tg green-tg
新タスクのデプロイ&テスト(2回目) green-tg blue-tg
本稼働トラフィックの切り替え(2回目) blue-tg blue-tg

外部からのアクセス

その3で外部からのアクセス用ドメインも作成したので、本稼働用ポート、テスト用ポートそれぞれにアクセスしてみようと思います。

www.aws.example.com」 のようなレコードを設定したので、以下のようにアクセスするとFargateのコンテナイメージに仕込んだindex.htmlの内容が表示されます。

Monosnap_20231112_213934.png

また、テスト用ポートには「https://www.aws.example.com:4430」のようにポートまで指定することでテスト用ポートにアクセスすることができます。

おわりに

ブルーグリーンデプロイメントの概念自体は、AWSに限らず使われる仕組みとなり、AWSの資格等にも出題されるため一般的なものとなりますが、実際に設定してみたいとなった場合、ハマりポイントも多く、一連の設定が体系的にまとまっている記事も少ないことから、設定するだけで一苦労だった方が多いのではないでしょうか。

今回の記事でブルーグリーンデプロイメントの設定に苦労する方が少しでも減れば幸いです。

また、今回はELBでユーザからのアクセスを受け付ける構成としましたが、CloudFrontも使用する構成でのブルーグリーンデプロイメントの方法も以下で紹介しているため、参考にして頂ければと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?