操作场景
TSF 应用可以使用 CODING 流水线进行部署,通过流水线及插件一键创建应用、上传文件、创建部署组、导入服务器、部署应用。
基于 CODING 在 TSF 平台做自动化部署主要分为两部分内容,第一部分是代码仓库接入 CODING 并结合自身代码的编译流程实现自动化编译(CI),第二部分是将编译得出的代码包或者镜像通过 TSF 插件部署到TSF平台中(CD)。
前置条件
CD-基于 TSF 插件自动化部署
1. 插件概览
注意:
新版本插件名后面有(new)标识。
插件名称 | 插件功能 | 版本 | 插件 ID |
TSF 创建应用 | 创建 TSF 应用 | 1.0 | tsf_general_create_application |
TSF 虚机应用程序包上传 | 上传程序包到 TSF 应用中 | 1.0 | tsf_public_upload_package |
TSF 创建配置项 | 创建 TSF 配置项 | 1.0 | tsf_general_create_config |
TSF 创建文件配置项 | 创建 TSF 文件配置项 | 1.0 | tsf_general_create_file_config |
TSF 创建公共配置项 | 插件 TSF 公共配置项 | 1.0 | tsf_general_create_public_config |
TSF 发布配置项 | 发布 TSF 配置项 | 1.0 | tsf_general_release_config |
TSF 发布文件配置项 | 发布 TSF 文件配置项 | 1.0 | tsf_general_release_file_config |
TSF 发布公共配置项 | 发布 TSF 公共配置项 | 1.0 | tsf_general_release_public_config |
TSF 创建容器部署组 | 创建 TSF 容器部署组 | 1.0 | tsf_general_create_container_group |
TSF 部署容器应用 | 部署 TSF 容器应用 | 1.0 | tsf_general_deploy_container_group |
TSF 创建部署组 | 创建 TSF 虚机部署组 | 1.0 | tsf_general_create_group |
TSF 部署虚机应用 | 部署 TSF 虚机应用 | 1.0 | tsf_general_deploy_vm_group |
TSF 添加实例 | 向 TSF 虚机部署组添加实例 | 1.0 | tsf_general_vm_group_add_instance |
TSF 创建泳道 | 创建 TSF 泳道 | 1.0 | tsf_general_create_lane |
TSF 创建泳道规则 | 创建 TSF 泳道规则 | 1.0 | tsf_general_create_lane_rule |
TSF 启用泳道规则 | 开启 TSF 泳道规则 | 1.0 | tsf_general_enable_lane_rule |
2. 插件编排(流程配置)


选择项目,单击持续集成,进入流程编排。针对不同部署方式,配置不同流水线,建议的编排顺序如下:
虚机方式部署
首次创建 TSF 资源,插件可以参考以下顺序在 CODING 中编排好。1-1步骤属于 CI 流程,通过该步骤构建出可用于部署的物料包,其余各 TSF 插件可按需求选用。


容器方式部署
首次创建 TSF 资源,插件可以参考以下顺序在 CODING 中编排好。2-1步骤属于 CI 流程,通过该步骤构建出可用于部署的镜像,制作容器镜像参考该文档:制作容器镜像。其余各TSF插件可按需求选用。


3. 公共环境变量配置
通过批量添加环境变量导入以下公共变量


SECRET_ID:xxxSECRET_KEY:xxxREGION:ap-guangzhouTSF_ENV:tsf_publicAPI_URL:tsf.tencentcloudapi.comAPI_HOST:tsf.tencentcloudapi.comACCOUNT_APPID:xxx
公共环境变量详情
1. 插件使用环境:TSF_ENV: tsf_public。
2. 密钥:SECRET_ID、SECRET_KEY:在访问管理中 > 访问密钥 > API 密钥管理中获取。




3. TSF 地域:REGION: ap-guangzhou。各地域具体对应的值可以在 API Explorer上查看。


4. 云 API 地址
API_URL:
tsf.tencentcloudapi.com
API_HOST:
tsf.tencentcloudapi.com
5. 账号 ID
APPID:API 密钥管理的 APPID


