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.5.3.5. blue-green デプロイメントストラテジーを使用したトラフィックのルーティングおよび管理
Blue-green デプロイメントストラテジー を使用して、実稼働バージョンのアプリケーションから新規バージョンにトラフィックを安全に再ルーティングすることができます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
OpenShift CLI (
oc
) をインストールしている。
手順
- アプリケーションを Knative サービスとして作成し、デプロイします。
以下のコマンドから出力を表示して、サービスのデプロイ時に作成された最初のリビジョンの名前を検索します。
oc get ksvc <service_name> -o=jsonpath='{.status.latestCreatedRevisionName}'
$ oc get ksvc <service_name> -o=jsonpath='{.status.latestCreatedRevisionName}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc get ksvc example-service -o=jsonpath='{.status.latestCreatedRevisionName}'
$ oc get ksvc example-service -o=jsonpath='{.status.latestCreatedRevisionName}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
example-service-00001
$ example-service-00001
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の YAML をサービスの
spec
に追加して、受信トラフィックをリビジョンに送信します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、URL の出力でアプリケーションを表示できることを確認します。
oc get ksvc <service_name>
$ oc get ksvc <service_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
サービスの
template
仕様の少なくとも 1 つのフィールドを変更してアプリケーションの 2 番目のリビジョンをデプロイし、これを再デプロイします。たとえば、サービスのimage
やenv
環境変数を変更できます。サービスの再デプロイは、サービスの YAML ファイルを適用するか、Knative (kn
) CLI をインストールしている場合は、kn service update
コマンドを使用します。 以下のコマンドを実行して、サービスを再デプロイする際に作成された 2 番目の最新のリビジョンの名前を見つけます。
oc get ksvc <service_name> -o=jsonpath='{.status.latestCreatedRevisionName}'
$ oc get ksvc <service_name> -o=jsonpath='{.status.latestCreatedRevisionName}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この時点で、サービスの最初のバージョンと 2 番目のリビジョンの両方がデプロイされ、実行されます。
既存のサービスを更新して、2 番目のリビジョンの新規テストエンドポイントを作成し、他のすべてのトラフィックを最初のリビジョンに送信します。
テストエンドポイントのある更新されたサービス仕様の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML リソースを再適用してこのサービスを再デプロイすると、アプリケーションの 番目のリビジョンがステージングされます。トラフィックはメインの URL の 2 番目のリビジョンにルーティングされず、Knative は新たにデプロイされたリビジョンをテストするために
v2
という名前の新規サービスを作成します。以下のコマンドを実行して、2 番目のリビジョンの新規サービスの URL を取得します。
oc get ksvc <service_name> --output jsonpath="{.status.traffic[*].url}"
$ oc get ksvc <service_name> --output jsonpath="{.status.traffic[*].url}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この URL を使用して、トラフィックをルーティングする前に、新しいバージョンのアプリケーションが予想通りに機能していることを検証できます。
既存のサービスを再度更新して、トラフィックの 50% が最初のリビジョンに送信され、50% が 2 番目のリビジョンに送信されます。
リビジョン間でトラフィックを 50/50 に分割する更新サービス仕様の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのトラフィックを新しいバージョンのアプリケーションにルーティングできる状態になったら、再度サービスを更新して、100% のトラフィックを 2 番目のリビジョンに送信します。
すべてのトラフィックを 2 番目のリビジョンに送信する更新済みのサービス仕様の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントリビジョンのロールバックを計画しない場合は、これを 0% に設定する代わりに最初のリビジョンを削除できます。その後、ルーティング不可能なリビジョンオブジェクトにはガベージコレクションが行われます。
- 最初のリビジョンの URL にアクセスして、アプリケーションの古いバージョンに送信されていないことを確認します。