部署示例应用程序 Bookinfo

请参考本文档在多个集群的同一命名空间内部署 Bookinfo 应用程序,以验证多集群服务网格的能力。

准备项目和命名空间

准备应用程序部署所需的项目和命名空间,具体配置要求如下:

  • 所有集群必须与平台现有项目关联,作为 关联集群

  • 所有集群中必须存在部署应用程序的同名命名空间。

    注意:跨区域灾难恢复或基于多集群服务网格的负载均衡只能在服务网格内的同名命名空间中的同名服务之间进行。

您可以按照以下说明准备项目和命名空间:

  1. 请参考 创建项目 在平台上创建一个包含 关联集群 c1c2 的项目。
  1. 请参考 创建命名空间 在集群 c1c2 中创建同名命名空间 ns1

在多个集群中部署 Bookinfo 应用程序

在集群 c1c2 的同名命名空间 ns1 中部署 Bookinfo 应用程序。

前提条件

您拥有一个可以被平台访问的镜像仓库,并且可以将镜像推送到该仓库。

NOTE

本文档以 Harbor 作为示例。您需要在 Harbor 中准备一个用于上传镜像的项目(将 访问级别 设置为 public),并将该项目分配给为平台上 Bookinfo 准备的项目使用。您可以在平台上部署或集成镜像管理工具 Harbor,并将 Harbor 中用于上传镜像的项目分配给为平台上 Bookinfo 准备的项目。

应用介绍

Bookinfo 是 Istio 提供的一个示例应用程序,模拟了一个在线书店。它由四个独立的服务组成,这些服务共同提供查看书籍描述、书籍详细信息(ISBN、页数等)和一些书籍评论的功能。

构成 Bookinfo 的服务如下:

服务名称描述
productpage调用详览和评论服务以生成页面。
details包含有关书籍的信息。
reviews包含书籍的评论,并调用评分服务。

评论服务有三个版本:
v1:不调用评分服务。
v2:调用评分服务,并显示 1 到 5 星的评分
v3:调用评分服务,并显示 1 到 5 星的评分
提示:默认情况下部署的是 v2 版本。
ratings包含由书籍评价组成的评分信息。

Bookinfo 的端到端架构如下面所示。

准备镜像和 YAML 文件

在平台上部署 Bookinfo 应用程序之前,您需要从 客户门户 系统下载所需的镜像和 YAML 文件。

通过执行脚本为镜像打标签并将其上传到可被平台访问的镜像仓库,并相应地修改 YAML 文件中的镜像地址。确保平台在部署应用程序时能够顺利拉取所需的镜像。

步骤

  1. 登录到客户门户,在 应用市场 中搜索 Bookinfo,并将提供的产品文件下载到本地计算机。

    TIP

    如需访问客户门户系统,请联系技术支持。

  2. 打开本地终端,并执行以下命令解压下载的文件并加载镜像。

    unzip <file_name>.zip
    docker load -i images.tar
    
    NOTE

    解压后,您将获得以下文件:

    • images.tar:Bookinfo的镜像包。
    • bookinfo.yaml:Bookinfo 的 YAML 文件。
    • docker_script.sh:用于打标签镜像、上传镜像和修改 YAML 文件中镜像地址的脚本。
  3. 执行以下命令登录到可被平台访问的镜像仓库。

    NOTE

    <Harbor address> 替换为平台上可访问的 Harbor 的实际地址,例如:registry-harbor.example.com

    docker login <Harbor address>
    
    NOTE

    如果在输入用户名和密码后遇到以下错误,请修改 Docker 引擎 配置,将 Harbor 地址添加到 insecure-registries,然后重新执行登录命令。

    Error response from daemon: Get "https://<Harbor address>/v2/": http: server gave HTTP response to HTTPS client
    
  4. 修改 docker_script.sh 脚本文件。

    <Harbor address> 替换为您想要将镜像上传到的 Harbor 项目地址,例如:registry-harbor.example.com/bookinfo

  5. 按顺序执行以下命令。

    以下命令执行 docker_script.sh 脚本以打标签镜像、将镜像上传到 Harbor 项目,并修改 bookinfo.yaml 文件中的镜像地址。

    chmod +x docker_script.sh
    ./docker_script.sh
    

一键应用部署

容器平台 上,使用 YAML 在集群 c1c2 的命名空间 ns1 中创建 原生应用程序 来部署 Bookinfo 应用程序。

步骤

  1. 在顶部导航栏中,点击产品视图切换,切换到 容器平台 并进入集群 c1 下的命名空间 ns1

  2. 在左侧导航栏中,点击 应用管理 > 原生应用

  3. 点击 创建原生应用 并选择 一键创建 YAML

  4. 输入应用名称,在 YAML 编辑器中点击 导入,选择 bookinfo.yaml,然后点击 创建

  5. 重复上述步骤,在集群 c2 的命名空间 ns1 中部署 Bookinfo 应用程序。

将 Sidecar 注入到应用程序的服务中

服务网格 平台,将构成 Bookinfo 应用程序的服务 productpagedetailsreviewsratings 添加到服务网格平台中,并使用 服务网格治理模式。添加服务时,平台会自动将 Sidecar 注入服务中。

注入 Sidecar 后,Bookinfo 的架构如下面所示。

步骤

  1. 在顶部导航栏中,点击产品视图切换,切换到 服务网格

  2. 在左侧导航栏中,点击 服务列表

  3. 点击 添加服务 并选择 服务网格治理模式

  4. 配置相关参数并点击 创建

    NOTE

    除非另有说明,选择 Deployment 并使用界面上参数的默认值。

    • 重复上述步骤,将服务 productpagedetailsreviewsratings 添加到集群 c1c2 的命名空间 ns1 中。

通过 Ingress Gateway 访问 Bookinfo 应用程序

步骤

请参考 使用 Ingress Gateway 在集群 c1 中部署入口网关,并创建网关配置和路由配置,通过浏览器访问已部署的 Bookinfo 应用程序。

根据需要配置相关参数,并根据需要配置其他参数。

  • Ingress Gateway

    • 内部路由类型LoadBalancer

    • 端口包括 HTTP 协议端口。

  • 网关配置:选择带有 HTTP 协议的端口。

  • 路由配置路由目标选择 namespace ns1 in cluster c1internal routing productpage,端口为 9080

访问验证

点击路由配置中的 外部访问地址,在打开的页面左下角选择模拟用户类型(普通用户/测试用户),然后可以访问 productpage 服务,并查看 productpage 服务调用的 reviews 服务显示的评分信息。

服务调用拓扑如下所示。