1.9.3. Bookinfo 示例应用程序
您可以使用 Bookinfo 示例应用程序来测试 OpenShift Container Platform 中的 Red Hat OpenShift Service Mesh 2.2.3 安装。
Bookinfo 应用程序显示一本书的信息,类似于在线书店的单一目录条目。应用会显示一个页面,其中描述了图书详细信息(ISBN、页数和其他信息)以及图书的评论。
Bookinfo 应用程序由这些微服务组成:
-
productpage
微服务调用details
和reviews
微服务来产生页面信息。 -
details
微服务包括了书的信息。 -
review
微服务包括了书的评论。它同时还会调用ratings
微服务。 -
ratings
微服务包括了带有对本书的评论信息的评分信息。
reviews 微服务有三个版本:
-
版本 v1 不调用
ratings
服务。 -
版本 v2 调用
ratings
服务,并以一到五个黑色星来代表对本书的评分。 -
版本 v3 调用
ratings
服务,并以一到五个红色星来代表对本书的评分。
1.9.3.1. 安装 Bookinfo 应用程序
本教程介绍了如何创建项目、将 Bookinfo 应用程序部署到该项目并在 Service Mesh 中查看正在运行的应用程序来创建示例应用程序。
先决条件:
- 安装了 OpenShift Container Platform 4.1 或更高版本。
- Red Hat OpenShift Service Mesh 2.2.3 installed.
-
访问 OpenShift CLI(
oc
)。 -
具有
cluster-admin
角色的帐户。
Bookinfo 示例应用程序不能安装在 IBM Z 和 IBM Power Systems 上。
本节中的命令假设 Service Mesh control plane 项目为 istio-system
。如果在另一个命名空间中安装了 control plane,在运行前编辑每个命令。
流程
-
以具有 cluster-admin 权限的用户身份登录到 OpenShift Container Platform web 控制台。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有
dedicated-admin
角色的帐户。 -
点 Home
Projects。 - 点击 Create Project。
在 Project Name 中输入
bookinfo
,输入 Display Name 及 Description,然后点 Create。或者,也可以通过 CLI 运行这个命令来创建
bookinfo
项目。$ oc new-project bookinfo
-
点 Operators
Installed Operators。 -
点 Project 菜单,使用 Service Mesh control plane 命名空间。在这个示例中,使用
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: - bookinfo
运行以下命令上传该文件,并在
istio-system
命名空间中创建ServiceMeshMemberRoll
资源。在本例中,istio-system
是 Service Mesh control plane 项目的名称。$ 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 ["bookinfo"]
在 CLI 中,通过应用
bookinfo.yaml
文件在 `bookinfo` 项目中部署 Bookinfo:$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/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
文件创建入站网关 :$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/bookinfo-gateway.yaml
您应该看到类似如下的输出:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
设置
GATEWAY_URL
参数的值:$ export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')