更新されたAuto Scaling Groupの設定をECSコンテナインスタンスに反映させるため,インスタンスの入れ替え作業を行うCLI
go install github.com/noritama73/update-ami/cmd/[email protected]
update-ami replace-instances --region ap-northeast-1 --profile <user>@<account> --cluster <cluster> --max-attempt 20 --waiter-delay 10
対象とするECSクラスタ名.無ければAWS_ECS_CLUSTERを読む
対象のAWSリージョン.無ければAWS_REGIONを読む
AWS CLIを使用するユーザのprofile,MFA対応.無ければAWS_PROFILEを読む
インスタンスのステータスチェックを行う最大試行回数.デフォルト40回
インスタンスのステータスチェックを行う間隔.デフォルト20秒
対象クラスタに紐づくAutoScaling Groupの名前.指定しないとクラスタと同じ文字列が入ります
- 既存のコンテナインスタンスのIDを控える
- ASGのmax-sizeとdesired capacityを1増やす
- 新しいインスタンスが追加されるのを待つ
- 古いインスタンスを1つドレインする
- ドレインされたらderegister→terminate
- インスタンスが増えるのを待つ
- サービスを強制更新
- ちょっと待つ
- 4.に戻る
- 最後のインスタンスをterminateしたら,max-sizeとdesired capacityを1減らす(元に戻す)