部署示例应用 Bookinfo
请参考本文档,在服务网格中将 Bookinfo 应用部署到多个集群的同一命名空间中,以验证多集群 Service Mesh 的能力。
目录
准备项目和命名空间在多个集群中部署 Bookinfo 应用前提条件应用介绍准备镜像和 YAML 文件步骤一键部署应用步骤为应用的服务注入 Sidecar步骤通过 Ingress Gateway 访问 Bookinfo 应用步骤访问验证准备项目和命名空间
请准备用于部署应用的项目和命名空间,配置要求如下:
-
所有集群都必须作为关联集群加入平台已有项目。
-
用于部署应用的同名命名空间必须存在于所有集群中。
注意:基于多集群 Service Mesh 的跨地域容灾或负载均衡,只能在服务网格内各集群中同名命名空间下的同名服务之间进行。
你可以按照以下步骤准备项目和命名空间:
在多个集群中部署 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,并将提供的产品文件下载到本地。
TIP如需访问 Customer Portal 系统,请联系技术支持。
-
打开本地终端,执行以下命令解压下载的文件并加载镜像。
NOTE解压后,你将得到以下文件:
images.tar:Bookinfo 的镜像包。bookinfo.yaml:Bookinfo 的 YAML 文件。docker_script.sh:用于给镜像打标、上传镜像以及修改 YAML 文件中镜像地址的脚本。
-
执行以下命令登录平台可访问的镜像仓库。
NOTE请将
<Harbor address>替换为平台上 Harbor 的实际可访问地址,例如:registry-harbor.example.com。NOTE如果在输入用户名和密码后收到以下错误,请修改 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。 -
在左侧导航栏中,单击 Application Management > Native Application。
-
单击 Create Native Application,然后选择 One-Click Create with YAML。
-
输入应用名称,在 YAML 编辑器中单击 Import,选择 bookinfo.yaml,然后单击 Create。
-
重复上述步骤,在集群
c2的命名空间ns1中部署 Bookinfo 应用。
为应用的服务注入 Sidecar
在 Service Mesh 平台中,将构成 Bookinfo 应用的 productpage、details、reviews 和 ratings 服务以 Service Mesh governance mode 添加到 Service Mesh 平台。添加服务时,平台会自动向这些服务中注入 Sidecar。
注入 Sidecar 后,Bookinfo 的架构如下所示。
步骤
-
在顶部导航栏中,单击产品视图切换,切换到 Service Mesh。
-
在左侧导航栏中,单击 Service List。
-
单击 Add Service,然后选择 Service Mesh Governance Mode。
-
配置相关参数并单击 Create。
NOTE除非另有说明,请选择 Deployment,并使用界面参数的默认值。
- 重复上述步骤,将服务
productpage、details、reviews和ratings添加到集群c1和c2的命名空间ns1中的平台。
- 重复上述步骤,将服务
通过 Ingress Gateway 访问 Bookinfo 应用
步骤
参考 Using Ingress Gateway 在集群 c1 中部署 ingress gateway,并创建 gateway 配置和路由配置,以通过浏览器访问部署在该集群中的 Bookinfo 应用。
按需配置相关参数,并根据需要配置其他参数。
-
Ingress Gateway:
-
Internal Routing Type:
LoadBalancer。 -
端口包括 HTTP 协议端口。
-
-
Gateway Configuration:选择带有 HTTP 协议的端口。
-
Routing Configuration:Routing Destination 选择
namespace ns1 in cluster c1、internal routing productpage和端口9080。
访问验证
单击路由配置中的 External Access Address,在打开页面左下角选择模拟用户类型(Normal user/Test user),然后即可访问 productpage 服务,并看到 productpage 服务调用的 reviews 服务版本所显示的评分信息。
服务调用拓扑如下所示。
