文档首页/ 应用管理与运维平台 ServiceStage/ 用户指南/ 组件管理/ 创建和部署组件/ 使用基于YAML配置的容器部署方式创建组件
更新时间:2025-08-26 GMT+08:00

使用基于YAML配置的容器部署方式创建组件

同一个项目下,ServiceStage可支持最多创建15,000个组件。

本章节指导您使用容器部署方式基于YAML配置创建组件、保存组件草稿和部署组件,可以满足通过K8s部署模板灵活部署组件的需求,适用于对CCE有深度了解的用户。

草稿是指组件处于创建过程中,尚未完成参数配置时提前保存,防止已配置参数因为关闭页面等因素丢失。在组件创建过程中,您可以随时单击“保存为草稿”,防止组件参数配置丢失。

前提条件

  • 只能在应用下新增组件,需要先创建应用,请参考创建应用
  • 组件需要部署在指定环境下,需要先创建容器部署方式支持的环境并纳管资源。
  • 需要根据组织管理组件构建生成的镜像,需要先创建组织,请参考创建组织
  • 需要根据命名空间隔离构建数据和组件实例,需要先为环境下的CCE集群绑定命名空间,请参考管理命名空间
  • 如果您基于“源码仓库”创建组件,那么您首先需要创建仓库授权,请参考创建仓库授权
  • 如果您基于软件包创建组件:
    • 将软件包上传至SWR软件仓库,请参考上传软件包

      如果禁用了PKIToken,则不支持使用SWR软件仓库。

    • 将软件包上传至OBS对象存储中,请参考流式上传(PUT上传)
    • 如果包类型为软件包且需要使用例如JFrog(制品仓库)作为软件包存储仓库,支持HTTP/HTTPS协议的自定义文件地址下载。您需要提前将软件包上传至对应的自定义文件地址下。

    如果上传软件包失败,请参考如何解决上传软件包失败的问题?

  • 如果您基于镜像包创建组件,请参考组件来源说明准备镜像。

