1.9. Service Mesh へのサービスの追加

プロジェクトにはサービスが含まれますが、そのプロジェクトを Service Mesh に追加していなければサービスは使用できません。

1.9.1. Service Mesh へのプロジェクトの追加

Operator をインストールして ServiceMeshControlPlane リソースを作成した後、1 つ以上のプロジェクトを Service Mesh に追加します。

注記

基本的に、OpenShift Container Platform でのプロジェクトとは、プロジェクトで使用できるユーザー ID 範囲などの追加のアノテーションを持つ Kubernetes namespace です。通常、OpenShift Container Platform Web コンソールではプロジェクトという用語が使用され、CLI では namespace という用語が使用されますが、この 2 つの用語は基本的に同義です。

OpenShift Container Platform Web コンソールまたは CLI のいずれかを使用して、既存の Service Mesh にプロジェクトを追加できます。プロジェクトをサービスメッシュに追加するには、次の 3 つの方法があります。

  • ServiceMeshMemberRoll リソースでプロジェクト名を指定する方法。
  • ServiceMeshMemberRoll リソースの spec.labelSelectors フィールドでラベルセレクターを設定します。
  • プロジェクトで ServiceMeshMember リソースを作成する方法。

最初の方法を使用する場合は、ServiceMeshMemberRoll リソースを作成する必要があります。

1.9.2. Red Hat OpenShift Service Mesh メンバーロールの作成

ServiceMeshMemberRoll は、Service Mesh コントロールプレーンに属するプロジェクトを一覧表示します。ServiceMeshMemberRoll に一覧表示されているプロジェクトのみがコントロールプレーンの影響を受けます。プロジェクトは、特定のコントロールプレーンのデプロイメント用にメンバーロールに追加するまで Service Mesh に属しません。

istio-system など、ServiceMeshControlPlane と同じプロジェクトに、 default という名前の ServiceMeshMemberRoll リソースを作成する必要があります。

1.9.2.1. Web コンソールからのメンバーロールの作成

Web コンソールを使用して 1 つ以上のプロジェクトを Service Mesh メンバーロールに追加します。この例では、istio-system が Service Mesh コントロールプレーンプロジェクトの名前となります。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
  • Service Mesh に追加する既存プロジェクトの一覧。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. メッシュのサービスがない場合や、ゼロから作業を開始する場合は、アプリケーションのプロジェクトを作成します。これは、Service Mesh コントロールプレーンをインストールしたプロジェクトとは異なる必要があります。

    1. HomeProjects に移動します。
    2. Name フィールドに名前を入力します。
    3. Create をクリックします。
  3. OperatorsInstalled Operators に移動します。
  4. Project メニューをクリックし、リストから ServiceMeshControlPlane リソースがデプロイされているプロジェクト (例: istio-system) を選択します。
  5. Red Hat OpenShift Service Mesh Operator をクリックします。
  6. Istio Service Mesh Member Roll タブをクリックします。
  7. Create ServiceMeshMemberRoll をクリックします。
  8. Members をクリックし、Value フィールドにプロジェクトの名前を入力します。任意の数のプロジェクトを追加できますが、プロジェクトは 単一ServiceMeshMemberRoll リソースしか属することができません。
  9. Create をクリックします。

1.9.2.2. CLI からのメンバーロールの作成

コマンドラインからプロジェクトを ServiceMeshMemberRoll に追加します。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
  • Service Mesh に追加するプロジェクトの一覧。
  • OpenShift CLI (oc) へのアクセスがある。

手順

  1. OpenShift Container Platform CLI にログインします。

    $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. メッシュのサービスがない場合や、ゼロから作業を開始する場合は、アプリケーションのプロジェクトを作成します。これは、Service Mesh コントロールプレーンをインストールしたプロジェクトとは異なる必要があります。

    $ oc new-project <your-project>
  3. プロジェクトをメンバーとして追加するには、以下の YAML の例を変更します。任意の数のプロジェクトを追加できますが、プロジェクトは 単一ServiceMeshMemberRoll リソースしか属することができません。この例では、istio-system が Service Mesh コントロールプレーンプロジェクトの名前となります。

    servicemeshmemberroll-default.yaml の例

    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name

  4. 以下のコマンドを実行して、istio-system namespace に ServiceMeshMemberRoll リソースをアップロードおよび作成します。

    $ oc create -n istio-system -f servicemeshmemberroll-default.yaml
  5. 以下のコマンドを実行して、ServiceMeshMemberRoll が正常に作成されていることを確認します。

    $ oc get smmr -n istio-system default

    STATUS 列が Configured の場合、インストールは正常に終了しています。

