2.14.4. VirtualServices の使用
仮想サービスを使用すると、Red Hat OpenShift Service Mesh を通じて複数のバージョンのマイクロサービスにリクエストを動的にルーティングできます。仮想サービスを使用すると、以下が可能になります。
- 単一の仮想サービスで複数のアプリケーションサービスに対応する。メッシュが Kubernetes を使用する場合などに、仮想サービスを特定の namespace のすべてのサービスを処理するように設定できます。仮想サービスを使用すると、モノリシックなアプリケーションをシームレスに、個別のマイクロサービスで構成されるサービスに変換できます。
- ingress および egress トラフィックを制御できるようにゲートウェイと組み合わせてトラフィックルールを設定する。
2.14.4.1. VirtualServices の設定 リンクのコピーリンクがクリップボードにコピーされました!
リクエストは、仮想サービスを使用して Service Mesh 内のサービスにルーティングされます。それぞれの仮想サービスは、順番に評価される一連のルーティングルールで構成されます。Red Hat OpenShift Service Mesh は、仮想サービスへの各リクエストを、メッシュ内における特定の実際の宛先と照合します。
仮想サービスがない場合、Red Hat OpenShift Service Mesh は、最小リクエスト負荷分散を使用して、すべてのサービスインスタンス間でトラフィックを分散します。仮想サービスを使用すると、1 つ以上のホスト名のトラフィック動作を指定できます。仮想サービスのルーティングルールで、仮想サービスのトラフィックを適切な宛先に送信する方法を Red Hat OpenShift Service Mesh に指示します。ルートの宛先は、同じサービスのバージョンまたは全く異なるサービスにできます。
手順
アプリケーションに接続するユーザーに基づき、異なるバージョンの Bookinfo アプリケーションサービスのサンプルに、要求をルーティングする以下の例を使用して、YAML ファイルを作成します。
VirtualService.yaml の例
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - match: - headers: end-user: exact: jason route: - destination: host: reviews subset: v2 - route: - destination: host: reviews subset: v3以下のコマンドを実行して
VirtualService.yamlを適用します。VirtualService.yamlはファイルへのパスです。$ oc apply -f <VirtualService.yaml>