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