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