使用容器部署方式基于YAML配置创建并部署组件

  1. 登录ServiceStage控制台
  2. 根据您的实际业务需要选择组件创建方式。

    • 从零开始创建组件,请执行3
    • 基于组件草稿创建组件,请执行4

  3. 从零开始创建组件,请执行以下操作。

    1. 选择以下任意方式进入“创建组件”页面:
      • 选择组件管理 > 新增组件 > 新建组件
      • “应用管理”页面,选择待创建部署组件的应用,在“操作”列选择更多 > 新建组件
      • “应用管理”页面,单击待创建部署组件的应用名称,进入“应用概览”页面,选择新增组件 > 新建组件
    2. 执行5

  4. 基于组件草稿创建组件,请执行以下操作。

    1. 选择以下任意方式进入“创建组件”页面:
      • “应用管理”页面,单击组件草稿所在应用名称,进入“应用概览”页面。单击组件列表中“状态”“草稿”的待操作组件名称。
      • “组件管理”页面,单击“状态”“草稿”的待操作组件名称。
    2. 执行5

  5. “基本信息”区域,参考下表设置组件基本信息,其中带“*”标志的参数为必填参数。

    参数

    说明

    *组件名称

    组件的名称,组件创建并部署后不支持修改。

    长度2到64个字符,可以包含英文字母、数字、下划线(_)或中划线(-),以英文字母开头、英文字母或者数字结尾。

    • 不同应用下的同名组件可以部署在同一个环境下。
    • 同一个应用下的同名组件可以部署在同一个高可用环境下的不同CCE集群。
    • 同一个应用下的同名组件可以部署在不同环境下。

    *组件版本

    组件版本号,支持自动生成和自定义版本号。

    • 自动生成版本号:单击“自动生成”,默认以您单击“自动生成”时的时间来生成版本号,格式为yyyy.mmdd.hhmms,s取时间戳中秒数的个位值。例如:时间戳为2022.0803.104321,则版本号为2022.0803.10431。
    • 自定义版本号:输入格式为A.B.C或者A.B.C.D,A、B、C、D为自然数。例如,1.0.0或者1.0.0.0。

    *所属应用

    组件所属应用。

    *所属环境

    选择“Kubernetes”或者“虚拟机+Kubernetes”类型的组件部署环境。

    环境类型,请参考环境概述

    *选择集群

    “所属环境”为高可用环境,用于选择组件部署和运行的CCE集群。

    *命名空间

    选择组件实例所在容器命名空间,用于隔离组件实例。关于命名空间,请参考管理命名空间

    *部署方式

    选择组件的部署方式为“容器部署”

    当选择的“所属环境”“虚拟机+Kubernetes”类型时需设置。组件部署方式,请参考组件部署方式说明

    *工作负载类型

    工作负载是在Kubernetes上运行的应用程序。无论您的工作负载是单个组件还是协同工作的多个组件,您都可以在Kubernetes上的一组Pod中运行它。在Kubernetes中,工作负载是对一组Pod的抽象模型,用于描述业务的运行载体。您可以根据实际业务需要选择以下任意一种工作负载类型:

    • “无状态”:在运行中始终不保存任何数据或状态的工作负载称为无状态工作负载(Deployment)。典型场景如nginx。
    • “有状态”:在运行过程中会保存数据或状态的工作负载称为有状态工作负载(Statefulset)。典型场景如MySQL,它需要存储产生的新数据。
    • “守护进程集”:守护进程集(DaemonSet)在集群的每个节点上运行一个Pod,且保证只有一个Pod,非常适合一些系统层面的应用,例如日志收集、资源监控等,这类应用需要每个节点都运行,且不需要太多实例,一个比较好的例子就是Kubernetes的kube-proxy。守护进程集与节点相关,如果节点异常,也不会在其他节点重新创建。
    • “普通任务”:普通任务(Job)是一次性运行的短任务,部署完成后即可执行。正常退出(exit 0)后,任务即执行完成。普通任务是用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(Deployment、Statefulset)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出。典型场景如数据库迁移、批量计算、CI/CD 流水线任务。

    *工作负载名称

    工作负载名称默认由系统自动生成,也支持自定义。

    工作负载默认名称由您输入的“组件名称”、选择的“所属环境”名称以及系统生成的6位随机字符串组成,长度不超过52个字符。

    • 当您输入的“组件名称”长度不超过45个字符时,工作负载默认名称为:
      组件名称全部字符-所属环境名称全部或部分字符-系统生成的6位随机字符串

      其中,工作负载默认名称中的下划线(_)会被替换为中划线(-),名称中的大写字母会被转换为对应的小写字母。

      例如,输入的组件名称为Com_calc,选择的所属环境名称为env-cce,则工作负载默认名称示例如下:

      com-calc-env-cce-1uw8g0
    • 当您输入的“组件名称”长度超过了45个字符时,工作负载默认名称为:
      组件名称的前45个字符-系统生成的6位随机字符串

      其中,工作负载默认名称中的下划线(_)会被替换为中划线(-),名称中的大写字母会被转换为对应的小写字母。

      例如,输入的组件名称为C_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,则工作负载默认名称示例如下:

      c-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-1uw8g0

    您也可以自定义工作负载名称。

    • “工作负载类型”选择“有状态”:请输入长度为1到52个字符的字符串,可以包含小写英文字母、数字或中划线(-),并以小写英文字母开头、小写英文字母或数字结尾。
    • “工作负载类型”选择“无状态”:请输入长度为1到63个字符的字符串,可以包含小写英文字母、数字或中划线(-),并以小写英文字母开头、小写英文字母或数字结尾。
    • “工作负载类型”选择“守护进程集”:请输入长度为1到63个字符的字符串,可以包含小写英文字母、数字或中划线(-),并以小写英文字母开头、小写英文字母或数字结尾。
    • “工作负载类型”选择“普通任务”:请输入长度为1到63个字符的字符串,可以包含小写英文字母、数字或中划线(-),并以小写英文字母开头、小写英文字母或数字结尾。

    组件创建并部署完成后,不再支持修改工作负载的名称。

    标签

    ServiceStage支持为组件添加key/value键值对类型的标签对组件进行管理和选择,例如用于设置组件实例调度策略。同一个组件下最多可以添加20个标签。

    如果您的组织已经设定ServiceStage服务的相关标签策略,则需按照标签策略规则添加标签。标签如果不符合标签策略的规则,则可能会导致创建环境失败,请联系组织管理员了解标签策略详情。

    1. 单击“添加标签”
    2. “添加标签”对话框,单击“新增标签”
    3. 输入key值及其对应的value值。

      key的取值不能是系统内置的app、casid或version。

      • key值:长度1到63个字符,只能包含数字、英文字母、下划线(_)、中划线(-)或点(.),只能以英文字母或数字开头、结尾。
      • value值:长度0到63个字符,只能包含数字、英文字母、下划线(_)、中划线(-)或点(.),只能以英文字母或数字开头、结尾。

      如果您需要使用同一标签标识多种资源,即所有资源均可在标签输入框下拉选择同一标签,建议在TMS中创建预定义标签

    4. 单击“确定”

    描述

    组件描述信息。

    1. 单击,在编辑栏输入不超过128个字符的组件描述信息。
    2. 单击,完成组件描述信息设置。

  6. “组件包”区域,参考下表设置组件包参数,其中带“*”标志的参数为必填参数。

    参数

    说明

    *技术栈

    1. 根据组件部署方式,参考表1,选择组件技术栈类型。

      仅支持选择已启用的状态为“启用中”的技术栈。启用技术栈,请参考启用技术栈

      5选择的“所属环境”下绑定的是K8s自定义集群,仅支持Docker技术栈。

    2. “名称”下拉列表,选择技术栈版本。

      仅支持选择已启用的状态为“启用中”的技术栈版本。启用技术栈版本,请参考启用技术栈版本

    3. 设置“JVM”参数,用于配置Java代码运行时的内存参数大小。技术栈类型选择Java、Tomcat时可设置。

      单击“技术栈配置”,输入JVM参数,例如:

      -Xms256m -Xmx1024m

      多个参数以空格间隔,不填则为空。

    4. 设置“Tomcat配置”参数,用于配置Tomcat请求路径、端口号等参数。技术栈类型选择Tomcat时可设置。
      1. 单击“技术栈配置”,勾选“Tomcat配置”,弹出“Tomcat配置”对话框。
      2. 单击“使用示例模板”,根据业务要求编辑模板文件。

        Tomcat配置,使用默认server.xml配置,上下文路径是“/”,没有指定应用路径。如需自定义应用路径,请参考定制Tomcat Context path

      3. 单击“确定”

    *源码/软件包

    • 选择“源码仓库”,参考创建仓库授权创建授权,设置代码来源。
    • 选择软件包(Jar包、War包、Zip包),则包类型由您选择的技术栈类型决定,具体情况请参考表1

    *上传方式

    包类型为软件包或镜像包时,需选择已上传的软件包或镜像包,上传方式请参考组件来源说明

    • 如果包类型为软件包且需要使用例如JFrog(制品仓库)作为软件包存储仓库,您可以选择“自定义文件地址”上传方式。
      1. 输入软件包所在的HTTP/HTTPS协议的自定义文件地址。
      2. 选择是否开启认证。

        不开启认证,则默认任何用户都可以下载上传到自定义文件地址的软件包。

        单击开启认证,则只有通过认证的用户才能下载上传到自定义文件地址的软件包。“认证方式”支持“用户密码认证”“自定义Header认证”,认证方式及对应的认证参数由您自定义的文件地址所在服务器支持的认证方式决定。

    • 如果包类型是镜像包:
      • 勾选“启用多容器”,可以开启组件多容器部署,容器之间共享网络和存储资源并协同工作。

        单击“选择镜像包”,为容器选择镜像包。

        选择指定的容器,单击,可以指定该容器为初始化容器,用于业务容器启动前安装特定工具或脚本。多个容器中,至少需要指定一个容器作为业务容器(非初始化容器)。初始化容器详情,请参考Init容器

      • 可重新自定义“容器名称”:长度为1到63个字符,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头、小写英文字母或数字结尾。
      • 单击已选择的容器卡片右上角的,可修改容器镜像包来源或者删除该容器。

    镜像访问凭证

    镜像访问凭证即密钥,用于存放拉取私有仓库镜像所需的认证信息。如果是公共仓库镜像,可以保持默认设置或者不设置镜像访问凭证。如果是私有仓库镜像,必须设置正确的镜像访问凭证,否则会导致镜像拉取失败。

    • 最多支持选择16个镜像访问凭证。
    • 单击“创建密钥”,可以创建新的镜像访问凭证。请参考创建密钥“密钥类型”必须选择kubernetes.io/dockerconfigjson。

    *容器名称

    • 容器名称默认和5设置的“工作负载名称”的值一致。您也可以自定义容器名称:长度为1到63个字符,可以包含小写英文字母、数字或中划线(-),并以小写英文字母开头、小写英文字母或数字结尾。
    • 如果“上传方式”选择的包类型为镜像包且启用了多容器部署时,需为新增容器自定义容器名称:长度为1到63个字符,可以包含小写英文字母、数字或中划线(-),并以小写英文字母开头、小写英文字母或数字结尾。

  7. “构建”区域,参考下表设置构建参数,其中带“*”标志的参数为必填参数。

    6选择的组件的技术栈类型为Java、Tomcat、Node.js、Python、Php时需设置。

    参数

    说明

    *编译命令

    包类型是“源码仓库”时,根据业务需要设置“编译命令”

    • 使用默认命令或脚本:优先执行代码根目录下的build.sh,不存在则按照所选语言的通用方法编译,如Java语言的mvn clean package
    • 使用自定义命令:根据所选语言自定义编译命令,或修改build.sh文件后选择使用默认命令或脚本。
      • 选择“使用自定义命令”时,请在echo、cat、debug命令中慎用敏感信息或者进行敏感信息加密,以免造成敏感信息泄露。
      • 在项目子目录下执行编译命令,需先进入项目子目录,再执行其余脚本命令。例如:

        cd ./weather/

        mvn clean package

    *Dockerfile地址

    包类型是“源码仓库”时,根据业务需要设置“Dockerfile地址”

    “Dockerfile地址”即Dockerfile文件相对于项目的根目录(./)所在的目录,Dockerfile文件用于镜像构建。

    如果未指定“Dockerfile地址”,默认查找项目根目录下的Dockerfile;如果项目根目录下也没有Dockerfile文件,则根据选定的运行环境自动生成Dockerfile。

    *组织

    组织用于管理组件构建生成的镜像。

    *构建环境

    选择用于构建镜像的环境类型。执行构建环境下的集群必须能够访问Internet。

    推荐您选择“使用当前环境构建”。如果当前环境的集群不能访问Internet,且您单独规划了构建环境,则可选择“使用独立环境构建”

    • 使用独立环境构建:可使用单独的构建环境进行镜像构建。独立构建环境集群和当前组件部署环境集群的CPU架构必须保持一致,否则会导致组件部署失败。
    • 使用当前环境构建:使用组件所属的部署环境进行镜像构建。当前环境集群的master节点和node节点的CPU架构必须保持一致,否则会导致组件构建失败。

    *选择环境

    • “构建环境”选择“使用独立环境构建”时,可选择使用不同于组件所属的独立构建环境。
    • “构建环境”选择“使用当前环境构建”时,固定选择使用组件所属的部署环境。

    *命名空间

    选择执行构建的环境下集群命名空间,用于隔离构建数据。关于命名空间,请参考管理命名空间

    过滤节点标签

    通过节点标签可以将构建任务下发到绑定了EIP的固定节点上。

    如果存在以下情况,您需要通过设置过滤节点标签将构建任务下发到绑定了EIP的固定节点上,保证组件构建、部署成功。

    • “构建环境”选择“使用独立环境构建”时,需要设置过滤节点标签,将构建任务下发到独立构建环境下的node节点,保证该节点和当前组件部署环境下node节点CPU架构一致。
    • “构建环境”选择“使用当前环境构建”时,如果环境下有node节点和master节点CPU架构不一致,需要设置过滤节点标签,将构建任务下发到和master节点CPU架构一致的node节点上。

    新增过滤标签,请参考添加节点标签

    YAML模式

    单击开启YAML模式,使用YAML配置来部署组件。

  8. 根据是否继续设置组件参数选择以下操作:

    • 是,单击“下一步”,执行9
    • 否,单击“保存为草稿”

      组件会以草稿状态保存在您在5中选择的应用下的组件列表中。草稿是指组件处于创建过程中,尚未完成参数配置时提前保存,防止已配置参数因为关闭页面等因素丢失。您可以利用已保存的组件草稿继续创建组件。

  9. “访问方式”区域,开启组件公网访问。

    5设置的组件“工作负载类型”“无状态”“有状态”或者“守护进程集”,且选择的“所属环境”下绑定的是CCE集群时,支持设置组件访问方式。

    开启组件公网访问后,支持通过绑定了弹性IP的ELB以公网域名方式访问组件,以使用组件提供的服务。

    • 如果组件创建并部署成功后通过ELB灰度发布方式进行升级维护,需在本操作步骤开启组件公网访问。ELB灰度发布,请参考使用灰度发布方式升级组件版本配置
    • 开启了公网访问的组件创建并部署完成后,您可以参考修改组件访问域名修改已设置的组件访问域名。
    • 默认不开启组件公网访问。组件创建并部署完成后,您也可以设置组件访问方式,请参考设置组件访问方式
    单击,开启公网访问后,设置以下参数:
    1. 设置“公网ELB”

      弹性负载均衡ELB需已绑定弹性IP,且必须与当前组件部署环境下纳管的计算资源处于相同的虚拟私有云VPC及其子网下。组件在不同部署环境下需绑定不同ELB,避免路由错误。

      • 选择所选环境中已经存在的绑定了弹性IP的弹性负载均衡(ELB)资源。
      • 若不存在,请单击“去所选的环境里添加”,在环境编辑页面,单击“新增可选资源”,为该环境添加已创建的弹性负载均衡(ELB)资源。
      • 若需创建弹性负载均衡(ELB)资源,请参考下表根据实际应用场景进行创建。

        使用场景

        参考章节

        使用域名访问应用

        ELB灰度发布

        参考购买独享型负载均衡器创建“规格”为“应用型”的ELB

    2. 设置“对外协议”
      • 选择“HTTP”,会存在安全风险,建议优先选择使用安全的“HTTPS”方式。
      • 选择“HTTPS”,单击“使用已有”选择已经创建的证书。

        若证书不存在,请单击“新创建”创建新的服务器证书。创建服务器证书请参考创建证书

    3. 设置“域名”
      • 选择“自动生成”,自动生成的域名仅有7天有效期。
      • 选择“绑定域名”,在输入框中输入自定义域名。
    4. 设置“监听端口”

      输入应用进程的监听端口号。

    图1 设置公网访问

  10. “实例间发现服务配置”区域,参考下表设置组件的服务(Service)名称及端口,其中带“*”标志的参数为必填参数。

    5选择的“工作负载类型”“有状态”时,需执行本操作,用于解决有状态负载(StatefulSet)内Pod互相访问的问题,给每个Pod提供固定的访问域名。

    参数

    说明

    *Service名称

    输入应用发布的可被外部访问的名称。Service是将运行在一组Pods上的应用程序公开为网络服务的抽象方法。

    部署在同一个集群下的组件,Service名称必须唯一,否则会导致组件部署失败。

    *端口配置

    设置以下端口配置参数。

    • 端口名称:Pod间通信的端口名称。
    • 容器端口:容器中应用启动监听的端口。
    • 访问端口:访问Service的端口。

    如需增加端口配置,请单击“新增端口配置”

  11. 如果5选择的组件所属环境为高可用环境,需要选择组件部署和运行的CCE集群。

    关于高可用环境,请参考使用纳管资源配置模式创建Kubernetes环境

  12. 导入或编辑组件YAML配置文件。

    • 导入组件YAML配置文件:单击“导入YAML文件”,导入已经编辑好的组件YAML配置文件。
    • 编辑组件YAML配置文件:根据实际业务需求编辑组件配置参数。

    组件YAML配置文件中各参数的说明请参考Deployment

    您可以参考5“工作负载名称”说明,修改YAML配置中“name”值,重新自定义工作负载名称。组件创建并部署完成后,不再支持修改工作负载的名称。

    您也可以参考6“容器名称”说明,修改YAML配置中“name”值,重新自定义容器名称。组件创建并部署完成后,您也可以通过升级单个组件版本配置修改容器名称。

  13. 设置“应用配置”

    参考管理容器部署组件应用配置为组件设置配置文件,用于通过文件挂载实现一次配置、多环境组件发布和升级。

    如果6“上传方式”选择的包类型为镜像包且启用了多容器部署时,请根据您的实际业务需要为各容器实例分别设置此参数。

  14. 设置“日志配置”,参考下表确定是否将组件运行日志采集到云日志服务(LTS)查看处理。

    5选择的“所属环境”下绑定的是CCE集群时,支持设置“日志配置”

    是否将组件运行日志采集到LTS

    操作说明

    勾选“自动对接 云日志服务LTS 的日志”

    系统根据您在12中的设置确定日志采集路径:
    • 如果您配置的都是容器挂载,则日志会下发到LTS的容器文件路径。
    • 如果您配置的都是主机挂载,则日志会下发到LTS的节点文件路径。
    • 如果您同时配置了容器挂载和节点挂载,由于LTS的限制,则只能保留节点挂载的路径,日志也只会下发到LTS的节点文件路径。
    • 如果您没有配置日志采集,则配置日志路径为/var/log/*以及/var/logs/*,也对应到LTS的容器文件路径。
    组件配置并部署完成后,系统自动生成相应的日志组和日志流配置,并在LTS控制台“接入管理”页面生成接入配置和主机组。
    • 日志组名称:命名规则为servicestage-{应用ID},应用ID为组件所属应用的ID。
    • 日志流名称:命名规则为lts-topic-{组件名},组件名为当前对接LTS的组件名称。
    • 接入配置名称:命名规则为access-config-{组件名},组件名为当前对接LTS的组件名称。
    • 主机组名称:命名规则为k8s-log-{CCE集群ID},CCE集群ID为当前对接LTS的组件所在的CCE集群ID。

    不勾选“自动对接 云日志服务LTS 的日志”

    • 组件配置并部署完成后,您可以到应用运维管理AOM查看运行日志。具体操作请参考查看日志文件
    • 组件配置并部署完成后,您也可以参考管理组件运行LTS日志将组件日志采集到LTS。

  15. 请参考下表根据是否部署组件执行后续操作。

    是否部署组件

    操作方法

    单击“创建并部署”

    • 在组件“查看历史部署记录”页面,可查看部署日志,等待组件部署完成。

      如果出现“查询工作负载实例状态失败”日志信息,您可以单击“查看事件”,进入事件列表查看详情。

    • 如果6选择的组件的技术栈类型为Java、Tomcat、Node.js、Python、Php,组件部署成功后,系统会创建“系统创建”类别的构建任务。查看构建任务,请参考查看构建任务
    • 在组件部署过程中,5设置的“工作负载类型”“无状态”“有状态”或者“守护进程集”的组件,如果发现组件配置错误等原因,您可以单击“中断”终止组件部署,然后单击“升级”,参考升级单个组件版本配置,重新设置组件配置并完成组件升级部署。

    单击“保存为草稿”

    组件会以草稿状态保存在您在5中选择的应用下的组件列表中。草稿是指组件处于创建过程中,尚未完成参数配置时提前保存,防止已配置参数因为关闭页面等因素丢失。您可以利用已保存的组件草稿继续创建组件。

后续操作