TSF插件入参说明
1. TSF 创建应用
参数名 | 是否必填 | 描述 | 样例 |
TSF应用名称 | 是 | 最长60个字符,只能包含小写字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
TSF应用类型 | 是 | V:虚拟机应用;C:容器应用 | V |
TSF应用微服务类型 | 是 | M:service mesh应用;N:普通应用;G:网关应用; | N |
TSF应用需要绑定的数据集ID | 否 | 需要绑定的数据集id | program-a22ozxja |
数据集ID列表 | 否 | 需要绑定的数据集id列表 | |
忽略创建镜像仓库 | 否 | true/false | false |
2. TSF 虚机应用程序包上传
参数名 | 是否必填 | 描述 | 样例 |
TSF应用名称 | 是 | 最长60个字符,只能包含小写字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
应用程序包版本号 | 是 | 最长32个字符,支持 a-z,A-Z,0-9,横杠(-)、下划线(_)、点(.) | 1.0.0 |
待上传的程序包本地路径 | 是 | 程序包所在的构建机相对路径 | demo/task-schedule-example-1.2.0.jar |
3. TSF 创建配置项
参数名 | 是否必填 | 描述 | 样例 |
配置项名称 | 是 | 最长60个字符,只能包含字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
配置项版本 | 是 | 只能包含小写字母、数字及分隔符("-","."),且必须以小写字母或数字开头、以小写字母或数字结尾,中间不能有连续的"-"或"." | 1.0.0 |
配置项值 | 是 | 配置项值 | server: 127.0.0.1 |
应用名称 | 是 | 最长60个字符,只能包含小写字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
配置是否Base64编码 | 否 | 配置值是否使用Base64编码,使用Base64时,该参数必填 | true |
配置项版本描述 | 否 | 配置描述 | tsf-config1 |
配置项值类型 | 否 | 废弃参数 | 废弃参数 |
数据集ID列表 | 否 | 需要绑定的数据集id列表 |
4. TSF 创建文件配置项
参数名 | 是否必填 | 描述 | 样例 |
配置项名称 | 是 | 最长60个字符,只能包含字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
配置项版本 | 是 | 只能包含小写字母、数字及分隔符("-","."),且必须以小写字母或数字开头、以小写字母或数字结尾,中间不能有连续的"-"或"." | 1.0.0 |
应用名称 | 是 | 最长60个字符,只能包含小写字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
配置项文件名 | 是 | TSF配置项文件名 | demo |
配置项文件发布路径 | 是 | TSF配置项文件发布路径 | /etc/config/ |
配置项文件内容 | 是 | 配置项值 | server: 127.0.0.1 |
配置项文件编码 | 是 | utf-8 或 gbk | utf-8 |
后置命令 | 否 | 后置脚本命令,创建完成后,不支持修改后置命令脚本 | sh /etc/nginx/conf.d/start.sh |
配置是否Base64编码 | 否 | 配置值是否使用Base64编码,使用Base64时,该参数必填 | true |
配置项版本描述 | 否 | 配置描述 | tsf-config1 |
数据集ID列表 | 否 | 需要绑定的数据集id列表 |
5. TSF 创建公共配置项
参数名 | 是否必填 | 描述 | 样例 |
配置项名称 | 是 | 最长60个字符,只能包含字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
配置项版本 | 是 | 只能包含小写字母、数字及分隔符("-","."),且必须以小写字母或数字开头、以小写字母或数字结尾,中间不能有连续的"-"或"." | 1.0.0 |
配置项值 | 是 | 配置项值 | server: 127.0.0.1 |
配置是否Base64编码 | 否 | 配置值是否使用Base64编码,使用Base64时,该参数必填 | true |
配置项版本描述 | 否 | 配置描述 | tsf-config1 |
配置项值类型 | 否 | 废弃参数 | 废弃参数 |
数据集ID列表 | 否 | 需要绑定的数据集id列表 |
6. TSF 发布配置项
参数名 | 是否必填 | 描述 | 样例 |
配置项名称 | 是 | 最长60个字符,只能包含字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
配置项版本 | 是 | 只能包含小写字母、数字及分隔符("-","."),且必须以小写字母或数字开头、以小写字母或数字结尾,中间不能有连续的"-"或"." | 1.0.0 |
部署组ID | 是 | 需要发布的部署组id | |
配置项发布描述 | 否 | TSF应用配置项发布描述 | config1 |
7. TSF 发布文件配置项
参数名 | 是否必填 | 描述 | 样例 |
配置项名称 | 是 | 最长60个字符,只能包含字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
配置项版本 | 是 | 只能包含小写字母、数字及分隔符("-","."),且必须以小写字母或数字开头、以小写字母或数字结尾,中间不能有连续的"-"或"." | 1.0.0 |
部署组ID | 是 | 需要发布的部署组id | |
配置项发布描述 | 否 | TSF应用配置项发布描述 | config1 |
8. TSF发布公共配置项
参数名 | 是否必填 | 描述 | 样例 |
TSF公共配置项名称 | 是 | 最长60个字符,只能包含字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
TSF公共配置项版本 | 是 | 只能包含小写字母、数字及分隔符("-","."),且必须以小写字母或数字开头、以小写字母或数字结尾,中间不能有连续的"-"或"." | 1.0.0 |
TSF命名空间名称 | 是 | 发布配置的TSF命名空间名称 | tsf-demo |
发布描述 | 否 | TSF应用配置项发布描述 | config1 |
9. TSF 创建容器部署组
参数名 | 是否必填 | 描述 | 样例 |
TSF集群名称 | 是 | 部署组所属集群名称 | tsf-demo |
部署组所属命名空间名称 | 是 | 部署组所属命名空间名称 | tsf-demo |
部署组关联的应用名称 | 是 | 部署组关联应用名称 | tsf-demo |
部署组名称 | 是 | 部署组名称,最长60个字符,只能包含字母、数字及分隔符(“-”),且必须以字母开头,数字或字母结尾 | tsf-demo |
部署组备注 | 否 | 部署组备注 | group1 |
实例数量 | 是 | 实例数量 | 2 |
网络访问类型 | 是 | 0:公网 1:集群内访问 2:NodePort | 0 |
端口映射,Array Of ProtocolPort | 是 | 端口映射,Array Of ProtocolPort | [{"Protocol":"TCP","Port":18081,"TargetPort":18081}] |
初始分配的 CPU 核数 | 否 | 初始分配的 CPU 核数,对应 K8S request,request和limit两者至少填一个 | 0.5 |
最大分配 CPU 核数 | 否 | 最大分配 CPU 核数,对应 K8S limit,request和limit两者至少填一个 | 0.5 |
初始分配的内存 MiB 数 | 否 | 初始分配的内存 MiB 数,对应 K8S request,request和limit两者至少填一个 | 1024 |
最大分配内存 MiB 数 | 否 | 最大分配内存 MiB 数,对应 K8S limit,request和limit两者至少填一个 | 1024 |
10. TSF 部署容器应用
参数名 | 是否必填 | 描述 | 样例 |
部署组名称 | 是 | TSF容器部署组名称 | tsf-demo |
部署组所属集群名称 | 是 | 部署组所属集群名称 | tsf-demo |
镜像版本名称 | 是 | 镜像版本名称,如v1 | v1 |
镜像名 | 是 | 镜像名称,如tsf_123456789/nginx | tsf_123456789/nginx |
实例数量 | 是 | 部署组实例数量, 正整数 | 1 |
部署组jvm启动参数 | 否 | jvm参数,如"-Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m" | -Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m |
初始分配的 CPU 核数 | 否 | 初始分配的 CPU 核数,对应 K8S request | 0.5 |
最大分配 CPU 核数 | 否 | 最大分配 CPU 核数,对应 K8S limit | 0.5 |
初始分配的内存 MiB 数 | 否 | 初始分配的内存 MiB 数,对应 K8S request | 1024 |
最大分配内存 MiB 数 | 否 | 最大分配内存 MiB 数,对应 K8S limit | 1024 |
部署组应用运行的环境变量 | 否 | [{"Value":" -Xloggc:/data/tsf_apm/monitor/jvm-metrics/gclog.log ","Name":"JAVA_TOOL_OPTIONS"}] | [{"Value":" -Xloggc:/data/tsf_apm/monitor/jvm-metrics/gclog.log ","Name":"JAVA_TOOL_OPTIONS"}] |
部署方式 | 否 | 部署方式,0表示快速更新,1表示滚动更新。默认为 0 | 0 |
是否不立即启动 | 否 | 是否不立即启动 | false |
kubernetes滚动更新策略的MaxSurge参数 | 否 | 和期望ready的副本数比,超过期望副本数最大比例(或最大值),这个值调的越大,副本更新速度越快。 | 25% |
kubernetes滚动更新策略的MaxUnavailable参数 | 否 | 和期望ready的副本数比,不可用副本数最大比例(或最大值),这个值越小,越能保证服务稳定,更新越平滑; | 25% |
滚动更新必填,更新间隔(秒) | 否 | 滚动更新必填,更新间隔(秒) | 1 |
不创建 k8s service | 否 | 不创建 k8s service | false |
网络访问类型 | 是 | 0:公网 1:集群内访问 2:NodePort 3:VPC内网访问 | 0 |
端口映射 | 是 | 端口映射 | [{"Protocol":"TCP","Port":18081,"TargetPort":18081}] |
子网ID | 否 | VPC子网ID | subnet-ad960efo |
service 是否为 headless 类型 | 否 | Headless Service 仅支持在创建时可选,创建后不可变更访问方式 | false |
是否删除之前创建的Service | 否 | 当为 true 且 DisableService 也为 true 时,会删除之前创建的 service,请小心使用 | false |
是否开启SessionAffinity | 否 | 是否基于来源IP做会话保持 | false |
是否基于来源IP做会话保持时间 | 否 | 是否基于来源IP做会话保持时间 | 2 |
节点调度策略 | 否 | NONE表示不使用调度策略;CROSS_AZ表示尽可能跨可用区部署 | CROSS_AZ |
存活健康检查 | 否 | json string(参考https://cloud.tencent.com/document/api/649/36099#HealthCheckSettings) | |
就绪健康检查 | 否 | json string(参考https://cloud.tencent.com/document/api/649/36099#HealthCheckSettings) | |
镜像server | 否 | 镜像仓库地址,如ccr.ccs.tencentyun.com | ccr.ccs.tencentyun.com |
镜像仓库类型 | 否 | 镜像仓库类型,tcr或者personal | tcr |
数据卷信息 | 否 | 数据卷信息,json string, 解析后为Array of VolumeInfo(https://cloud.tencent.com/document/api/649/36099#VolumeInfo) | |
数据卷挂载点信息 | 否 | json string, 解析后为Array of VolumeMountInfo(https://cloud.tencent.com/document/api/649/36099#VolumeMountInfo) | |
是否清除数据卷信息 | 否 | 是否清除数据卷信息,默认false | false |
是否部署 agent 容器 | 否 | 是否部署 agent 容器 | true |
agent 容器分配的 CPU 核数 | 否 | 初始分配的 CPU 核数,对应 K8S request | 0.1 |
agent 容器最大的 CPU 核数 | 否 | 最大分配 CPU 核数,对应 K8S limit | 0.1 |
agent 容器分配的内存 MiB 数 | 否 | 初始分配的内存 MiB 数,对应 K8S request | 125 |
agent 容器最大的内存 MiB 数 | 否 | 最大分配内存 MiB 数,对应 K8S limit | 400 |
istio proxy 容器分配的 CPU 核数 | 否 | 初始分配的 CPU 核数,对应 K8S request | 0.1 |
最大分配 CPU 核数,对应 K8S limit | 否 | 最大分配 CPU 核数,对应 K8S limit | 0.1 |
istio proxy 容器分配的内存 MiB 数 | 否 | 初始分配的内存 MiB 数,对应 K8S request | 125 |
istio proxy 容器最大的内存 MiB 数 | 否 | 最大分配内存 MiB 数,对应 K8S limit | 400 |
11. TSF创建部署组
参数名 | 是否必填 | 描述 | 样例 |
TSF集群名称 | 是 | 部署组所属集群名称 | tsf-demo |
部署组所属命名空间名称 | 是 | 部署组所属命名空间名称 | tsf-demo |
部署组关联的应用名称 | 是 | 部署组关联应用名称 | tsf-demo |
部署组名称 | 是 | 部署组名称,最长60个字符,只能包含字母、数字及分隔符(“-”),且必须以字母开头,数字或字母结尾 | tsf-demo |
部署组描述 | 否 | 部署组备注 | group1 |
12. TSF 部署虚机应用
参数名 | 是否必填 | 描述 | 样例 |
部署组名称 | 是 | TSF虚机部署组名称 | tsf-demo |
程序包名称 | 是 | 需要部署的程序包名称 | |
程序包版本 | 是 | 需要部署的程序包 | 1.0.0 |
集群名称 | 是 | 部署组所属集群名称 | tsf-demo |
部署应用描述信息 | 否 | 部署应用描述信息 | deploy1 |
JDK名称 | 否 | konaJDK或openJDK | openJDK |
JDK版本 | 否 | 8或11 (openJDK只支持8) | 8 |
部署组启动参数 | 否 | TSF部署组启动参数,如"-Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m" | -Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m |
部署方式 | 是 | 部署方式,0表示快速更新,1表示滚动更新 | 0 |
是否启用beta批次 | 否 | beta 批次:是否首次用一个实例来部署新版本,如果部署成功,才会部署后面的批次实例 | false |
滚动发布每个批次的时间间隔 | 否 | 滚动发布每个批次的时间间隔,单位:分钟 | 1 |
是否开启健康检查 | 否 | 是否开启健康检查 | false |
存活健康检查 | 否 | json string(参考https://cloud.tencent.com/document/api/649/36099#HealthCheckSettings) | |
就绪健康检查 | 否 | json string(参考https://cloud.tencent.com/document/api/649/36099#HealthCheckSettings) | |
是否允许强制启动 | 否 | 开启强制启动则实例忽视consul服务注册报错信息正常启动 | false |
启动脚本 base64编码 | 否 | 启动脚本 base64编码 | |
停止脚本 base64编码 | 否 | 停止脚本 base64编码 | |
是否进行增量部署 | 否 | 是否进行增量部署,默认为false,全量更新 | false |
13. TSF 添加实例
参数名 | 是否必填 | 描述 | 样例 |
TSF部署组名称 | 是 | TSF虚拟机集群部署组名称 | tsf-demo |
扩容的机器实例ID列表 | 是 | 部署组要添加的虚拟机实例ID列表,json字符串,如["ins-abc","ins-def"] | ["ins-abc","ins-def"] |
集群名称 | 是 | 集群名称 | tsf-demo |
14. TSF 创建泳道
参数名 | 是否必填 | 描述 | 样例 |
泳道名称 | 是 | 最长60个字符,只能包含字母、数字及分隔符(“-”、“_”),且不能以分隔符开头或结尾 | tsf-demo |
泳道部署组信息 | 是 | 格式为Array of LaneGroup,例如[{"GroupId":"group-xxxxx","Entrance":true}] | [{"GroupId":"group-xxxxx","Entrance":true}] |
泳道备注 | 否 | 泳道备注 | lane1 |
15. TSF 创建泳道规则
参数名 | 是否必填 | 描述 | 样例 |
泳道ID | 是 | 泳道ID | lane-all4popx |
泳道规则名称 | 是 | 不能为空。最长60个字符 | tsf-demo |
泳道规则标签列表 | 是 | 格式为Array of LaneRuleTag,例如[{"TagName":"test","TagOperator":"EQUAL","TagValue":"1"}] | [{"TagName":"test","TagOperator":"EQUAL","TagValue":"1"}] |
泳道规则标签关系 | 是 | 泳道规则标签关系, 与:RELEATION_AND,或:RELEATION_OR | RELEATION_AND |
泳道规则备注 | 否 | 泳道规则备注 | laneRule1 |
16. TSF 启用泳道规则
参数名 | 是否必填 | 描述 | 样例 |
TSF泳道规则ID | 是 | TSF泳道规则ID | lane-r-yd9om5mx |