Blue/Green デプロイを使用してデプロイのリスクを低減する

このページでは、アプリの新しいバージョンをデプロイし、古いバージョンから新しいバージョンにトラフィックを移行する方法について説明します。

初期バージョンのアプリの push

Kf CLI を使用して、任意のルートでアプリの初期バージョンを push します。

$ kf push app-v1 --route my-app.my-space.example.com

更新したアプリの push

Kf CLI を使用して、ルートなしでアプリの新しいバージョンを push します。

$ kf push app-v2 --no-route

更新したアプリへのルートの追加

Kf CLI を使用して、更新したアプリに既存のルートをすべてバインドします。このとき、ウェイトを 0 に設定して、リクエストを受信しないようにします。

$ kf map-route app-v2 my-space.example.com --hostname my-app --weight 0

トラフィックの移行

ルートのウェイトを更新して、古いアプリから更新したアプリへのトラフィックの移行を開始します。

$ kf map-route app-v1 my-space.example.com --hostname my-app --weight 80
$ kf map-route app-v2 my-space.example.com --hostname my-app --weight 20

更新したアプリの稼働が順調な場合は、ウェイトを再度更新してトラフィックをさらに増やすことができます。

$ kf map-route app-v1 my-space.example.com --hostname my-app --weight 50
$ kf map-route app-v2 my-space.example.com --hostname my-app --weight 50

トラフィック移行の完了

新しいサービスで回帰が導入されていないことを確認したら、すべてのトラフィックを新しいインスタンスに移行してロールアウトを完了します。

$ kf map-route app-v1 my-space.example.com --hostname my-app --weight 0
$ kf map-route app-v2 my-space.example.com --hostname my-app --weight 100

元のアプリの停止

クイック ロールバックの必要がないと判断したら、元のルートを削除してアプリを停止します。

$ kf unmap-route app-v1 myspace.example.com --hostname my-app
$ kf stop app-v1

または、アプリおよび関連するすべてのルート マッピングを削除します。

$ kf delete app-v1