はじめに
ECSのローリングアップデートの動作を確認しましたので、備忘録として投稿します。
もくじ
- 旧バージョンのコンテナをデプロイ
- 新しいリビジョンのタスク定義を作成
- サービスを更新して新バージョンのコンテナをデプロイ
ローリングアップデートの流れ
参考
- ECSでコンテナのrolling update - Carpe Diem
- Amazon ECS launches new deployment capabilities; CloudWatch metrics; Singapore and Frankfurt regions | AWS Compute Blog
コンテナイメージについて
ローリングアップデートの動作確認用にECRへv1
、v2
とタグ付けしたコンテナイメージをプッシュしておきます。
今回の投稿では
-
v1
旧バージョンのコンテナイメージ -
v2
新バージョンのコンテナイメージ
として扱います。
<h1>Test v1</h1>
<h1>Test v2</h1>
1. 旧バージョンのコンテナをデプロイ
旧バージョンのコンテナ(v1)をデプロイしておきます。
タスク定義
タグv1
を明示的に指定して、旧バージョンのコンテナイメージを含んだタスク定義、サービスを作成してデプロイ。
アクセス確認
ブラウザからALBにアクセスして旧バージョンのHTMLが表示されることを確認。
2. 新しいリビジョンのタスク定義を作成
コンテナイメージのタグをv2
に更新した新しいリビジョンのタスク定義を作成します。
3. サービスを更新して新バージョンのコンテナをデプロイ
サービスを更新して新しいリビジョンのタスク定義をデプロイします。
サービスの更新
タスク定義に新しいリビジョンを指定。
補足:最小ヘルス率
50
を指定しているので、アップデート中にhealty状態のタスクが必要数の50%まで低下する可能性がある
補足:最大率
200
を指定しているので、アップデート中にhealty状態のタスクが必要数の200%まで増加する可能性がある
Runningタスクの推移
アップデート前のタスク。
リビジョン1(旧バージョン)のタスクだけ稼働している。
アップデート中のタスク。
リビジョン1(旧バージョン)のタスクとリビジョン2(新バージョン)のタスクが混在する。
アップデート後のタスク。
リビジョン2(新バージョン)のタスクだけ稼働するようになる。
アクセス確認
ブラウザからALBにアクセスして新バージョンのHTMLが表示されることを確認。