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対応待ち遠しい。。。。


