ECS 組み込みのB/G デプロイの挙動を確認してみる

AWS

こんにちは!今日は先日ECS 組み込みのB/G デプロイがリリースされたとのことなので、試してみます!これまではCode Deploy を使用して、デプロイはできたかと思うのですが、ECS 内部でそれができるということでこれはやってみなければと思い、ブログも書いてみました!

Amazon ECS の新しい組み込みブルー/グリーンデプロイを使用して、安全なソフトウェアリリースを加速 | Amazon Web Services
コンテナは開発チームがアプリケーションをパッケージ化およびデプロイする方法に革命をもたらしましたが、これらのチ

前回ECS でLaravel の環境を構築したので、そのtask を使って今回はやってみようと思います!まだチェックしてない方はぜひチェックしてみてください。

今回の環境

今回はBlue Green デプロイの環境を作成するので、遷移図を示したいと思います!

Blue 環境のみの場合

これが最初の状態です。Blue 環境のみ存在して、Green 環境はデプロイが発生していないので、ない状態です。トラフィックもBlue のみです。

B/G デプロイ発動

Green 環境が作成されました。まだトラフィックはBlue のみですね。

B/G デプロイ完了

問題なくデプロイが完了したら、トラフィックの切り替えも実施されます。もちろんこれもECS 側で自動で実施してくれます。これでダウンタイムなしのデプロイが完了したことになります!

フローについて

ざっくりにはなりましたが、上のフローでECS のB/G デプロイが進んでいきます。
この設定も書いていきます!

B/G デプロイ手順

前提条件

  • クラスターを作成していること
  • タスク定義を作成していること
  • ECR にイメージをデプロイしていること

上の前提条件を基に進めていきます

サービスの作成

デプロイオプション

今回ローリングアップデートではなく、ブルー/グリーンを選択します。ベイク時間は検証なので、5分にしていますが、適宜調整してください。今回はLambda のデプロイライフサイクルはなしで作成します。

ALB の作成

今回はECS 上でALB も作成します。ALB でターゲットグループなどを変更するRole を作成する必要がありますので、今回は「AmazonEC2ContainerServiceRole」・「AmazonECSInfrastructureRolePolicyForLoadBalancers」というマネージドのポリシーをRole に紐づけています。

リスナー

本番環境用のリスナールールとテスト用のリスナールールというのを作成することができます。

ターゲットグループ作成

B/G デプロイが走った時に紐づくターゲットグループも作成してあげます。

作成

ここまで設定できたら、作成ボタンをおします!そうするとCloudformation でリソースが作成され始めます。5分ほど時間がかかるみたいなので、少し待機時間です。

リソース作成

ロードバランサーが作成されたりします。Laravel の画面が表示されたら準備は完了です。

ターゲットグループもblue とgreen のターゲットグループが作成されていますね。blue とgreen の両方が紐づけられる状態になります。

B/G デプロイ開始

タスク定義の定義を少し変更して、デプロイしていきます!今回先ほど一回デプロイしたので、Green からBlue に変更していきます!

Blue のtarget グループにコンテナ紐づけ

コンテナはBlue 環境もGreen 環境も存在している状況ですが、この時点ではトラフィックはまだGreen のtg に流れています。いわゆるベイク時間です。今回は5分間指定してます。

Green 環境削除

ベイク時間が完了すると、Green 環境の削除が開始されます。そして、再度Steady state という表示がでれば、問題なく切り替えが完了しています。

B/G デプロイ完了

大体8分くらいで完了していますね。ALB のA レコードのDNS にアクセスした時にLaravel の画面も見えれば、コンテンツ表示も大丈夫ことが確約できますね!

まとめ

ECS 内でB/G デプロイの機能が備わることによって、デプロイも楽になりそうですね!

参考サイト

ブルー/グリーンデプロイ用の Application Load Balancer リソース - Amazon Elastic Container Service
Amazon ECS ブルー/グリーンデプロイに必要な Application Load Balancer リソースについて説明します。

\ 最新情報をチェック /

コメント

PAGE TOP
タイトルとURLをコピーしました