1.9.3. ServiceMeshMemberRoll リソースを使用したプロジェクトの追加について

ServiceMeshMemberRoll リソースを使用するのが、プロジェクトを Service Mesh に追加する最も簡単な方法です。プロジェクトを追加するには、ServiceMeshMemberRoll リソースの spec.members フィールドにプロジェクト名を指定します。ServiceMeshMemberRoll リソースは、ServiceMeshControlPlane リソースによって制御されるプロジェクトを指定します。

ServiceMeshMemberRoll リソースイメージを使用したプロジェクトの追加
注記

この方法を使用してプロジェクトを追加するには、追加するプロジェクトの servicemeshmemberrolls 権限と update pods 権限をユーザーが持っている必要があります。

  • Service Mesh に追加するアプリケーション、ワークロード、またはサービスがすでにある場合は、次を参照してください。

    • Web コンソールで ServiceMeshMemberRoll リソースを使用してメッシュにプロジェクトを追加または削除する
    • CLI で ServiceMeshMemberRoll リソースを使用してメッシュにプロジェクトを追加または削除する
  • あるいは、Bookinfo というサンプルアプリケーションをインストールして ServiceMeshMemberRoll リソースに追加するには、Bookinfo サンプルアプリケーションのチュートリアルを参照してください。

1.9.3.1. Web コンソールで ServiceMeshMemberRoll リソースを使用してメッシュにプロジェクトを追加または削除する

OpenShift Container Platform Web コンソールで ServiceMeshMemberRoll リソースを使用して、メッシュにプロジェクトを追加または削除できます。プロジェクトはいくつでも追加できますが、プロジェクトは 1 つの メッシュにのみ属することができます。

ServiceMeshMemberRoll リソースは、対応する ServiceMeshControlPlane リソースが削除されると削除されます。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
  • 既存の ServiceMeshMemberRoll リソース。
  • ServiceMeshMemberRoll リソースを持つプロジェクトの名前。
  • メッシュに追加する、またはメッシュから削除するプロジェクトの名前。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Project メニューをクリックし、リストから ServiceMeshControlPlane リソースがデプロイされているプロジェクトを選択します。たとえば、istio-system です。
  4. Red Hat OpenShift Service Mesh Operator をクリックします。
  5. Istio Service Mesh Member Roll タブをクリックします。
  6. default リンクをクリックします。
  7. YAML タブをクリックします。
  8. YAML を変更してプロジェクトをメンバーとして追加します (またはプロジェクトを削除して既存メンバーを削除します)。任意の数のプロジェクトを追加できますが、プロジェクトは 単一ServiceMeshMemberRoll リソースしか属することができません。

    servicemeshmemberroll-default.yaml の例

    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system #control plane project
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name

  9. Save をクリックします。
  10. Reload をクリックします。

1.9.3.2. CLI で ServiceMeshMemberRoll リソースを使用してメッシュにプロジェクトを追加または削除する

CLI で ServiceMeshMemberRoll リソースを使用して、1 つ以上のプロジェクトをメッシュに追加できます。プロジェクトはいくつでも追加できますが、プロジェクトは 1 つの メッシュにのみ属することができます。

ServiceMeshMemberRoll リソースは、対応する ServiceMeshControlPlane リソースが削除されると削除されます。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
  • 既存の ServiceMeshMemberRoll リソース。
  • ServiceMeshMemberRoll リソースを持つプロジェクトの名前。
  • メッシュに追加する、またはメッシュから削除するプロジェクトの名前。
  • OpenShift CLI (oc) へのアクセスがある。

