AWS Fargate
でサポートされてるBlue/Greenデプロイを設定します。
CloudFormation
で全て設定したいのですが、対応中のステータス(2020/1/12現在)なので、CloudFomation
とマネジメントコンソールで実施します。
https://github.com/aws/containers-roadmap/issues/130
※以下の手順を実行すると、AWS
のサービス利用料が発生します。
※VPC
、Subnet
、Security Group
などのNetWork
周りの設定は完了しているものとします。
※Blue/Greenデプロイについては、以下参照
Blue-Green Deploymentにおける注意点
ALBでEC2を利用しBlue Green Deployを試してみる
Fargate
スタック作成(※Service
以外)
CloudFormation
で作成します。
以下のファイルをAWS CLI
かマネジメントコンソールで以下の2点を確認の上、実行してください。
1.Application Load Balancer
用のSubnet
を2つ以上選択すること
2. セキュリティグループはWeb閲覧可能なセキュリティグループを選択すること
Service
作成(Blue/Greenデプロイ設定)
マネジメントコンソールで以下手順で作成します。
1. クラスター画面からサービスを新規作成します。
2. Fargate
を選択し、Blue/Greenデプロイを選択します。
CodeDeploy
のサービスロールはCloudFormation
で作成済のものを選択します。
3-1. NetWork
設定をします
- サービスのセキュリティグループは、
Application Load Balancer
からヘルスチェックが到達するものを選択(InBoundの172.16.0.0/16
許可など) - 本番ワークロードでは3つ以上の
Subnet
の指定を推奨(以下参照)
3-2.ロードバランサー設定
CloudFormation
で作成済のものを選択し、「ロードバランサーに追加」ボタンを押下する。
3-4.ポート設定
サンプルアプリケーションは、Webアプリなので、80と8080などを設定する。
3-5.ターゲットグループ設定
サンプルアプリケーションはドキュメントルートでヘルスチェック可能であるため、デフォルトのまま進む。
4-1.オートスケール設定(Step1)
CloudFormation
で作成済のロールを選択する。
4-2.オートスケール設定(Step2)
ターゲット追跡ではなく、旧来から存在するステップスケーリングで設定する。アラームは
CloudFormation
で作成済のアラームをそれぞれ選択する。
以上を設定し、サービスの作成を実施すると、Service
(Blue/Greenデプロイ設定)が作成される。
サービス稼働確認
ELBのEndpointをブラウザで開くと、
Vue
のサンプルアプリケーションが表示される。
CodeDeploy
でデプロイ設定編集
「トラフィックの再ルーティング」および「元のリビジョンの終了」について、ワークロードに応じて修正する。
以下は、元のリビジョンの終了時間を「なし」に設定変更した例(開発ワークロードを想定)
最後に
CloudFormation
対応待ち遠しい。。。。