コンテナーを実行する AutoScaling グループがあります (ECS を使用)。ASG で EC2 インスタンスを追加または置換すると、必要な Docker イメージがありません。そのため、cloud-init を使用していくつかのdocker pull
コマンドを実行し、起動時にイメージをフェッチします。
ただし、ASG は新しいインスタンスの準備ができていると見なし、古いインスタンスを終了します。しかし実際には、すべての Docker イメージがプルされるまで、この新しいインスタンスの準備はできていません。
たとえば、ASG の希望数が 5 で、cloud-init を使用して 5 つのコンテナーをプルする必要があるとします。ここで、ASG 内のすべての EC2 インスタンスを置き換えたいと考えています。
新しいインスタンスが起動し始めると、ASG は古いインスタンスを終了します。ただし、docker pull
ラグが原因で、デプロイ中に実際の有効なインスタンスが 3 または 2 未満になる時間があります。
cloud-init が終了したときにのみ「インスタンスを準備完了としてマーク」するにはどうすればよいですか?
注: Cloudformation は、CFN-Bootstrap を使用してこの通信ギャップを埋めることができると思います。しかし、私は Cloudformation を使用していません。