1.9. サービスメッシュへのサービスの追加
プロジェクトにはサービスが含まれますが、そのプロジェクトを 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
に一覧表示されているプロジェクトのみがコントロールプレーンの影響を受けます。プロジェクトは、特定のコントロールプレーンのデプロイメント用にメンバーロールに追加するまでサービスメッシュに属しません。
istio-system
など、ServiceMeshControlPlane
と同じプロジェクトに、 default
という名前の ServiceMeshMemberRoll
リソースを作成する必要があります。
1.9.2.1. Web コンソールからのメンバーロールの作成
Web コンソールを使用して 1 つ以上のプロジェクトを Service Mesh メンバーロールに追加します。この例では、istio-system
が Service Mesh コントロールプレーンプロジェクトの名前となります。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
- サービスメッシュに追加する既存プロジェクトの一覧。
手順
- OpenShift Container Platform Web コンソールにログインします。
メッシュのサービスがない場合や、ゼロから作業を開始する場合は、アプリケーションのプロジェクトを作成します。これは、Service Mesh コントロールプレーンをインストールしたプロジェクトとは異なる必要があります。
-
Home
Projects に移動します。 - Name フィールドに名前を入力します。
- Create をクリックします。
-
Home
-
Operators
Installed Operators に移動します。 -
Project メニューをクリックし、一覧から
ServiceMeshControlPlane
リソースがデプロイされているプロジェクト (例:istio-system
) を選択します。 - Red Hat OpenShift Service Mesh Operator をクリックします。
- Istio Service Mesh Member Roll タブをクリックします。
- Create ServiceMeshMemberRoll をクリックします。
-
Members をクリックし、Value フィールドにプロジェクトの名前を入力します。任意の数のプロジェクトを追加できますが、プロジェクトは 単一 の
ServiceMeshMemberRoll
リソースしか属することができません。 - Create をクリックします。
1.9.2.2. CLI からのメンバーロールの作成
コマンドラインからプロジェクトを ServiceMeshMemberRoll
に追加します。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
- サービスメッシュに追加するプロジェクトの一覧。
-
OpenShift CLI (
oc
) へのアクセスがある。
手順
OpenShift Container Platform CLI にログインします。
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
メッシュのサービスがない場合や、ゼロから作業を開始する場合は、アプリケーションのプロジェクトを作成します。これは、Service Mesh コントロールプレーンをインストールしたプロジェクトとは異なる必要があります。
$ oc new-project <your-project>
プロジェクトをメンバーとして追加するには、以下の 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
以下のコマンドを実行して、
istio-system
namespace にServiceMeshMemberRoll
リソースをアップロードおよび作成します。$ oc create -n istio-system -f servicemeshmemberroll-default.yaml
以下のコマンドを実行して、
ServiceMeshMemberRoll
が正常に作成されていることを確認します。$ oc get smmr -n istio-system default
STATUS
列がConfigured
の場合、インストールは正常に終了しています。
1.9.3. ServiceMeshMemberRoll リソースを使用したプロジェクトの追加について
ServiceMeshMemberRoll
リソースを使用するのが、プロジェクトをサービスメッシュに追加する最も簡単な方法です。プロジェクトを追加するには、ServiceMeshMemberRoll
リソースの spec.members
フィールドにプロジェクト名を指定します。ServiceMeshMemberRoll
リソースは、ServiceMeshControlPlane
リソースによって制御されるプロジェクトを指定します。
この方法を使用してプロジェクトを追加するには、追加するプロジェクトの servicemeshmemberrolls
権限と update pods
権限をユーザーが持っている必要があります。
サービスメッシュに追加するアプリケーション、ワークロード、またはサービスがすでにある場合は、次を参照してください。
-
Web コンソールで
ServiceMeshMemberRoll
リソースを使用してメッシュにプロジェクトを追加または削除する -
CLI で
ServiceMeshMemberRoll
リソースを使用してメッシュにプロジェクトを追加または削除する
-
Web コンソールで
-
あるいは、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
リソースを持つプロジェクトの名前。 - メッシュに追加する、またはメッシュから削除するプロジェクトの名前。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators に移動します。 -
Project メニューをクリックし、リストから
ServiceMeshControlPlane
リソースがデプロイされているプロジェクトを選択します。たとえば、istio-system
です。 - Red Hat OpenShift Service Mesh Operator をクリックします。
- Istio Service Mesh Member Roll タブをクリックします。
-
default
リンクをクリックします。 - YAML タブをクリックします。
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
- Save をクリックします。
- Reload をクリックします。
1.9.3.2. CLI で ServiceMeshMemberRoll リソースを使用してメッシュにプロジェクトを追加または削除する
CLI で ServiceMeshMemberRoll
リソースを使用して、1 つ以上のプロジェクトをメッシュに追加できます。プロジェクトはいくつでも追加できますが、プロジェクトは 1 つの メッシュにのみ属することができます。
ServiceMeshMemberRoll
リソースは、対応する ServiceMeshControlPlane
リソースが削除されると削除されます。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされ、検証されていること。
-
既存の
ServiceMeshMemberRoll
リソース。 -
ServiceMeshMemberRoll
リソースを持つプロジェクトの名前。 - メッシュに追加する、またはメッシュから削除するプロジェクトの名前。
-
OpenShift CLI (
oc
) へのアクセスがある。
手順
- OpenShift Container Platform CLI にログインします。
ServiceMeshMemberRoll
リソースを編集します。$ oc edit smmr -n <controlplane-namespace>
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
- ファイルを保存して、エディターを終了します。
1.9.4. ServiceMeshMember リソースを使用したプロジェクトの追加について
ServiceMeshMember
リソースを使用すると、ServiceMeshMemberRoll
リソースを変更せずにプロジェクトを Service Mesh に追加できます。プロジェクトを追加するには、Service Mesh に追加するプロジェクトに ServiceMeshMember
リソースを作成します。Service Mesh Operator が ServiceMeshMember
オブジェクトを処理すると、ServiceMeshMemberRoll
リソースの status.members
リストにプロジェクトが表示されます。次に、プロジェクトに存在するサービスがメッシュで利用可能になります。
メッシュ管理者は、各メッシュユーザーに ServiceMeshMember
リソースの ServiceMeshControlPlane
リソースを参照する権限を付与する必要があります。この権限を設定すると、メッシュユーザーがサービスメッシュプロジェクトまたは 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 メンバーの作成 を参照してください。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators に移動します。 -
Project メニューをクリックし、ドロップダウンリストからメッシュに追加するプロジェクトを選択します。たとえば、
istio-system
です。 - Red Hat OpenShift Service Mesh Operator をクリックします。
- Istio Service Mesh Member タブをクリックします。
- Create ServiceMeshMember をクリックします。
-
ServiceMeshMember
のデフォルト名を許可します。 - クリックして ControlPlaneRef を展開します。
-
Namespace フィールドで、
ServiceMeshControlPlane
リソースが属するプロジェクトを選択します。たとえば、istio-system
です。 -
Name フィールドに、この namespace が属する
ServiceMeshControlPlane
リソースの名前を入力します。たとえば、basic
です。 - Create をクリックします。
-
ServiceMeshMember
リソースが作成され、プロジェクトがメッシュに追加されたことを確認します。リソース名をクリックします。たとえば、default
です。画面の最後に表示される Conditions セクションを表示します。Reconciled
およびReady
の条件のStatus
がTrue
であることを確認します。Status
がFalse
の場合は、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 メンバーの作成 を参照してください。
手順
- OpenShift Container Platform CLI にログインします。
ServiceMeshMember
マニフェストの YAML ファイルを作成します。マニフェストは、istio-system
namespace にデプロイされたServiceMeshControlPlane
リソースが作成したサービスメッシュにmy-application
プロジェクトを追加します。apiVersion: maistra.io/v1 kind: ServiceMeshMember metadata: name: default namespace: my-application spec: controlPlaneRef: namespace: istio-system name: basic
YAML ファイルを適用して
ServiceMeshMember
リソースを作成します。$ oc apply -f <file-name>
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
ロールを持つユーザーとしてログインします。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators に移動します。 -
Project メニューをクリックし、ドロップダウンリストから
ServiceMeshMemberRoll
リソースがデプロイされているプロジェクトを選択します。たとえば、istio-system です。 - Red Hat OpenShift Service Mesh Operator をクリックします。
- Istio Service Mesh Member Roll タブをクリックします。
- Create ServiceMeshMember Roll をクリックします。
-
ServiceMeshMemberRoll
のデフォルト名を受け入れます。 Labels フィールドにキーと値のペアを入力して、サービスメッシュに含める名前空間を識別するラベルを定義します。プロジェクト namespace にセレクターで指定されたラベルがある場合、プロジェクト namespace はサービスメッシュに含まれます。両方のラベルを含める必要はありません。
たとえば、
mykey=myvalue
と入力すると、このラベルを持つすべての名前空間がメッシュの一部として含まれます。セレクターが一致を識別すると、プロジェクト名前空間がサービスメッシュに追加されます。myotherkey=myothervalue
と入力すると、このラベルを持つすべての名前空間がメッシュの一部として含まれます。セレクターが一致を識別すると、プロジェクト名前空間がサービスメッシュに追加されます。- Create をクリックします。
1.9.5.2. CLI でラベルセレクターを使用してメッシュにプロジェクトを追加する
ラベルセレクターを使用して、CLI でプロジェクトをサービスメッシュに追加できます。
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされています。
-
デプロイメントには既存の
ServiceMeshMemberRoll
リソースがあります。 -
cluster-admin
ロールを持つユーザーとしてログインしています。Red Hat OpenShift Dedicated を使用する場合は、dedicated-admin
ロールを持つユーザーとしてログインします。
手順
- OpenShift Container Platform CLI にログインします。
ServiceMeshMemberRoll
リソースを編集します。$ oc edit smmr -n <controlplane_project>
前の例では、例として
<controlplane_project>
を使用しています。Service Mesh コントロールプレーンは、サービスが含まれるプロジェクトから分離されている限り、任意のプロジェクトにデプロイできます。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
- サービスメッシュに含まれるプロジェクト名前空間を識別するために使用されるラベルセレクターが含まれます。プロジェクト namespace にセレクターで指定されたラベルがある場合、プロジェクト namespace はサービスメッシュに含まれます。プロジェクト namespace には両方のラベルを含める必要はありません。
- 2 3
mykey=myvalue
ラベルを持つすべての namespace を指定します。セレクターが一致を識別すると、プロジェクト名前空間がサービスメッシュに追加されます。- 4 5
myotherkey=myothervalue
ラベルを持つすべての namespace を指定します。セレクターが一致を識別すると、プロジェクト名前空間がサービスメッシュに追加されます。
1.9.6. Bookinfo のサンプルアプリケーション
Bookinfo のサンプルアプリケーションでは、OpenShift Container Platform での Red Hat OpenShift Service Mesh 2.4.2 のインストールをテストすることができます。
Bookinfo アプリケーションは、オンラインブックストアの単一カタログエントリーのように、書籍に関する情報を表示します。このアプリケーションでは、書籍の説明、書籍の詳細 (ISBN、ページ数その他の情報)、および書評のページが表示されます。
Bookinfo アプリケーションはこれらのマイクロサービスで設定されます。
-
productpage
マイクロサービスは、details
とreviews
マイクロサービスを呼び出して、ページを設定します。 -
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.2 がインストールされている。
-
OpenShift CLI (
oc
) へのアクセスがある。 -
cluster-admin
ロールを持つアカウントがある。
Bookinfo サンプルアプリケーションは、IBM Z および IBM Power Systems にインストールできません。
このセクションのコマンドは、Service Mesh コントロールプレーンプロジェクトが istio-system
であると仮定します。コントロールプレーンを別の namespace にインストールしている場合は、実行する前にそれぞれのコマンドを編集します。
手順
-
cluster-admin 権限を持つユーザーとして OpenShift Container Platform Web コンソールにログインします。(Red Hat OpenShift Dedicated を使用する場合)
dedicated-admin
ロールがあるアカウント。 -
Home
Projects をクリックします。 - Create Project をクリックします。
Project Name として
info
を入力し、Display Name を入力します。その後、Description を入力し、Create をクリックします。または、CLI からこのコマンドを実行して、
info
プロジェクトを作成できます。$ oc new-project info
-
Operators
Installed Operators をクリックします。 -
プロジェクト メニューをクリックし、Service Mesh コントロールプレーンの namespace を使用します。この例では
istio-system
を使用します。 - Red Hat OpenShift Service Mesh Operator をクリックします。
Istio Service Mesh Member Roll タブをクリックします。
- Istio Service Mesh Member Roll がすでに作成されている場合は、名前をクリックしてから YAML タブをクリックし、YAML エディターを開きます。
-
ServiceMeshMemberRoll
を作成していない場合は、Create ServiceMeshMemberRoll をクリックします。
- Members をクリックし、Value フィールドにプロジェクトの名前を入力します。
Create をクリックして、更新した Service Mesh Member Roll を保存します。
または、以下のサンプルを YAML ファイルに保存します。
Bookinfo ServiceMeshMemberRoll の例 (servicemeshmemberroll-default.yaml)
apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default spec: members: - info
以下のコマンドを実行して、そのファイルをアップロードし、
istio-system
namespace にServiceMeshMemberRoll
リソースを作成します。この例では、istio-system
が Service Mesh コントロールプレーンプロジェクトの名前となります。$ oc create -n istio-system -f servicemeshmemberroll-default.yaml
以下のコマンドを実行して、
ServiceMeshMemberRoll
が正常に作成されていることを確認します。$ oc get smmr -n istio-system -o wide
STATUS
列がConfigured
の場合、インストールは正常に終了しています。NAME READY STATUS AGE MEMBERS default 1/1 Configured 70s ["info"]
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
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
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 ファイルを使用できます。
手順
宛先ルールを追加するには、以下のいずれかのコマンドを実行します。
相互 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 からの手順
- OpenShift Container Platform CLI にログインします。
以下のコマンドですべての 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
以下のコマンドを実行して、製品ページの URL を取得します。
echo "http://$GATEWAY_URL/productpage"
- Web ブラウザーで出力をコピーして貼り付けて、Bookinfo の製品ページがデプロイされていることを確認します。
Kiali Web コンソールからの手順
Kiali Web コンソールのアドレスを取得します。
-
cluster-admin
権限を持つユーザーとして OpenShift Container Platform Web コンソールにログインします。(Red Hat OpenShift Dedicated を使用する場合)dedicated-admin
ロールがあるアカウント。 -
Networking
Routes に移動します。 Routes ページで、Namespace メニューから Service Mesh コントロールプレーンプロジェクトを選択します (例:
istio-system
)。Location 列には、各ルートのリンク先アドレスが表示されます。
- Kiali の 場所 列のリンクをクリックします。
- Log In With OpenShift をクリックします。Kiali の 概要 画面には、各プロジェクトの namespace のタイルが表示されます。
-
- Kiali で、グラフ をクリックします。
- Namespace リストから info を選択し、Graph Type リストから App graph を選択します。
Display メニューから Display idle nodes をクリックします。
これにより、定義されているが要求を受信または送信していないノードが表示されます。アプリケーションが適切に定義されていることを確認できますが、要求トラフィックは報告されていません。
- 期間 メニューを使用して、期間を延ばして、古いトラフィックを取得できるようにします。
- Refresh Rate メニューを使用して、トラフィックを頻繁に更新するか、まったく更新しないようにします。
- Services、Workloads または Istio Config をクリックして、info コンポーネントのリストビューを表示し、それらが正常であることを確認します。
1.9.6.4. Bookinfo アプリケーションの削除
以下の手順で、Bookinfo アプリケーションを削除します。
前提条件
- OpenShift Container Platform 4.1 以降がインストールされている。
- Red Hat OpenShift Service Mesh 2.4.2 がインストールされている。
-
OpenShift CLI (
oc
) へのアクセスがある。
1.9.6.4.1. Bookinfo プロジェクトの削除
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Home
Projects をクリックします。 -
info
メニュー をクリックしてから Delete Project をクリックします。 確認ダイアログボックスに
info
と入力してから Delete をクリックします。または、CLI を使用して次のコマンドを実行し、
info
プロジェクトを作成できます。$ oc delete project info
1.9.6.4.2. Service Mesh Member Roll からの Bookinfo プロジェクトの削除
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators をクリックします。 -
Project メニューをクリックし、一覧から
istio-system
を選択します。 - Red Hat OpenShift Service Mesh Operator の Provided APIS で、Istio Service Mesh Member Roll のリンクをクリックします。
-
ServiceMeshMemberRoll
メニュー をクリックし、Edit Service Mesh Member Roll を選択します。 デフォルトの 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"'"]}]'
- Save をクリックして、Service Mesh Member Roll を更新します。
1.9.7. 次のステップ
- インストールプロセスを続行するには、サイドカーインジェクションを有効化 を行う必要があります。