手順

  1. OpenShift Container Platform CLI にログインします。
  2. ServiceMeshMemberRoll リソースを編集します。

    $ oc edit smmr -n <controlplane-namespace>
  3. YAML を変更して、プロジェクトをメンバーとして追加または削除します。任意の数のプロジェクトを追加できますが、プロジェクトは 単一ServiceMeshMemberRoll リソースしか属することができません。

    servicemeshmemberroll-default.yaml の例

    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system #control plane project
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name

  4. ファイルを保存して、エディターを終了します。

1.9.4. ServiceMeshMember リソースを使用したプロジェクトの追加について

ServiceMeshMember リソースを使用すると、ServiceMeshMemberRoll リソースを変更せずにプロジェクトを Service Mesh に追加できます。プロジェクトを追加するには、Service Mesh に追加するプロジェクトに ServiceMeshMember リソースを作成します。Service Mesh Operator が ServiceMeshMember オブジェクトを処理すると、ServiceMeshMemberRoll リソースの status.members リストにプロジェクトが表示されます。次に、プロジェクトに存在するサービスがメッシュで利用可能になります。

ServiceMeshMember リソースイメージを使用したプロジェクトの追加

メッシュ管理者は、各メッシュユーザーに ServiceMeshMember リソースの ServiceMeshControlPlane リソースを参照する権限を付与する必要があります。この権限を設定すると、メッシュユーザーが Service Mesh プロジェクトまたは ServiceMeshMemberRoll リソースへの直接アクセス権を持っていない場合でも、メッシュユーザーはプロジェクトをメッシュに追加できます。詳細は、Red Hat OpenShift Service Mesh メンバーの作成を参照してください。

1.9.4.1. Web コンソールで ServiceMeshMember リソースを使用してメッシュにプロジェクトを追加

OpenShift Container Platform Web コンソールで ServiceMeshMember リソースを使用して、1 つ以上のプロジェクトをメッシュに追加できます。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • ServiceMeshControlPlane リソースの名前と、リソースが属するプロジェクトの名前はわかっています。
  • メッシュに追加するプロジェクトの名前はわかっています。
  • Service Mesh 管理者は、Service Mesh へのアクセスを明示的に付与する必要があります。管理者は、RoleBinding または ClusterRoleBinding を使用して mesh-user ロール をユーザーに割り当てて、メッシュにアクセスする権限を付与できます。詳細は、Red Hat OpenShift Service Mesh メンバーの作成 を参照してください。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Project メニューをクリックし、ドロップダウンリストからメッシュに追加するプロジェクトを選択します。たとえば、istio-system です。
  4. Red Hat OpenShift Service Mesh Operator をクリックします。
  5. Istio Service Mesh Member タブをクリックします。
  6. Create ServiceMeshMember をクリックします。
  7. ServiceMeshMember のデフォルト名を許可します。
  8. クリックして ControlPlaneRef を展開します。
  9. Namespace フィールドで、ServiceMeshControlPlane リソースが属するプロジェクトを選択します。たとえば、istio-system です。
  10. Name フィールドに、この namespace が属する ServiceMeshControlPlane リソースの名前を入力します。たとえば、basic です。
  11. Create をクリックします。
  12. ServiceMeshMember リソースが作成され、プロジェクトがメッシュに追加されたことを確認します。リソース名をクリックします。たとえば、default です。画面の最後に表示される Conditions セクションを表示します。Reconciled および Ready の条件の StatusTrue であることを確認します。StatusFalse の場合は、Reason 列および Message 列で詳細を確認してください。

1.9.4.2. CLI で ServiceMeshMember リソースを使用してメッシュにプロジェクトを追加する

CLI で ServiceMeshMember リソースを使用して、1 つ以上のプロジェクトをメッシュに追加できます。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • ServiceMeshControlPlane リソースの名前と、それが属するプロジェクトの名前はわかっています。
  • メッシュに追加するプロジェクトの名前はわかっています。
  • Service Mesh 管理者は、Service Mesh へのアクセスを明示的に付与する必要があります。管理者は、RoleBinding または ClusterRoleBinding を使用して mesh-user ロール をユーザーに割り当てて、メッシュにアクセスする権限を付与できます。詳細は、Red Hat OpenShift Service Mesh メンバーの作成 を参照してください。

