六、TSF平台管理能力

六、TSF平台管理能力

前面主要介绍了TSF基本概念,微服务的开发,使用TSF与微服务框架集成;其中TSF与微服务框架的集成,我们主要介绍了TSF与Spring Cloud,Dubbo,Service Mesh框架的集成;整个集成步骤我们也看到了,实际上是非常简单的,简单可以归纳为2个方面:一是依赖包,另一个是配置,通过这二方面可以快速的把Spring Cloud,Dubbo,Service Mesh应用迁移到TSF平台中。

在前面的内容中实际上我们还留下一个问题:Spring Cloud,Dubbo,Service Mesh应用改造 成了TSF应用以后要如何部署到TSF平台之中呢?要实现部署功能毫无疑问需要用到TSF平台的管 理能力,所以接下来我们先看一下TSF平台的管理能力,换句话说就是如何使用TSF平台。

学习目标

通过本文的学习,您将可以:

  • 掌握TSF权限的管理
  • 了解如何使用TSF进行资源的隔离与管理
  • 掌握TSF资源管理基础概念
  • 学会使用部署组
  • 学会使用应用程序包的管理
  • 了解应用程序的启动参数
  • 学会使用服务编排

第一章 TSF权限管理

在真正学习TSF控制台使用之前我们先来看一下几个重要的概念,首先我们来看一下TSF权限管理的基础概念。

1.1 TSF权限概述
  • 为满足企业客户不同成员使用 TSF 平台的接口操作权限、资源操作权限的 需求,当前腾讯微服务平台支持主账号为子账号灵活分配不同角色、不同 数据集的权限。

  • 当前 TSF 可以支持以下几种场景的使用:

    • 为子账号或协作者配置全部资源的全读写策略。

    • 为子账号或协作者配置全部资源的部分操作权限,如可以为部分用户配置应用、微服 务、配置的全读写策略,以及集群、命名空间的只读策略。

    • 为子账号和协作者配置某些资源(一个或多个)的读或写权限,如可以为不同的子账 号配置不同命名空间、不同应用的不可见、只读、全读写权限。

1.1.1 TSF预设策略
  • TSF 提供了 QcloudTSFFullAccess 和 QcloudTSFReadOnlyAccess 两条预设策略。

image-20211130163231826

  • 操作步骤:

    • 在子账号和协作者使用 TSF 平台之前,需要进行以下几个步骤:
      1. 按照 准备工作 中,“子账号和协作者使用 TSF”部分文档进行操作,这一步保证了用户使 用 TSF 时,TSF 访问 VPC、 TKE 等云资源的服务角色权限。
      2. 按照 角色管理、数据集管理、授权管理 三个文档进行操作,配置子账号和协作者使用 TSF 平台时操作和数据集权限。
    • 预设策略只限制用户操作,没有对数据进行过滤。当用户对数据过滤没有需求时,可以只绑定预设策略即可,无需进行上述使用步骤中的步骤2(步骤1还需要进行)。
1.2 TSF角色管理
  • 角色管理是配置子账号与协作者使用 TSF 的操作权限。当前 TSF 平台采取白名单机制,如子账号和协作者没有被授权任何角色,则无法使用 TSF 平台。

  • 角色管理的操作步骤为:

    image-20211130164753811

1.2.1 新建角色image-20211130165203594
  • 新增角色:
    • 登录 TSF 控制台。
    • 在左侧导航栏,单击【管理中心】下的【角色管理】。
    • 在角色管理页面,单击页面左上角的【新建角色】。
    • 在新建角色页面,填写角色名称并选择角色权限。
    • 单击【提交】,完成角色创建。
  • 说明:
    • 角色权限中的通用权限包含的 TSF 访问概览页面、监控等页面的基本操作,建议对所有用户授权。
    • 日志告警、服务告警、部署组告警等告警策略的配置在云监控页面配置,不受 TSF 权限管控。
    • 镜像仓库列表不受 TSF 权限管控。
1.2.2 编辑角色

image-20211130165431277

