微服务平台 TSF 使用 Python 脚本部署应用

这篇说说TSF应用通过Python脚本部署的流程,涵盖虚拟机与容器两类应用的部署准备、参数配置及脚本执行步骤,需先完成Python环境、访问密钥及部署组创建等前提条件。 虚拟机部署:下载脚本并配置密钥、地域,按顺序传入文件路径、应用ID、版本号等参数执行。 容器部署:修改脚本中密钥、Docker命令,安装依赖后传入部署组ID、应用ID及镜像版本执行。

相关产品
微服务平台 TSF 产品页,含版本规格、价格与购买入口。

TSF 应用可以使用 Python 脚本来部署。

一、前提条件

在开始持续集成之前,需要完成下述的准备工作:

1. 保证机器上安装的 Python 不低于 3.0 版本,并已安装 pip Python 包管理工具。

2. 获取腾讯云的 访问密钥(SecretId 和 SecretKey)。

3. 在 TSF 平台创建了部署组。

4. 了解 Python 脚本使用。

二、虚拟机应用部署准备

1. 机器上保证安装的 Python 不低于 3.0 版本,并已安装 pip 等 Python 包管理工具。

2. 从 GitHub仓库 下载虚拟机部署 Python 脚本。

3. 修改脚本中的secret_id 、secret_key 为腾讯云访问密钥,region 为 TSF 服务所在地域。

secret_id = "改为你的 SecretId" secret_key = "改为你的 SecretKey。" region = "改为你的服务所在地域,如 ap-guangzhou"

4. 安装脚本依赖包。

pip install requests cos-python-sdk-v5

5. 准备脚本参数,要严格保证参数顺序。

·path:本地文件路径,可以是针对脚本的相对路径,支持 .tar.gz、.jar、.war、.zip 结尾的文件。

·applicationId:应用 ID。在 TSF 控制台 > 应用管理中,选择目标应用第一列的应用 ID(如application-qab76pxv)。

·pkg_version:程序包版本,最长32个字符,支持 a-z、A-Z、0-9、横杠(-)、下划线(_)。

·appId:用户 APPID。在腾讯云控制台 账号中心 > 账号信息中获取 APPID(如1300555551)。

·group_id:部署组 ID。在 TSF 控制台 > 应用管理 中,单击目标应用 ID,进入详情页,在部署组标签页中获取部署组的 ID(如group-gvk5pbdv)。

·startup_params:启动参数。用户视情况可以自定义。

-Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m

注意:执行的脚本参数中如果版本号不变,脚本会选择 TSF 平台已有的 jar 包进行再次部署。

6. 将以上参数按照顺序整理待用,格式如下:

python2.7.14 upload_virtual_machine_deploy.py ./consumer-demo/target/consumer-demo-1.10.0-RELEASE.jar application-qab76pxv v001 1300555551 group-gvk5pbdv '-Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m'

三、容器应用部署准备

1. 保证机器上能够构建、上传镜像(镜像及 Dockerfile 编写参见 制作容器镜像,仓库使用请参见 镜像管理)。保证 Python 不低于3.0版本,并已安装 pip 等 Python 包管理工具。

2. 复制下述名为 upload_container_deploy.py 的 Python 脚本。

# -*- coding: utf-8 -*-# tencentcloud-sdk-pythonfrom tencentcloud.common import credentialfrom tencentcloud.common.profile.client_profile import ClientProfilefrom tencentcloud.common.profile.http_profile import HttpProfilefrom tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKExceptionfrom tencentcloud.tsf.v20180326 import tsf_client, modelsimport sysimport jsonimport osimport time# 密钥参数,替换为用户的secret_id和secret_key,建议使用环境变量管理secret_id = "#"secret_key = "#"# docker build 命令docker_build_command = "#"# docker push 命令docker_push_command = "#"# 地域region = "ap-guangzhou"endpoint = "tsf.tencentcloudapi.com"client = Nonedef docker_build(): os.system(docker_build_command)def docker_push(): os.system(docker_push_command)def init_client(): try: cred = credential.Credential(secret_id, secret_key) httpProfile = HttpProfile() httpProfile.endpoint = endpoint clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile client = tsf_client.TsfClient(cred, region, clientProfile) return client except TencentCloudSDKException as err: print(err) raise TencentCloudSDKExceptiondef describe_container_group_detail(group_id): req = models.DescribeContainerGroupDetailRequest() params = '{"GroupId":"' + group_id + '"}' req.from_json_string(params) resp = client.DescribeContainerGroupDetail(req) print(resp.to_json_string()) return respdef deploy_container_application(group_id, application_id, tag_name): params = dict(GroupId=group_id, ApplicationId=application_id, TagName=tag_name, IncrementalDeployment=True) req = models.DeployContainerApplicationRequest() req.from_json_string(json.dumps(params)) resp = client.DeployContainerApplication(req) print(resp.to_json_string())def get_tag_name(): tag_name = "" try: docker_build_tag_name = docker_build_command[docker_build_command. rfind(":") + 1:] docker_push_tag_name = docker_push_command[docker_push_command. rfind(":") + 1:] if docker_build_tag_name == docker_push_tag_name: tag_name = docker_build_tag_name else: raise ValueError('Docker build tag name 和 push tag name 不一致') except Exception: raise ValueError('Docker tag name 异常') return tag_nameif __name__ == "__main__": # 部署组ID group_id = sys.argv[1] # 应用ID application_id = sys.argv[2] # 镜像版本名称,如v1 tag_name = sys.argv[3] if len(sys.argv) > 3 else get_tag_name() docker_build() docker_push() # 等待镜像上传完成,可按需调整 time.sleep(10) client = init_client() deploy_container_application(group_id, application_id, tag_name)

3. 修改脚本中的 secret_id 、secret_key 为腾讯云访问密钥,region 为 TSF 服务所在地域。修改脚本中的 docker_build_command、docker_push_command 为实际的 docker build 和 push 命令。

secret_id = "改为Access Key ID"secret_key = "改为Access Key Secret。"docker_build_command = "改为 docker build 命令"docker_push_command = "改为 docker push 命令"region = "改为你的服务所在地域,如 ap-guangzhou"

4. 安装脚本依赖包。

pip3 install tencentcloud-sdk-python

5. 准备脚本参数,要严格保证参数顺序。

·group_id:部署组 ID。在 TSF 控制台 > 应用管理中,单击目标应用 ID,进入详情页,在部署组标签页中获取部署组的 ID(如group-zvw397wa)。

·application_id:应用 ID。在 TSF 控制台 > 应用管理中,单击目标应用 ID,进入详情页,在部署组标签页中获取部署组所属应用的 ID(如application-ymn61ag1)。

·tag_name:镜像版本名称,如v1。

注意:目前容器应用部署脚本使用 group_id、 application_id 和 tag_name 作为参数进行增量部署更新镜像版本,但实际上用户可以修改脚本,将其他字段(如 JVM 启动参数 JvmOpts 等)作为增量部署参数,各字段含义参见 容器应用部署 API。

6. 将以上参数按照顺序整理,并且加入第一步中用户自己的 docker build 、push 命令待用,格式如下:

python3 upload_container_deploy.py group-zvw397wa application-ymn61ag1 v1

注意:docker 相关命令必须按照 制作容器镜像 和 镜像管理 调整为用户自己的账号和应用名。

赞 (0)
上一篇 4天前
下一篇 4天前