手順

  1. OpenShift Container Platform CLI にログインします。
  2. ServiceMeshMember マニフェストの YAML ファイルを作成します。マニフェストは、istio-system namespace にデプロイされた ServiceMeshControlPlane リソースが作成した Service Mesh に my-application プロジェクトを追加します。

    apiVersion: maistra.io/v1
    kind: ServiceMeshMember
    metadata:
      name: default
      namespace: my-application
    spec:
      controlPlaneRef:
        namespace: istio-system
        name: basic
  3. YAML ファイルを適用して ServiceMeshMember リソースを作成します。

    $ oc apply -f <file-name>
  4. ServiceMeshMember リソースを作成したら、namespace がメッシュの一部であることを確認します。以下のコマンドを実行する際に、READY 列に True の値が表示されていることを確認します。

    $ oc get smm default -n my-application

    ServiceMeshMemberRoll リソースにアクセスできる場合は、my-application namespace が ServiceMeshMemberRoll リソースの status.members および status.configuredMembers フィールドに表示されることを確認します。

1.9.5. ラベルセレクターを使用したプロジェクトの追加について

クラスター全体のデプロイメントの場合は、ラベルセレクターを使用してプロジェクトをメッシュに追加できます。ServiceMeshMemberRoll リソースで指定されたラベルセレクターを使用すると、サービスメッシュオペレーターは、namespace ラベルに基づいてメッシュに namespace を追加またはメッシュから namespace を削除できます。単一のラベルセレクターを指定するために使用できる他の標準 OpenShift Container Platform リソースとは異なり、ServiceMeshMemberRoll リソースを使用して複数のラベルセレクターを指定できます。

ラベルセレクターイメージを使用してプロジェクトを追加する

namespace のラベルが ServiceMeshMemberRoll リソースで指定されたセレクターのいずれかに一致する場合、その namespace はメッシュに含まれます。

注記

基本的に、OpenShift Container Platform でのプロジェクトとは、プロジェクトで使用できるユーザー ID 範囲などの追加のアノテーションを持つ Kubernetes namespace です。通常、OpenShift Container Platform Web コンソールでは プロジェクト という用語が使用され、CLI では namespace という用語が使用されますが、この 2 つの用語は基本的に同義です。

1.9.5.1. Web コンソールでラベルセレクターを使用してメッシュにプロジェクトを追加する

ラベルセレクターを使用して、OpenShift Container Platform Web コンソールでサービスメッシュにプロジェクトを追加できます。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • デプロイメントには既存の ServiceMeshMemberRoll リソースがあります。
  • cluster-admin ロールを持つユーザーとしてログインしています。Red Hat OpenShift Dedicated を使用する場合は、dedicated-admin ロールを持つユーザーとしてログインします。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Project メニューをクリックし、ドロップダウンリストから ServiceMeshMemberRoll リソースがデプロイされているプロジェクトを選択します。たとえば、istio-system です。
  4. Red Hat OpenShift Service Mesh Operator をクリックします。
  5. Istio Service Mesh Member Roll タブをクリックします。
  6. Create ServiceMeshMember Roll をクリックします。
  7. ServiceMeshMemberRoll のデフォルト名を受け入れます。
  8. Labels フィールドにキーと値のペアを入力して、Service Mesh に含める namespace を識別するラベルを定義します。プロジェクト namespace にセレクターで指定されたラベルがある場合、プロジェクト namespace は Service Mesh に含まれます。両方のラベルを含める必要はありません。

    たとえば、mykey=myvalue と入力すると、このラベルを持つすべての名前空間がメッシュの一部として含まれます。セレクターが一致を識別すると、プロジェクト namespace が Service Mesh に追加されます。

    myotherkey=myothervalue と入力すると、このラベルを持つすべての名前空間がメッシュの一部として含まれます。セレクターが一致を識別すると、プロジェクト namespace が Service Mesh に追加されます。

  9. Create をクリックします。

1.9.5.2. CLI でラベルセレクターを使用してメッシュにプロジェクトを追加する

ラベルセレクターを使用して、CLI でプロジェクトを Service Mesh に追加できます。

前提条件

  • Red Hat OpenShift Service Mesh Operator がインストールされています。
  • デプロイメントには既存の ServiceMeshMemberRoll リソースがあります。
  • cluster-admin ロールを持つユーザーとしてログインしています。Red Hat OpenShift Dedicated を使用する場合は、dedicated-admin ロールを持つユーザーとしてログインします。