1.2.3 删除角色
  • 角色管理的操作步骤为:

    image-20211130165540643

  • 删除角色

    • 登录 TSF 控制台。
    • 在左侧导航栏,单击【管理中心】下的【角色管理】。
    • 将鼠标悬停在目标角色上,单击角色名称右侧的【删除】即可删除该角色。
  • 说明:

    • 当已经给某用户绑定角色和策略组后,删除角色会导致策略不可用,请谨慎删除。
1.3 TSF授权管理
  • 授权管理的操作步骤

    image-20211130165654025

  • 操作步骤:

    • 登录 TSF 控制台。

    • 在左侧导航栏,单击【管理中心】下的【角色管理】。

    • 进行策略配置

      image-20211130165907513

    • 单击【策略配置】,进入策略生成器页面。

    • 配置策略名称和权限。

      • 策略名称:支持英文字母、数字、以及符号“+ = , . @ _ -”,限制128个字符以内。
      • 权限配置:选择对应角色与资源组。示例:当用户希望对集群1配置全读写权限,对集群2 配置只读策略时,可以将包含全读写集群的角色与包含集群1的数据集关联作为权限配置的 第一条数据,将包含集群只读的角色与包含集群2的数据集关联作为第二条数据。
    • 单击【前往 CAM 进行授权】,并在访问管理产品页面单击【创建策略】

      • 注意:为避免策略不生效,建议不要在此处修改策略脚本。
    • 关联子用户

      • 将生成的策略 关联用户/用户组。
      • 单击【确定】,完成授权管理。

第二章 TSF资源管理基础

在真正学习TSF控制台使用之前我们先来看一下几个重要的概念,首先我们来看一下TSF资源管理基础概念。

2.1 TSF资源管理的三个维度

image-20211130170337982

  • 首先我们来看一下上面的这个图,如果掌握了这个图,那对于TSF平台的基本使用可以说已经入门了;图中涉及到TSF的几个重要的概念:集群,命名空间,部署组。

  • 集群:集群是指云资源管理的集合,包含了运行应用的云主机等资源

  • 命名空间:命名空间是对一组资源和对象的抽象集合。用于逻辑隔离资源

  • 部署组:部署组是执行应用批量部署的逻辑概念。一个部署组内包括多个实例,每个实例上运行相同的应用程序。同一个部署组上可以运行一个或者多个应用,但其中的每个实例应用相同。

2.2 TSF下资源使用说明
  • TSF 下资源使用说明

    • 集群:分为虚拟机集群、容器集群
    • 命名空间:不同集群下面相同命名空间可以相互调用,不同命名空间下逻辑隔离
    • 部署组:部署组属于集群下,是多个实例的集合
  • 公有云下,TSF 资源使用说明

    • 云主机导入集群需要保证云主机和集群在相同的VPC内。
    • 使用虚拟机部署应用时,一台云主机只能部署一个应用,不能共用
    • 使用容器部署应用时,应用部署在容器的pod上面,可以实现一台虚拟机部署多个应用
  • 公有云通常指第三方提供商用户能够使用的云,公有云一般可通过 Internet 使用,可能是免费或成本低廉的。公有云的最大意义是能够以低廉的价格,提供有吸引力的服务给最终用户,创造新的业务价值,公有云作为一个支撑平台,还能够整合上游的服务(如增值业务,广告)提供者和 下游最终用户,打造新的价值链和生态系统。它使客户能够访问和共享基本的计算机基础设施, 其中包括硬件、存储和带宽等资源。

  • 私有云(Private Clouds)是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。

  • 混合云是公有云和私有云两种服务方式的结合。由于安全和控制原因,并非所有的企业信息都能放置在公有云上,这样大部分已经应用云计算的企业将会使用混合云模式。

  • VPC:Virtual Private Cloud虚拟私有云, 是存在于共享或公用云中的私有云。虚拟私有云(VPC) 是一个公共云计算资源的动态配置池,需要使用加密协议、隧道协议和其他安全程序,在民营企业和云服务提供商之间传输数据。一个VPC基本上把提供商的多租户架构变成单租户架构。虚拟私有云在概念上类似于虚拟专用网(VPN)。一个VPN可以被用来在公共网,比如互联网上通过专用隧道发送数据,该隧道不能输入未适当加密的数据。

