構成
課題①
こんな構成のとき、API のタスクだけを更新する際に Blue/Green とカナリアリリースを実現するときにどうするのが良いか迷ったのでまとめておきます。
gRPC なので、Front -> Internal ALB -> API では、Internal ALB <-> API は HTTP/1.1 になるため、Internal ALB は置けない。
解決①
ECS Service discovery を使う。
課題②
ECS Service discovery の環境で、Blue/Green とカナリアリリースを実現したい。
解決②
トラフィックポリシーを使用して、加重ルールを使用することで Blue/Green, カナリアリリースの両方を実現できる。
新しく Private Zone に Hosted Zone を作成する。これは Front で使用する用。
トラフィックポリシーをこんな感じに作成する。
エンドポイントの値として、Service discovery で作られたドメインを指定する。
作成したトラフィックポリシーを適用したポリシーレコードを作成する。

Front で常に参照するドメインは、main.f-b.master.hasegawa.local になる。
検証
dig main.f-b.master.hasegawa.local +short A
タスクの数を増やしたとき
RUNNING になった後、60秒ぐらいで新しい IP が追加されて返ってくる。