手順

  1. OpenShift Container Platform CLI にログインします。
  2. ServiceMeshMemberRoll リソースを編集します。

    $ oc edit smmr default -n istio-system

    Service Mesh コントロールプレーンは、サービスが含まれるプロジェクトから分離されていれば、任意のプロジェクトにデプロイできます。

  3. YAML ファイルを変更して、ServiceMeshMemberRoll リソースの spec.memberSelectors フィールドに名前空間ラベルセレクターを含めます。

    注記

    matchLabels フィールドを使用する代わりに、セレクターで matchExpressions フィールドを使用することもできます。

    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system
    spec:
      memberSelectors: 1
      - matchLabels: 2
          mykey: myvalue 3
      - matchLabels: 4
          myotherkey: myothervalue 5
    1
    Service Mesh に含まれるプロジェクト namespace を識別するために使用されるラベルセレクターが含まれます。プロジェクト namespace にセレクターで指定されたラベルがある場合、プロジェクト namespace は Service Mesh に含まれます。プロジェクト namespace には両方のラベルを含める必要はありません。
    2 3
    mykey=myvalue ラベルを持つすべての namespace を指定します。セレクターが一致を識別すると、プロジェクト namespace が Service Mesh に追加されます。
    4 5
    myotherkey=myothervalue ラベルを持つすべての namespace を指定します。セレクターが一致を識別すると、プロジェクト namespace が Service Mesh に追加されます。

1.9.6. Bookinfo のサンプルアプリケーション

Bookinfo のサンプルアプリケーションでは、OpenShift Container Platform での Red Hat OpenShift Service Mesh 2.4.5 のインストールをテストすることができます。

Bookinfo アプリケーションは、オンラインブックストアの単一カタログエントリーのように、書籍に関する情報を表示します。このアプリケーションでは、書籍の説明、書籍の詳細 (ISBN、ページ数その他の情報)、および書評のページが表示されます。

Bookinfo アプリケーションはこれらのマイクロサービスで設定されます。

  • productpage マイクロサービスは、detailsreviews マイクロサービスを呼び出して、ページを設定します。
  • details マイクロサービスには書籍の情報が含まれています。
  • reviews マイクロサービスには、書評が含まれます。これは ratings マイクロサービスも呼び出します。
  • ratings マイクロサービスには、書評を伴う書籍のランキング情報が含まれます。

reviews マイクロサービスには、以下の 3 つのバージョンがあります。

  • バージョン v1 は、ratings サービスを呼び出しません。
  • バージョン v2 は、ratings サービスを呼び出して、各評価を 1 から 5 の黒い星で表示します。
  • バージョン v3 は、ratings サービスを呼び出して、各評価を 1 から 5 の赤い星で表示します。

1.9.6.1. Bookinfo アプリケーションのインストール

このチュートリアルでは、プロジェクトの作成、そのプロジェクトへの Bookinfo アプリケーションのデプロイ、Service Mesh での実行中のアプリケーションの表示を行い、サンプルアプリケーションを作成する方法を説明します。

前提条件:

  • OpenShift Container Platform 4.1 以降がインストールされている。
  • Red Hat OpenShift Service Mesh 2.4.5 がインストールされている。
  • OpenShift CLI (oc) へのアクセスがある。
  • cluster-admin ロールを持つアカウントがある。
注記

Bookinfo サンプルアプリケーションは、IBM Z および IBM Power にインストールできません。

注記

このセクションのコマンドは、Service Mesh コントロールプレーンプロジェクトが istio-system であると仮定します。コントロールプレーンを別の namespace にインストールしている場合は、実行する前にそれぞれのコマンドを編集します。