2.3 TSF下资源最佳实践
  • 使用命名空间隔离不同环境:开发环境、测试环境及准生产环境等

  • 同一个命名空间支持虚拟机集群和容器集群相互调用

    image-20211130171146411

  • 前面已经介绍了TSF的资源关系,在实际的开发过程中一般都会涉及到多个环境,比如:开发环境,测试环境,生产环境;这些不同的环境在TSF中可以通过命名空间来进行隔离,这也是TSF下资源的最佳实践之一

  • 在TSF中集群分为2大类:虚拟机集群,容器集群,在同一个命名空间中是支持虚拟机和容器应用的相互调用。

2.4 TSF应用部署的三种类型
  • TSF 应用部署分为三种类型

    • 虚拟机部署:通过 JAR、zip 包等部署在云主机 CVM 上的应用。

    • 容器应用部署:通过镜像部署在 Docker 容器中的应用。

    • Serverless部署

      image-20211130171522019

  • 在TSF中,应用分为二大类:

    • 虚拟机应用:通过虚拟机部署的应用就是虚拟机应用
    • 容器应用:通过容器部署的应用就是容器应用
  • 三种部署方式的对比如下:

    image-20211130171655576

  • 上图是虚拟机,容器和Serverless三种部署方式的区别的基本区别。

2.5 TSF中应用和服务的基本概念
  • 应用与服务:

    • TSF应用是可部署的软件实体,包含一个或一组容器或进程。

    • TSF服务是微服务平台管理的基本单元。

      image-20211130171816954

  • TSF上有应用和服务两个概念:

    • TSF应用管理:是用户业务上线之前的程序包、配置、部署组
    • TSF服务:偏向管理用户业务上线之后的线上管控
  • 应用与服务没有数量上的明确关系

  • 应用名称是用户在控制台上自定义的

  • 服务名称在程序包、镜像的中代码中定义

第三章 TSF部署组

介绍完TSF的集群,命名空间,TSF应用与TSF服务的基本概念以及区别之后,我们接下来看一下 TSF部署组的内容。

3.1 什么是TSF的部署组
  • 部署组:

    • 概念:部署组是执行应用批量部署的逻辑概念。一个部署组内包括多个应用实例,每个应用实例上运行相同的应用程序

    • 部署组的操作:创建部署组、删除部署组、部署应用、启动应用、应用扩容等。

    • 部署组类型:

      • 按照部署组关联的应用类型,部署组分为虚拟机应用部署组和容器应用部署组
      • 虚拟机应用部署组:使用云主机 CVM 来部署应用
      • 容器应用部署组:使用 Docker 容器来部署应用。Docker 应用部署时,将在 CVM 上创建多 个 Docker 容器实例。
    • 部署组对比

      image-20211130172309739

  • 虚拟机应用部署组,容器应用部署组的对不如上图:

  • 在这一部分中主要介绍使用虚拟机应用以及虚拟机部署组,在下一部分的内容中我们再介绍容器应用以及容器部署组

  • 官网文档地址:https://cloud.tencent.com/document/product/649/16932

3.2 虚拟机应用部署组
  • 虚拟机应用部署组指的就是部署组中部署的是虚拟机应用。
  • 虚拟机部署组的操作包括两种:
    • 基本操作:部署组的创建和删除。
    • 应用生命周期管理相关操作:添加实例(扩容)、下线实例(缩容)、部署应用、启 动应用、停止应用。
3.2.1 部署组的创建和删除

image-20211130174657894

  • 创建部署组(如上图一)
    • 登录 TSF 控制台。
    • 单击左侧导航栏中的 部署组。
    • 选择部署组所属集群和所属命名空间。
    • 单击部署组列表上方的【新建部署组】按钮。
    • 设置部署组相关信息。
    • 部署组名称:部署组的名称,不超过 60 个字符。
    • 描述:部署组的描述,不超过 200 个字符。
    • 数据填写完毕后点击保存创建部署组。
  • 删除部署组(如上图二):
  • 在部署组的右侧操作项中点击“删除”即可完成部署组的删除操作。
3.2.2 部署组中应用生命周期管理相关操作

image-20211130174910683

  • 添加实例:将 CVM 云服务器添加到部署组中,如果部署组此时已经关联了程序包,将执行部署命令。
  • 下线实例:停止 CVM 云服务器上的应用,然后将实例从部署组中移除。
  • 部署应用:将应用部署到 CVM 云服务器上,并执行启动命令。
  • 启动应用:当应用处于停止状态时可以启动应用。
  • 停止应用:当应用处于运行中状态时可以停止应用。

