有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
文档中心 > 微服务平台 TSF > 最佳实践 > TSF 基于 CODING 自动化部署插件

操作场景

TSF 应用可以使用 CODING 流水线进行部署,通过流水线及插件一键创建应用、上传文件、创建部署组、导入服务器、部署应用。
基于 CODING 在 TSF 平台做自动化部署主要分为两部分内容,第一部分是代码仓库接入 CODING 并结合自身代码的编译流程实现自动化编译(CI),第二部分是将编译得出的代码包或者镜像通过 TSF 插件部署到TSF平台中(CD)。

前置条件

参见 CODING 快速开始,使用 CODING 进行自动化编译(CI)。

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:xxx
SECRET_KEY:xxx
REGION:ap-guangzhou
TSF_ENV:tsf_public
API_URL:tsf.tencentcloudapi.com
API_HOST:tsf.tencentcloudapi.com
ACCOUNT_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