部署 Service Mesh 应用

最近更新时间:2025-07-30 11:31:44

我的收藏

操作场景

Mesh 应用支持 Go/Python/C++ 等不同编程语言,通过 Service Mesh 技术接入 TSF,无需修改代码,支持全套 TSF 服务治理能力。如果您想了解如何实现微服务应用的相关功能,请参见 Mesh 应用开发
为了帮助您快速体验如何在 TSF 中部署微服务应用,TSF 提供了一组 Mesh 应用 Demo,包含 user、shop 和 promotion 三个应用。本文以一个示例介绍如何在容器环境中部署 Service Mesh 应用,并实现简单的服务调用。

前提条件

已参见 快速创建一个容器集群 创建好一个容器集群并导入云主机。

操作步骤

步骤1:新建应用

2. 在左侧导航栏,单击应用管理,进入应用列表页。
3. 在应用列表上方单击新建
4. 设置应用信息,单击提交
应用名:填写应用名,以 user 为例。
部署方式:选择 容器部署
开发语言:选择 其他语言(PHP、C++等)
开发框架:选择 其他框架
标签:非必选。用于分类管理资源。具体管理方法可参见 标签
备注:选填,可留空。
数据集:非必选。选择应用对应的数据集。用户可以通过数据集管理配置不同的子账号和协作者使用不同资源的权限,管理方法详细参见 数据集管理
5. 单击下一步,进行配置注册配置治理方式。
注册配置治理:开启。关闭后,表示该应用不接入注册配置治理中心,不会进行服务注册和配置管理。
实例类别:选择共享实例(TSF-Consul)
接入方式:选择 Mesh接入
实现方式:选择 TSF Mesh
服务配置:选择使用本地Sepc.yaml
6. 单击完成

步骤2:上传镜像

前提条件

已安装 Docker(可参见安装 Docker)。
下载并解压 Demo(包含 user、shop 和 promotion 三个应用)。

步骤2.1:初始化镜像仓库

首次使用 镜像仓库 时,需要进行初始化操作,在 TSF 控制台 > 制品管理 > 镜像仓库管理中设置登录仓库的密码。请牢记该密码以便后续使用。其中“用户名”为当前登录账号 UIN。

TSF 会针对每个容器应用创建一个名为 tsf_<UIN>/<应用名> 的镜像仓库。



步骤2.2:制作镜像

1. 解压下载的 Demo 程序包,进入demo-mesh-user/目录,在 dockerfile 文件所在目录下,执行如下命令制作镜像。
docker build . -t ccr.ccs.tencentyun.com/tsf_<主账号 ID>/<应用名>:[tag]
其中<主账号 ID>对应用户腾讯云的主账号 ID(即 步骤2.1 中显示的 UIN,注意不是当前登录账号 ID,主账号 ID 可以在腾讯云控制台账号信息页面获取),<应用名>表示控制台上刚刚创建的应用名。[tag]为镜像的 tag,用户可自定义。 参见示例如下:


2. 命令执行完成后,执行docker image ls命令查看创建的镜像。

可查看到该镜像 tag 和 ImageId,这两个参数将用于推送镜像到镜像仓库。 更多关于制作镜像相关的操作请参见 制作容器镜像

步骤2.3:推送镜像到镜像仓库

1. 应用列表 中,单击在 步骤1. 新建应用 中创建的应用“ID/应用名”,进入应用详情页面。
2. 单击制品内容框内的上传程序包/镜像,可以获得登录镜像仓库、拉取镜像和推送镜像到仓库的命令。


3. 复制使用指引中登录腾讯云 docker registry 的命令并执行。
sudo docker login --username=<主账号 ID(即 UIN)> ccr.ccs.tencentyun.com
说明:
用户需要输入两次密码,首次为 sudo 密码,第二次为镜像仓库登录密码。 命令行工具显示 Login Succeeded 即表示登录成功。
4. 登录成功后,复制使用指引中给镜像打 tag 的命令并执行。
sudo docker tag [ImageId] ccr.ccs.tencentyun.com/tsf_<主账号 ID(即 UIN)>/<应用名>:[tag]
其中 [ImageId] 和 [tag] 是在制作镜像时获取。
说明:
若此时需要输入密码,请输入sudo 密码。
5. 复制使用指引中推送镜像到仓库的命令并执行,其中 [tag] 和步骤4相同。
sudo docker push ccr.ccs.tencentyun.com/tsf_<主账号 ID(即 UIN)>/<应用名>:[tag]
运行结果如下:


6. 推送镜像成功后,在 应用列表 中,单击在 步骤1. 新建应用 中创建的应用“ID/应用名”,单击刷新镜像列表页面,可以在 制品 内容框中看到上传镜像仓库中的镜像。


步骤3:部署应用

1. 在应用列表中,单击在 步骤1. 新建应用 中创建的应用的 “ID”。
2. 选择应用部署 > 部署组,单击应用部署,设置部署组相关信息。
集群:选择提前创建好的集群。
命名空间:选择集群关联的默认命名空间。
部署组名称:填写 user。
标签:用于分类管理资源,可不选。详细管理方法可参见 标签
备注:选填,可留空。
3. 单击下一步,进入部署配置页面。
4. 设置容器配置信息。

容器类型:选择 Deployment
容器配置:
镜像仓库类类型:选择个人仓库或企业仓库。
选择镜像:选择 步骤2:上传镜像 中推送到镜像仓库的镜像版本。
资源配置:应用容器的 CPU 和内存限制使用默认值即可。
环境变量:设置容器中的变量。
JAVA_OPT:设置 Java 应用的启动参数。
agent容器:默认勾选,用于采集日志,调用链,JVM 监控和弹性伸缩监控数据。
实例数量:使用默认值1个。
数据卷:按业务需要设置,非必填。
访问配置: 单击添加Service,按以下方法配置完成后单击确定,完成 Service 配置。
访问方式决定了部署组内应用的网络属性,不同访问方式的应用可以提供不同网络能力。此处设置主机端口访问
添加端口组,选择 TCP 协议,容器端口和服务端口设置为8089,名称设置为 test。
Session Affinity 选择 None
调度/重启策略:使用默认配置即可,无需更改。

5. 单击下一步,进行发布策略确认。发布方式选择立即部署
6. 单击下一步,进行服务注册配置和可观测确认。
7. 单击下一步,进行信息确认。
8. 应用部署成功后,重新进入主页单击应用管理 单击对应的应用 ID,进入应用详情页,单击左侧导航栏的应用部署 > 部署组,查看运行中/预期服务实例数的数值发生变化。
9. 前往 TSF Consul 菜单,在服务治理页签,选择地域和应用关联的命名空间后,可以看到服务实例显示在线状态,表示服务注册成功。



10. 在服务治理页面,选择地域和应用关联的命名空间后,可以看到服务实例显示在线状态,表示服务注册成功。


11. 在服务列表页单击服务的“ID”,进入服务详情页,单击接口列表标签页,可以查看上报的 API 定义。

步骤4:验证服务调用

重复步骤1到步骤3,部署应用 Demo 中的 shop 和 promotion 应用。user、shop、promotion 三个服务的接口间调用关系如下:



对应的服务名和应用监听端口为:user (8089),shop (8090),promotion (8091)。

一、触发 user 服务调用 shop 和 promotion 服务

1. 前往应用管理,确认所选地域后,单击目标应用 ID单击左侧菜单栏 应用部署,进入部署组列表,单击 user 部署组的“ID”,进入服务实例列表页面。
2. 访问配置页签,查看 user 应用对应的主机端口(NodePort)。
3. 前往 资源管理确认所选地域后,点击容器集群,单击目标集群的 ID,进入云主机列表页面,在该列表可获取集群中对应云主机的 公网 IP 地址

4. 单击云主机操作栏的登录,输入登录密码,登录云服务器。
5. 执行 curl 命令调用 user 服务,其中<云主机 IP> <NodePort> 为上述步骤获取的主机端口(NodePort)和云主机 IP。
curl -XGET <云主机 IP>:<NodePort>/api/v6/user/account/query
调用结果如下:



二、查看服务依赖拓扑图

1. 前往 TSF Consul, 在服务治理页面,选择创建集群和命名空间后,可以看到 user、shop 和 promotion 服务的运行状况。服务状态为在线单点在线,表示服务被代理注册成功。如果服务提供者的请求量大于0,请求错误率为0%,表示服务提供者被服务消费者请求成功。

2. 在服务治理页面,单击 shop 服务的“ID”,进入服务详情页面,可以看到三个服务的依赖关系。