第四章 TSF应用程序包的管理

通过前面的学习我们已经了解了集群,名称空间,应用,部署组的基本概念以及关系,那应用是 如何从本地到部署组的呢?这就需要使用TSF应用程序包的管理功能,接下来我们学习关于TSF应 用程序包的管理功能使用。

4.1 应用程序包的管理
  • 程序包管理功能分为二个部分:
    • 上传程序包:
      • 上传程序包指的是把应用打包后的包(如fatjar)上传到TSF应用仓库中。
    • 删除程序包:
      • 删除程序包指的是把不需要的程序包从TSF应用仓库中删除。
  • 接下来我们看一下应用程序包管理的具体操作。
4.1.1 上传程序包
  • 程序包管理:上传程序包。

    image-20211130175217201

  • 首先登录TSF控制台。

  • 点击TSF左侧菜单栏中的“应用管理”进入应用列表页面

  • 点击需要管理的应用名称(如若没有应用需要新建应用)

  • 进入应用后点击上方的“程序包管理”,如上图所示

  • 点击上传程序包按钮就可以进行程序包的上传操作

4.1.2 删除程序包
  • 程序包管理:删除程序包。

    image-20211130175333054

  • 在应用程序包列表页面可以进行应用程序包的删除功能,如上图所示。

4.1.3 启动脚本说明
  • 虚拟机应用支持的程序包格式:

    • jar: FatJar 格式的程序包
    • tar.gz 、zip : 压缩包中必须包含三个文件:
      • start.sh:启动脚本
      • stop.sh:停止脚本
      • cmdline:检查应用是否存在的信息。TSF Agent 通过 cmdline 的内容来检查进程是否存活 (通过 Linux 命令 ps -ef | grep )。如果不提供 cmdline,在控制台上看到部署组的状态为 已停止 状态,即使应用正在运行。
  • 目前使用云服务器部署的应用支持的程序包格式包括 jar 、tar.gz 和 zip。

    image-20211130175545834

  • 如果应用是fatjar(后缀是jar)格式,不需要添加上面的启动脚本,如果是tar.gz或者zip包格式 必须添以上的三个脚本文件。

  • 其中start.sh脚本内容如下:

    1
    2
    3
    4
    5
    6
    7
    #! /bin/bash
    already_run=`ps -ef|grep "python promotion"|grep -v grep|wc -l`
    if [ ${already_run} -ne 0 ];then
    echo "promotionService already Running!!!! Stop it first"
    exit -1
    fi
    nohup python promotionService.py 8093 &
    • 如上代码是start.sh的启动脚本内容,通俗的讲上述代码就是检测应用是否已经运行,如果已经运行了直接提示“promotion Service already Running!!!! Stop it first“(promotion服务已经运行了,请先停止);如果服务没有运行就直接运行服务。

    • 注意不同的服务名称启动脚本需要做对应修改。

    • stop.sh 停止脚本内容如下

      1
      2
      3
      4
      #!/bin/bash
      pid=`ps -ef|grep "python promotion"|grep -v grep|awk '{print $2}'`
      kill -SIGTERM $pid
      echo "process ${pid} killed"
    • 上述代码是stop.sh停止脚本的代码,意义就是把查找当前服务的pid,然后停止服务。

    • cmdline 检测进程脚本,agent 通过ps -ef | grep ‘cmdline 内容’来检测 进程是否存在

      1
      python promotion
    • 官网文档:https://cloud.tencent.com/document/product/649/30359

    • cmdline 说明:

      • 如果启动应用是 Java 应用,启动脚本中通过java -java xxx.jar来启动应用。在 cmdline 文件中使用完整的 Java 启动命令。例如启动脚本中包含如下启动命令:

        1
        java -Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -jar consumer-demo-0.0.1-SNAPSHOT.jar
      • 当应用启动后,agent 会在服务器上执行ps -ef | grep ‘cmdline 内容’来检查进程是否存在。

第五章 TSF设置应用程序的启动参数