手順

  1. cluster-admin 権限を持つユーザーとして OpenShift Container Platform Web コンソールにログインします。(Red Hat OpenShift Dedicated を使用する場合) dedicated-admin ロールがあるアカウント。
  2. HomeProjects をクリックします。
  3. Create Project をクリックします。
  4. Project Name として info を入力し、Display Name を入力します。その後、Description を入力し、Create をクリックします。

    • または、CLI からこのコマンドを実行して、info プロジェクトを作成できます。

      $ oc new-project info
  5. OperatorsInstalled Operators をクリックします。
  6. プロジェクト メニューをクリックし、Service Mesh コントロールプレーンの namespace を使用します。この例では istio-system を使用します。
  7. Red Hat OpenShift Service Mesh Operator をクリックします。
  8. Istio Service Mesh Member Roll タブをクリックします。

    1. Istio Service Mesh Member Roll がすでに作成されている場合は、名前をクリックしてから YAML タブをクリックし、YAML エディターを開きます。
    2. ServiceMeshMemberRoll を作成していない場合は、Create ServiceMeshMemberRoll をクリックします。
  9. Members をクリックし、Value フィールドにプロジェクトの名前を入力します。
  10. Create をクリックして、更新した Service Mesh Member Roll を保存します。

    1. または、以下のサンプルを YAML ファイルに保存します。

      Bookinfo ServiceMeshMemberRoll の例 (servicemeshmemberroll-default.yaml)

      apiVersion: maistra.io/v1
      kind: ServiceMeshMemberRoll
      metadata:
        name: default
      spec:
        members:
        - info

    2. 以下のコマンドを実行して、そのファイルをアップロードし、istio-system namespace に ServiceMeshMemberRoll リソースを作成します。この例では、istio-system が Service Mesh コントロールプレーンプロジェクトの名前となります。

      $ oc create -n istio-system -f servicemeshmemberroll-default.yaml
  11. 以下のコマンドを実行して、ServiceMeshMemberRoll が正常に作成されていることを確認します。

    $ oc get smmr -n istio-system -o wide

    STATUS 列が Configured の場合、インストールは正常に終了しています。

    NAME      READY   STATUS       AGE   MEMBERS
    default   1/1     Configured   70s   ["info"]
  12. CLI で 'info' プロジェクトに Bookinfo アプリケーションをデプロイするには、bookinfo.yaml ファイルを適用します。

    $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.4/samples/bookinfo/platform/kube/bookinfo.yaml

    以下のような出力が表示されるはずです。

    service/details created
    serviceaccount/info-details created
    deployment.apps/details-v1 created
    service/ratings created
    serviceaccount/info-ratings created
    deployment.apps/ratings-v1 created
    service/reviews created
    serviceaccount/info-reviews created
    deployment.apps/reviews-v1 created
    deployment.apps/reviews-v2 created
    deployment.apps/reviews-v3 created
    service/productpage created
    serviceaccount/info-productpage created
    deployment.apps/productpage-v1 created
  13. info-gateway.yaml ファイルを適用して Ingress ゲートウェイを作成します。

    $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.4/samples/bookinfo/networking/bookinfo-gateway.yaml

    以下のような出力が表示されるはずです。

    gateway.networking.istio.io/info-gateway created
    virtualservice.networking.istio.io/info created
  14. GATEWAY_URL パラメーターの値を設定します。

    $ export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')

1.9.6.2. デフォルトの宛先ルールの追加

Bookinfo アプリケーションを使用するには、先にデフォルトの宛先ルールを追加する必要があります。相互トランスポート層セキュリティー (TLS) 認証が有効かどうかによって、2 つの事前設定される YAML ファイルを使用できます。

手順

  1. 宛先ルールを追加するには、以下のいずれかのコマンドを実行します。

    • 相互 TLS を有効にしていない場合:

      $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.4/samples/bookinfo/networking/destination-rule-all.yaml
    • 相互 TLS を有効にしている場合:

      $ oc apply -n info -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.4/samples/bookinfo/networking/destination-rule-all-mtls.yaml

      以下のような出力が表示されるはずです。

      destinationrule.networking.istio.io/productpage created
      destinationrule.networking.istio.io/reviews created
      destinationrule.networking.istio.io/ratings created
      destinationrule.networking.istio.io/details created

1.9.6.3. Bookinfo インストールの検証

Bookinfo アプリケーションのサンプルが正常にデプロイされたことを確認するには、以下の手順を実行します。

前提条件

  • Red Hat OpenShift Service Mesh がインストールされている。
  • Bookinfo サンプルアプリケーションのインストール手順を実行します。

