1.7.5. Bookinfo のサンプルアプリケーション
アップストリームの Istio プロジェクトには Bookinfo というチュートリアルのサンプルがあり、これは各種の Istio 機能を示すために使用される 4 つの異なるマイクロサービスで設定されています。Bookinfo アプリケーションは、オンラインブックストアの単一カタログエントリーのように、書籍に関する情報を表示します。ページに表示される内容は、書籍の説明、書籍の詳細 (ISBN、ページ数その他の情報)、および書評 (book review) です。
Bookinfo アプリケーションはこれらのマイクロサービスで設定されます。
-
productpage
マイクロサービスは、details
とreviews
マイクロサービスを呼び出して、ページを設定します。 -
details
マイクロサービスには書籍の情報が含まれています。 -
reviews
マイクロサービスには、書評が含まれます。これはratings
マイクロサービスも呼び出します。 -
ratings
マイクロサービスには、書評を伴う書籍のランキング情報が含まれます。
reviews マイクロサービスには、以下の 3 つのバージョンがあります。
-
バージョン v1 は、
ratings
サービスを呼び出しません。 -
バージョン v2 は、
ratings
サービスを呼び出して、各評価を 1 から 5 の黒い星で表示します。 -
バージョン v3 は、
ratings
サービスを呼び出して、各評価を 1 から 5 の赤い星で表示します。
1.7.5.1. Bookinfo アプリケーションのインストール
このチュートリアルでは、プロジェクトの作成、そのプロジェクトへの Bookinfo アプリケーションのデプロイ、Service Mesh での実行中のアプリケーションの表示を行い、サンプルアプリケーションを作成する方法を説明します。
前提条件:
- OpenShift Container Platform 4.1 以降がインストールされている。
- Red Hat OpenShift Service Mesh 2.0.6 がインストールされている。
-
oc
として知られる OpenShift Container Platform コマンドラインインターフェイス (CLI) へのアクセス。
Red Hat OpenShift Service Mesh は、アップストリームの Istio プロジェクトとは別の自動挿入を実装します。そのため、この手順では Red Hat OpenShift Service Mesh の Istio サイドカーコンテナーの自動挿入を有効にするためのアノテーションが付けられた bookinfo.yaml
ファイルのバージョンを使用します。
手順
- cluster-admin 権限を持つユーザーとして OpenShift Container Platform Web コンソールにログインします。
-
Home
Projects をクリックします。 - Create Project をクリックします。
Project Name として
bookinfo
を入力し、Display Name を入力します。その後、Description を入力し、Create をクリックします。または、CLI からこのコマンドを実行して、
bookinfo
プロジェクトを作成できます。$ oc new-project bookinfo
-
Operators
Installed Operators をクリックします。 -
Project メニューをクリックし、コントロールプレーンの namespace を使用します。この例では
istio-system
を使用します。 - Red Hat OpenShift Service Mesh Operator をクリックします。
Istio Service Mesh Member Roll リンクをクリックします。
- Istio Service Mesh Member Roll がすでに作成されている場合には、名前をクリックしてから YAML タブをクリックし、YAML エディターを開きます。
Istio Service Mesh Member Roll を作成していない場合は、Create Service Mesh Member Roll をクリックします。
注記Istio Service Mesh Member Roll を編集するには cluster-admin 権限が必要になります。
デフォルトの Service Mesh Member Roll YAML を編集し、
bookinfo
を members 一覧に追加します。Bookinfo ServiceMeshMemberRoll の例
apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default spec: members: - bookinfo
以下のコマンドを実行して、
ServiceMeshMemberRoll
が正常に作成されていることを確認します。$ oc -n <control_plane_project> patch --type='json' smmr default -p '[{"op": "add", "path": "/spec/members", "value":["'"bookinfo"'"]}]'
STATUS
列がConfigured
の場合には、インストールは正常に終了しています。NAME READY STATUS AGE default 1/1 Configured 2m27s
CLI で 'bookinfo' プロジェクトに Bookinfo アプリケーションをデプロイするには、
bookinfo.yaml
ファイルを適用します。$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.0/samples/bookinfo/platform/kube/bookinfo.yaml
以下のような出力が表示されるはずです。
service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created
bookinfo-gateway.yaml
ファイルを適用して Ingress ゲートウェイを作成します。$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.0/samples/bookinfo/networking/bookinfo-gateway.yaml
以下のような出力が表示されるはずです。
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
GATEWAY_URL
パラメーターの値を設定します。注記<control_plane_project>
をコントロールプレーンプロジェクトの名前に置き換えます。この例では、コントロールプレーンプロジェクトはistio-system
です。$ export GATEWAY_URL=$(oc -n <control_plane_project> get route istio-ingressgateway -o jsonpath='{.spec.host}')