通过设置集群,命名空间,部署组,应用以后我们就可以使用虚拟机部署应用了,很多时候我们 可能需要设置应用的启动参数(比如jvm 内存大小),那通过TSF如何设置应用程序的启动参数 呢?这就是我们接下来要学习的内容。

5.1 应用程序的启动参数设置
  • 用户可以在部署应用的时候设置应用的启动参数
  • 在部署组列表中点击右侧的“部署应用”可以实现应用的部署功能,我们可以在部署应用的时候 设置应用的启动参数。
  • 实例资源限制说明:
    • 新建容器部署组时可以设置实例数量和每个实例的资源限制。实例的资源限制包括两个指标: CPU 和 内存大小。需要说明的是这里设置的都是 Limit 值,而不是 Request 的值。
    • TSF 会根据 Limit 值,自动设置容器实例的 CPU Request 和 内存 Request,两者的数量关 系如下:Limit = Request * 2
    • 当实例数量 * 资源限制数量 > 集群剩余的资源时,会提示 “资源不足,请导入节点” 的提示语。此时用户需要去集群页面导入云服务器来扩充资源。例如实例数量为 2,实例资源限制是 CPU=0.5核,内存=1G ,而集群剩余资源为 CPU=0.8核,内存=2G 时, 由于 CPU 核数资源不够,会提示资源不足的错误。
  • 参数说明:
    • -Xms:128m 设置jvm的初始堆内存大小为128m
    • -Xmx:512m 设置jvm的最大堆内容大小为512m
  • 官网文档:https://cloud.tencent.com/document/product/649/17683

第六章 TSF服务编排

前面我们已经介绍了使用TSF部署虚拟机应用,那接下来我们看一下TSF的服务编排功能,类似于 Spring Boot项目可以通过https://start.spring.io/网站快速生成模板代码。

6.1 什么是服务编排
  • 什么是服务编排?

    • 为了提高用户开发微服务代码的效率, TSF 提供服务编排功能。服务编排可以实现快速生成基于 TSF 框架的微服务工程源码,帮助业务设计人员快速构建可运行的微服务程序。
  • TSF 引入了服务编排模板的概念用于保存工程信息,方便后续可以基于模板修改工程参数和下载工程源码。

6.2 新建服务编排模板
  • 新建服务编排模板步骤:

    image-20211130180828168

  • 接下来我们来看一下如何使用服务编排功能,首先我们来看一下新建服务编排模块,新建服务编 排的基本步骤如上图所示。

6.2.1 新建模板
6.2.2 填写工程配置和POM配置信息
  • 步骤二:

    • 填写工程配置和 POM 配置信息

      image-20211130181255055

  • POM 配置信息如下:

    • 工程名:Spring Boot 工程名,字母开头,支持大小写字母、数字组成,不超过 24 个字符长 度。
    • 包路径:package 路径,小写字母开头,支持小写字母、数字或小数点组成,不超过 60 个 字符长度。
    • GroupID: pom.xml 文件中的 groupId。
    • Artifact ID: pom.xml 文件中的 artifactId。
    • Name:pom.xml 文件中的 name。
    • Version:pom.xml 文件中的 version。
    • Description:选填,pom.xml 文件中的 description
6.2.3 填写服务基本信息
  • 步骤 三:

    • 填写服务基本信息

      image-20211130181610332

  • 服务基本信息配置:

    • 服务名:对应工程文件中的 spring.application.name。
    • 端口:服务监听端口,仅支持 0-65535。
    • Controller 类名前缀:可填写多个,将会生成多个带有前缀的 Controller 类。
6.2.4 保存或者生成工程
  • 步骤四:

    • 保存或者生成工程

      image-20211130181610332

  • 单击【保存并下载】,保存模板,并下载工程的 zip 文件。或者单击【保存】按钮,仅保存模板, 不执行下载操作

6.3 修改服务编排模板
  • 可修改模板的参数信息

    image-20211130183542782

    • 各具体参数设置参考6.2.2中说明
6.4 删除服务编排模板
  • 单击服务编排模板列表上目标模板右侧的【删除】按钮,确认后即可删除。image-20211130183728533

思考题

  • TSF 中集群,命名空间,部署组的关系是怎么样的?

  • 应用与服务的区别是什么?


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!