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