4.4.4. Blue-Green デプロイメント
Blue-green デプロイメントでは、同時にアプリケーションの 2 つのバージョンを実行し、実稼働版 (blue バージョン) からより新しいバージョン (green バージョン) にトラフィックを移動します。ルートでは、ローリングストラテジーまたは切り替えサービスを使用できます。
多くのアプリケーションは永続データに依存するので、N-1 互換性 をサポートするアプリケーションが必要です。つまり、データを共有して、データ層を 2 つ作成し、データベース、ストアまたはディスク間のライブマイグレーションを実装します。
新規バージョンのテストに使用するデータについて考えてみてください。実稼働データの場合には、新規バージョンのバグにより、実稼働版を破損してしまう可能性があります。
4.4.4.1. Blue-Green デプロイメントの設定
Blue-green デプロイメントでは 2 つの Deployment
を使用します。どちらも実行され、実稼働のデプロイメントはルートが指定するサービスによって変わります。この際、各 Deployment
オブジェクトは異なるサービスに公開されます。
ルートは、Web (HTTP および HTTPS) トラフィックを対象としているので、この手法は Web アプリケーションに最適です。
新規バージョンに新規ルートを作成し、これをテストすることができます。準備ができたら、実稼働ルートのサービスが新規サービスを参照するように変更します。 新規 (green) バージョンは有効になります。
必要に応じて以前のバージョンにサービスを切り替えて、以前の (blue) バージョンにロールバックすることができます。
手順
2 つの独立したアプリケーションコンポーネントを作成します。
v1
イメージをexample-blue
サービスで実行するサンプルアプリケーションのコピーを作成します。$ oc new-app openshift/deployment-example:v1 --name=example-blue
example-green
サービスでv2
イメージを使用する 2 つ目のコピーを作成します。$ oc new-app openshift/deployment-example:v2 --name=example-green
以前のサービスを参照するルートを作成します。
$ oc expose svc/example-blue --name=bluegreen-example
-
bluegreen-example-<project>.<router_domain>
でアプリケーションを参照し、v1
イメージが表示されることを確認します。 ルートを編集して、サービス名を
example-green
に変更します。$ oc patch route/bluegreen-example -p '{"spec":{"to":{"name":"example-green"}}}'
-
ルートが変更されたことを確認するには、
v2
イメージが表示されるまで、ブラウザーを更新します。