OpenShift Service Mesh を使用したマイクロサービス

概要

このコード・パターンでは、Red Hat® OpenShift® Service Mesh を利用して、シミュレートされたインタラクティブなモバイル・アプリケーション用のサービス・メッシュをデプロイする方法を説明します。説明では、Red Hat OpenShift on IBM Cloud™ 内でのサンプルを使用します。

説明

顧客データを収集する企業にとって極めて重要なのは、クラウド環境にデプロイされてもデータ・プライバシーとセキュリティーを確保するセキュアなアプリケーションを構築することです。金融、小売、銀行などの規制対象の業界ともなれば、この重要性はなおさら高くなります。マイクロサービス・アーキテクチャーとコンテナー化への移行が進む中、データ・プライバシー・サービスのコンテキストでは、サービス・メッシュのようなテクノロジーが役立つ可能性があります。

OpenShift Service Mesh は、Maistra Istio Operator をベースに、Istio の上位層として構築されます。このコード・パターンでは、マイクロサービス・ベースのモバイル・バンキング・アプリが Istio サービス・メッシュと連動できるように、デプロイメント・スクリプト、Dockerfile、ネットワーク・ポリシーを変更する方法を説明します。主な目標は、サービス間の mTLS と Istio Ingress Gateway によってセキュリティーを確保することですが、Istio を構成した後は、Istio のトラフィック管理とセキュリティー・ポリシーの柔軟性を利用できるようになります。この例では、OpenShift Service Mesh をインストールして、サービス間で共通の TLS を使用するように Example Bank プロジェクトを構成します。Istio メッシュ内では、Istio のトラフィック管理、テレメトリー、可観測性の機能を利用することもできます。

フロー

以下の図は、Example Bank モバイル・アプリケーションでのサービス・メッシュのアーキテクチャー・フローを示しています。図中には、ユーザー認証とトランザクションを処理する複数のマイクロサービスが示されています。

サービス・メッシュのアーキテクチャー・フローを示す図

  1. ユーザーが HTTPS を介して OpenShift ルーターに接続します。このルーターにより、リクエストは Istio Ingress Gateway という Envoy インスタンスにルーティングされます。
  2. Envoy がゲートウェイと仮想サービス・ルールを使用して、リクエストを Node.js サービスに転送します。この Node.js サービスでは、アプリ ID を基準にユーザー・アカウントを検証します。
  3. サービス・メッシュ内のトラフィック・ルールは、サービス間のすべてのトラフィックを Istio プロキシーで傍受してセキュリティーを適用するようにセットアップされています。Node.js サービス、Java Transaction Service、Java ユーザー管理サービスの間でのトラフィックは、Envoy がプロキシーの役割を果たす mTLS 接続を経由します。
  4. ユーザー・サービス、トランザクション・サービス、クリーンアップ・サービスはすべて、クラスター内の PostgreSQL データベースと通信します。PostgreSQL データベース自体も Pod 内のプロキシー・コンテナーで実行されているため、データベース・アクセスにセキュリティーおよびフィルター・ルールを適用できます。
  5. Java 消去サービスは 24 時間間隔で実行されて、アプリ ID からユーザーを削除します。Istio 環境内では、このようなジョブに遅延を設定し、Envoy プロキシーが起動してトラフィックを受信するようになるまで待機させる必要があります。この仕組みの詳細を確認してください。

手順

このコード・パターンを試すには、GitHub リポジトリー内に用意されている詳細な手順を参照してください。手順の概要は以下のとおりです。

  1. Example Bank コード・パターンを使用してサービスをデプロイします。
  2. OpenShift Service Mesh Operator をインストールします。
  3. コントロール・プレーン・インスタンスとメンバー・ロール・インスタンスを作成します。
  4. サービス・メッシュ対応の service-mesh ブランチをチェックアウトします。
  5. 変更を確認して適用します。

次のステップ

私たちが OpenShift 4.3 を使用して Example Bank アプリケーションを構築したときに従った手順を理解するには、以下のコンテンツに含まれているオープンソース・コードと手順を使用してください。