ECS(Fargate)でのBlue/Greenデプロイメントについて記載。
Fragateのクラスタの作成については割愛します。
サービスの作成:
1)サービスタブから”作成”を押します。
起動タイプ:Fargateを選択。
タスク定義:
①ファミリー:対象のタスク定義を選択する
②リビジョンを選択。
サービス名:把握しやすい名前で
タスク数:必要な数を記載。
デプロイメントタイプ:Blue/Greenデプロイメント(AWS Code DEployを使用)を選択
Deployment configuration*:CodeDeployDeafult.ECSAllAtOnceを選択
CodeDeploy のサービスロール*:CodeDeploy用に作成したIAMロールを選択
ネットワーク構成:環境に合わせた設定を選択してください。
①クラスターのVPC(今回は、デフォルトのネットワークを選択)
②サブネット(AZの選択)
③セキュリティグループ:必要に応じたセキュリティグループを選択。
■ロードバランシング
ロードバランサの種類:Application Laod Blancerを選択
ロードバランサー名:作成済みのApplication Load Blancerを選択
■ロードバランス用のコンテナ
プロダクションリスナーポート:80(通常のアクセス用)
テストリスナーポート:新規作成(8080)
->テストリリース用に別途ポート番号を指定します。
■ターゲットグループの設定
以下、設定に問題ないようならサービスの作成を押す。
以下、タスクが完成されるまで、一旦待つ。
■CodeDeployの画面に移動
1)デプロイ -> アプリケーション -> 上記の設定によって自動生成された
アプリケーション名(AppECS-test-web1)を選択
2)アプリケーションの作成を選択
アプリケーションをデプロイするを選択
①デプロイグループ:表示されたものを選択
②リビジョンタイプ:今回は、直接、定義内容を記載するのでAppSpecエディタの使用
AppSpec言語:YAML
==========サンプル==========
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
TaskDefinition: “タスク定義のarnを記載する”
LoadBalancerInfo:
ContainerName: “コンテナ”名
ContainerPort: ポート番号
============================
3)デプロイの作成を押す。
デプロイを実施するタイミングで、Curlコマンドを0.01間隔で送信してみる。
ECSの画面に戻ると、新旧のタスクのリビジョンが表示されていることが把握できる。
CodeDeployでは、タスクの入れ替えを行っている様子。
(この時点で、新リビジョンのコンテナと入れ替えが完了している)
通常のページ(80ポート):
念の為、テスト用のポート(8080)を確認する