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 微服务调用 detailsreviews 微服务来产生页面信息。
  • 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 自动注入功能。

流程

  1. 以具有 cluster-admin 权限的用户身份登录到 OpenShift Container Platform web 控制台。
  2. HomeProjects
  3. 点击 Create Project
  4. Project Name 中输入 bookinfo,输入 Display NameDescription,然后点 Create

    • 或者,也可以通过 CLI 运行这个命令来创建 bookinfo 项目。

      $ oc new-project bookinfo
  5. OperatorsInstalled Operators
  6. 点击 Project 菜单,并使用 control plane 命名空间。在这个示例中,使用 istio-system
  7. Red Hat OpenShift Service Mesh Operator。
  8. Istio Service Mesh Member Roll 链接。

    1. 如果您已经创建了 Istio Service Mesh Member Roll,请名称,然后点击 YAML 标签来打开 YAML 编辑器。
    2. 如果您还没有创建 Istio Service Mesh Member Roll,请点击 Create Service Mesh Member Roll

      注意

      您需要 cluster-admin 权限来编辑 Istio Service Mesh Member Roll。

  9. 编辑默认的 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"'"]}]'
  10. Create 保存更新的 Service Mesh Member Roll。
  11. 在 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
  12. 通过应用 bookinfo-gateway.yaml 文件创建入站网关 :

    $ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-1.1/samples/bookinfo/networking/bookinfo-gateway.yaml
  13. 设置 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 文件。

流程

  1. 要添加目的地规则,请运行以下命令之一:

    • 如果没有启用 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

流程

  1. 登录 OpenShift Container Platform CLI。
  2. 运行这个命令确认已部署了 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 项目

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. HomeProjects
  3. maninfo 菜单 kebab ,然后点 Delete Project
  4. 在确认对话框中输入 bookinfo,然后点 Delete

    • 或者,也可以通过 CLI 运行这个命令来创建 bookinfo 项目。

      $ oc delete project bookinfo

4.3.5.2. 从 Service Mesh member roll 中删除 Bookinfo 项目

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. OperatorsInstalled Operators
  3. Project 菜单,从列表中选择 openshift-operators
  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 列表中删除 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"'"]}]'
  7. Save 更新 Service Mesh Member Roll。