CLI からの手順

  1. OpenShift Container Platform CLI にログインします。
  2. 以下のコマンドですべての Pod が準備状態にあることを確認します。

    $ oc get pods -n info

    すべての Pod のステータスは Running である必要があります。以下のような出力が表示されるはずです。

    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-55b869668-jh7hb        2/2     Running   0          12m
    productpage-v1-6fc77ff794-nsl8r   2/2     Running   0          12m
    ratings-v1-7d7d8d8b56-55scn       2/2     Running   0          12m
    reviews-v1-868597db96-bdxgq       2/2     Running   0          12m
    reviews-v2-5b64f47978-cvssp       2/2     Running   0          12m
    reviews-v3-6dfd49b55b-vcwpf       2/2     Running   0          12m
  3. 以下のコマンドを実行して、製品ページの URL を取得します。

    echo "http://$GATEWAY_URL/productpage"
  4. Web ブラウザーで出力をコピーして貼り付けて、Bookinfo の製品ページがデプロイされていることを確認します。

Kiali Web コンソールからの手順

  1. Kiali Web コンソールのアドレスを取得します。

    1. cluster-admin 権限を持つユーザーとして OpenShift Container Platform Web コンソールにログインします。(Red Hat OpenShift Dedicated を使用する場合) dedicated-admin ロールがあるアカウント。
    2. NetworkingRoutes に移動します。
    3. Routes ページで、Namespace メニューから Service Mesh コントロールプレーンプロジェクトを選択します (例: istio-system)。

      Location 列には、各ルートのリンク先アドレスが表示されます。

    4. Kiali の 場所 列のリンクをクリックします。
    5. Log In With OpenShift をクリックします。Kiali の 概要 画面には、各プロジェクトの namespace のタイルが表示されます。
  2. Kiali で、グラフ をクリックします。
  3. Namespace リストから info を選択し、Graph Type リストから App graph を選択します。
  4. Display メニューから Display idle nodes をクリックします。

    これにより、定義されているが要求を受信または送信していないノードが表示されます。アプリケーションが適切に定義されていることを確認できますが、要求トラフィックは報告されていません。

    info アプリケーションを表示する Kiali
    • 期間 メニューを使用して、期間を延ばして、古いトラフィックを取得できるようにします。
    • Refresh Rate メニューを使用して、トラフィックを頻繁に更新するか、まったく更新しないようにします。
  5. ServicesWorkloads または Istio Config をクリックして、info コンポーネントのリストビューを表示し、それらが正常であることを確認します。

1.9.6.4. Bookinfo アプリケーションの削除

以下の手順で、Bookinfo アプリケーションを削除します。

前提条件

  • OpenShift Container Platform 4.1 以降がインストールされている。
  • Red Hat OpenShift Service Mesh 2.4.5 がインストールされている。
  • OpenShift CLI (oc) へのアクセスがある。
1.9.6.4.1. Bookinfo プロジェクトの削除

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. HomeProjects をクリックします。
  3. info メニュー kebab をクリックしてから Delete Project をクリックします。
  4. 確認ダイアログボックスに info と入力してから Delete をクリックします。

    • または、CLI を使用して次のコマンドを実行し、info プロジェクトを作成できます。

      $ oc delete project info
1.9.6.4.2. Service Mesh Member Roll からの Bookinfo プロジェクトの削除

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. OperatorsInstalled Operators をクリックします。
  3. Project メニューをクリックし、一覧から istio-system を選択します。
  4. Red Hat OpenShift Service Mesh Operator の Provided APIS で、Istio Service Mesh Member Roll のリンクをクリックします。
  5. ServiceMeshMemberRoll メニュー kebab をクリックし、Edit Service Mesh Member Roll を選択します。
  6. デフォルトの Service Mesh Member Roll YAML を編集し、members 一覧から info を削除します。

    • または、CLI を使用して次のコマンドを実行し、ServiceMeshMemberRoll から info プロジェクトを削除できます。この例では、istio-system が Service Mesh コントロールプレーンプロジェクトの名前となります。

      $ oc -n istio-system patch --type='json' smmr default -p '[{"op": "remove", "path": "/spec/members", "value":["'"info"'"]}]'
  7. Save をクリックして、Service Mesh Member Roll を更新します。

1.9.7. 次のステップ