部署示例应用 Bookinfo
参考本文档,在服务网格中跨多个集群、以相同命名空间部署 Bookinfo 应用,以验证多集群服务网格的能力。
目录
准备项目和命名空间在多个集群中部署 Bookinfo 应用前提条件应用简介准备镜像和 YAML 文件步骤一键部署应用步骤为应用服务注入 Sidecar步骤通过 Ingress Gateway 访问 Bookinfo 应用步骤访问验证准备项目和命名空间
为部署该应用准备项目和命名空间,配置要求如下:
-
所有集群必须作为 关联集群 与平台现有项目关联。
-
用于部署应用的同名命名空间必须存在于所有集群中。
注意:基于多集群服务网格的跨地域灾备或负载均衡,只能在服务网格内各集群中相同命名空间下的同名服务之间发生。
你可以按照以下步骤准备项目和命名空间:
在多个集群中部署 Bookinfo 应用
在集群 c1 和 c2 中的同名命名空间 ns1 下部署 Bookinfo 应用。
前提条件
你已经有一个平台可访问的镜像仓库,并且可以向该仓库推送镜像。
本文档以 Harbor 为例。你需要在 Harbor 中准备一个用于上传镜像的项目(访问级别设为 public),并将该项目分配给平台上为 Bookinfo 准备的项目使用。你可以在平台上部署或集成镜像管理工具 Harbor,并将 Harbor 中用于上传镜像的项目分配给平台上为 Bookinfo 准备的项目。
应用简介
Bookinfo 是 Istio 提供的一个示例应用,模拟了一个在线书店。它由四个独立的服务组成,共同提供查看书籍描述、书籍详情(ISBN、页数等)以及书评的功能。
组成 Bookinfo 的服务如下:
Bookinfo 的端到端架构如下所示。
准备镜像和 YAML 文件
在平台上部署 Bookinfo 应用之前,需要从 Customer Portal 系统下载部署 Bookinfo 应用所需的镜像和 YAML 文件。
通过执行脚本,对镜像打标签并将其上传到平台可访问的镜像仓库,同时修改 YAML 文件中的镜像地址。确保平台在部署应用时能够顺利拉取所需镜像。
步骤
-
登录 Customer Portal,在 Application Marketplace 中搜索 Bookinfo,并将提供的 product 文件下载到本地。
TIP如需访问 Customer Portal 系统,请联系技术支持。
-
打开本地终端,执行以下命令解压下载的文件并加载镜像。
NOTE解压后,将得到以下文件:
images.tar:Bookinfo 的镜像包。bookinfo.yaml:Bookinfo 的 YAML 文件。crictl_script.sh:用于给镜像打标签、上传镜像以及修改 YAML 文件中镜像地址的脚本。
-
执行以下命令登录平台可访问的镜像仓库。
NOTE请将
<Harbor address>替换为平台上 Harbor 的实际可访问地址,例如:registry-harbor.example.com。NOTE在输入用户名和密码后,如果收到以下错误,请修改 container runtime 配置,将 Harbor 地址添加到 insecure-registries,然后重新执行登录命令。
-
修改 crictl_script.sh 脚本文件。
将
<Harbor address>替换为你要上传镜像的 Harbor 项目地址,例如:registry-harbor.example.com/bookinfo。 -
按顺序执行以下命令。
以下命令会执行 crictl_script.sh 脚本,对镜像打标签、将镜像上传到 Harbor 项目,并修改 bookinfo.yaml 文件中的镜像地址。
一键部署应用
在 Container Platform 平台中,使用 YAML 在集群 c1 和 c2 的命名空间 ns1 中创建一个 原生应用,以部署 Bookinfo 应用。
步骤
-
在顶部导航栏,单击产品视图切换器切换到 Container Platform,并进入集群
c1下的命名空间ns1。 -
在左侧导航栏,单击 应用管理 > 原生应用。
-
单击 创建原生应用,并选择 使用 YAML 一键创建。
-
输入应用名称,在 YAML 编辑器中单击 导入,选择 bookinfo.yaml,然后单击 创建。
-
重复以上步骤,在集群
c2的命名空间ns1中部署 Bookinfo 应用。
为应用服务注入 Sidecar
在 Service Mesh 平台中,将构成 Bookinfo 应用的服务 productpage、details、reviews 和 ratings 以 Service Mesh 治理模式 添加到 Service Mesh 平台中。添加服务时,平台会自动为这些服务注入 Sidecar。
注入 Sidecar 后,Bookinfo 的架构如下所示。
步骤
-
在顶部导航栏,单击产品视图切换器切换到 Service Mesh。
-
在左侧导航栏,单击 服务列表。
-
单击 添加服务,并选择 Service Mesh 治理模式。
-
配置相关参数,然后单击 创建。
NOTE除非另有说明,请选择 Deployment,并使用界面上的默认参数值。
- 重复以上步骤,将服务
productpage、details、reviews和ratings添加到集群c1和c2的命名空间ns1中的平台。
- 重复以上步骤,将服务
通过 Ingress Gateway 访问 Bookinfo 应用
步骤
参考 使用 Ingress Gateway,在集群 c1 中部署 ingress gateway,并创建 gateway 配置和路由配置,以通过浏览器访问在该集群中部署的 Bookinfo 应用。
根据需要配置相关参数,其余参数按需配置。
-
Ingress Gateway:
-
内部路由类型:
LoadBalancer。 -
端口包含 HTTP 协议端口。
-
-
Gateway 配置:选择带有 HTTP 协议的端口。
-
路由配置:路由目标 选择
cluster c1 中的命名空间 ns1、internal routing productpage,以及端口9080。
访问验证
单击路由配置中的 External Access Address,在打开页面的左下角选择模拟用户类型(Normal user/Test user),然后即可访问 productpage 服务,并查看由 productpage 服务调用的 reviews 服务版本所显示的评分信息。
服务调用拓扑如下所示。
