4.3. 应用程序示例
您可以使用 Bookinfo 示例应用程序来测试 OpenShift Container Platform 中的 Red Hat OpenShift Service Mesh 1.1.2 安装。
红帽不提供对 Bookinfo 应用程序的支持。
4.3.1. Bookinfo 应用程序
上游 Istio 项目有一个名为 Bookinfo 的示例,它由四个独立的微服务组成,用来演示各种 Istio 特性。Bookinfo 应用程序显示一本书的信息,类似于在线书店的单一目录条目。页面上显示的是对书、书目详情(ISBN 、页数以及其它信息)以及对本书的评论。
Bookinfo 应用程序由这些微服务组成:
-
productpage
微服务调用details
和reviews
微服务来产生页面信息。 -
details
微服务包括了书的信息。 -
review
微服务包括了书的评论。它同时还会调用ratings
微服务。 -
ratings
微服务包括了带有对本书的评论信息的评分信息。
reviews 微服务有三个版本:
-
版本 v1 不调用
ratings
服务。 -
版本 v2 调用
ratings
服务,并以一到五个黑色星来代表对本书的评分。 -
版本 v2 调用
ratings
服务,并以一到五个红色星来代表对本书的评分。
4.3.2. 安装 Bookinfo 应用程序
本教程介绍了创建 Bookinfo 项目的步骤,包括部署 Bookinfo 应用程序,以及在使用 Service Mesh 1.1.2 的 OpenShift Container Platform 上运行 Bookinfo。
先决条件
- 安装了 OpenShift Container Platform 4.1 或更高版本。
- 安装了 Red Hat OpenShift Service Mesh 1.1.2。
-
访问 OpenShift Container Platform 命令行界面 (CLI) 也称为
oc
。
Red Hat OpenShift Service Mesh 的自动注入与上游 Istio 项目不同,因此这里介绍的过程所使用的 bookinfo.yaml
文件版本已被注解为为 Red Hat OpenShift Service Mesh 启用 Istio sidecar 自动注入功能。
流程
- 以具有 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 菜单,并使用 control plane 命名空间。在这个示例中,使用
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。
注意您需要 cluster-admin 权限来编辑 Istio Service Mesh Member Roll。
编辑默认的 Service Mesh Member Roll YAML 并把
bookinfo
添加到 members 列表中。apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default spec: members: - bookinfo
另外,您还可以通过 CLI 运行这个命令,将
bookinfo
项目添加到ServiceMeshMemberRoll
中。使用 control plane 的项目名替换<control plane project>
。$ oc -n <control plane project> patch --type='json' smmr default -p '[{"op": "add", "path": "/spec/members", "value":["'"bookinfo"'"]}]'
- 点 Create 保存更新的 Service Mesh Member Roll。
在 CLI 中,通过应用
bookinfo.yaml
文件在 `bookinfo` 项目中部署 Bookinfo:$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-1.1/samples/bookinfo/platform/kube/bookinfo.yaml
通过应用
bookinfo-gateway.yaml
文件创建入站网关 :$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-1.1/samples/bookinfo/networking/bookinfo-gateway.yaml
设置
GATEWAY_URL
参数的值:注意用 control plane 项目的名称来替换
<control_plane_project>
。在本例中,control plane 项目为istio-system
。$ export GATEWAY_URL=$(oc -n <control_plane_project> get route istio-ingressgateway -o jsonpath='{.spec.host}')
4.3.3. 添加默认目的地规则
在使用 Bookinfo 应用程序前,您必须添加默认的目的地规则。根据您是否启用了 mutual TLS 验证,预先配置两个 YAML 文件。
流程
要添加目的地规则,请运行以下命令之一:
如果没有启用 mutual TLS:
$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-1.1/samples/bookinfo/networking/destination-rule-all.yaml
如果启用了 nutual TLS:
$ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-1.1/samples/bookinfo/networking/destination-rule-all-mtls.yaml
4.3.4. 验证 Bookinfo 安装
在配置应用程序前,请确定它已被成功部署。
先决条件
- 安装了 OpenShift Container Platform 4.1 或更高版本。
- 安装了 Red Hat OpenShift Service Mesh 1.1.2。
-
访问 OpenShift Container Platform 命令行界面 (CLI) 也称为
oc
。
流程
- 登录 OpenShift Container Platform CLI。
运行这个命令确认已部署了 Bookinfo:
$ curl -o /dev/null -s -w "%{http_code}\n" http://$GATEWAY_URL/productpage
-
另外,也可以通过在浏览器中打开
http://$GATEWAY_URL/productpage
来确认。 您还可以确认所有 pod 都可以使用这个命令:
$ oc get pods -n bookinfo
-
另外,也可以通过在浏览器中打开
4.3.5. 删除 Bookinfo 应用程序
按照以下步骤删除 Bookinfo 应用程序。
先决条件
- 安装了 OpenShift Container Platform 4.1 或更高版本。
- 安装了 Red Hat OpenShift Service Mesh 1.1.2。
-
访问 OpenShift Container Platform 命令行界面 (CLI) 也称为
oc
。
4.3.5.1. 删除 Bookinfo 项目
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
点 Home
Projects。 -
点
maninfo
菜单 ,然后点 Delete Project。 在确认对话框中输入
bookinfo
,然后点 Delete。或者,也可以通过 CLI 运行这个命令来创建
bookinfo
项目。$ oc delete project bookinfo
4.3.5.2. 从 Service Mesh member roll 中删除 Bookinfo 项目
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
点 Operators
Installed Operators。 -
点 Project 菜单,从列表中选择
openshift-operators
。 - 为 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 列表中删除
bookinfo
。另外,您还可以通过 CLI 运行这个命令从
ServiceMeshMemberRoll
中删除bookinfo
项目。使用 control plane 的项目名替换<control plane project>
。$ oc -n <control plane project> patch --type='json' smmr default -p '[{"op": "remove", "path": "/spec/members", "value":["'"bookinfo"'"]}]'
- 点 Save 更新 Service Mesh Member Roll。