文档

使用计算巢子模板创建服务

计算巢服务支持使用子模块简化复杂场景下的计算巢服务模板编辑。本文介绍如何创建和使用计算巢子模块。

应用场景

计算巢子模块功能主要用于如下场景的服务模板编辑:

  • ROS模板庞大、复杂且维护困难。

  • 模板由多个团队共同维护,各自维护负责的服务。

  • 服务商拥有多个服务,能够抽离出模板的公共部分。

操作步骤

步骤一:创建子模块

计算巢子模块功能是基于阿里云ROS模块功能实现的,具体步骤如下:

  1. 登录资源编排控制台

  2. 在左侧导航栏中,选择资源 > 我的模块

  3. 单击创建模块,在创建模块页面中,编辑ROS模块信息。

    ROS模块内容与普通部署计算巢服务的ROS模板内容一样,包含ParametersResourcesOutputs等内容。关于创建模板的详细操作,请参见模块开发2023-12-08_17-38-11.png

  4. 将鼠标移动到界面右上角的导入/保存模块处,单击保存为新模板

    2023-12-08_17-40-26.png

  5. 在弹出中,设置新模块的名称和描述等信息,然后单击确定

    重要

    为保证该模块能够在计算巢中正常使用,需要遵循一定的模块命名规范。

    ROS模块命名采用四个字段的方式:MODULE::XXX::XXX::XXX。其中,第一个字段是固定值MODULE;第二个字段的值可选SHAREACS;第三个字段为您的阿里云账号ID;第四个字段为自定义字段信息。如:MODULE::SHARE::1563457855xxxxxx::MyFirstModule

    2023-12-11_11-00-47.png

步骤二:使用子模块编辑服务模板并创建服务

此处介绍如何使用已创建的子模块编辑服务模板并创建服务。

  1. 登录计算巢控制台

  2. 在左侧导航栏中,选择服务目录 > 我的服务

  3. 我创建的服务页签中,单击创建新服务

  4. 在创建新服务界面,配置服务信息。

    此处只展示使用子模板场景服务必需的设置,其他配置项信息,请参见创建私有部署服务

    模板内容处,填写模板内容。更多信息,请参见模板示例

    在编辑计算巢服务模板时,可以将子模块作为一个resource参数引入到模板中。并在resource中设置子模块信息。更多信息,请参见使用模块

    • Version中,定义模板的版本,您可以指定具体的版本,也可以将参数值设置为default默认版本。

    • Properties中,定义子模块的参数信息。其中子模块中的资源可以通过完全限定逻辑名称的方式进行引用,您可以使用半角句号(.)作为分隔符来指定资源的完全限定逻辑名称。例如,本示例中的EcsInstanceJumpBoxVPCId定义的值为Vpc.Vpc,其含义是调用名称为Vpc的子模块中,名称是Vpc的资源。

    说明

    每个子模板都可以独立部署ROS资源栈。子模块在调试的时候,您可以先单独作为ROS模板进行资源创建,测试没问题后再应用到计算巢服务模板中,以简化服务模板的调试。

    子模板示例内容如下:

    ROSTemplateFormatVersion: '2015-09-01'
    Description: A sample vpc.
    Parameters:
      VpcName:
        Description: Name for the vpc
        Type: String
      CidrBlock:
        Description: Cidr block for the vpc
        Type: String
      VSwitchCidrBlock:
        Type: String
        Label:
          en: VSwitch CIDR Block
          zh-cn: 交换机子网网段
        Description:
          zh-cn: 必须属于VPC的子网段。
          en: Must belong to the subnet segment of VPC.
        Default: 192.168.1.0/24
        AssociationProperty: 'ALIYUN::VPC::VSwitch::CidrBlock'
        AssociationPropertyMetadata:
          VpcCidrBlock: CidrBlock
      ZoneId:
        Type: String
        AssociationProperty: 'ALIYUN::ECS::Instance:ZoneId'
        Label:
          en: Zone ID
          zh-cn: 可用区
    Resources:
      Vpc:
        Type: 'ALIYUN::ECS::VPC'
        Properties:
          VpcName:
            Ref: VpcName
          CidrBlock:
            Ref: CidrBlock
      EcsSecurityGroup:
        Type: 'ALIYUN::ECS::SecurityGroup'
        Properties:
          SecurityGroupName:
            Ref: 'ALIYUN::StackName'
          VpcId:
            Ref: Vpc
          SecurityGroupEgress:
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: all
              DestCidrIp: 0.0.0.0/0
              NicType: intranet
          SecurityGroupIngress:
            - PortRange: 2181/2181
              Priority: 1
              SourceCidrIp: 0.0.0.0/0
              IpProtocol: tcp
              NicType: internet
      EcsVSwitch:
        Type: 'ALIYUN::ECS::VSwitch'
        Properties:
          VSwitchName:
            Ref: 'ALIYUN::StackName'
          VpcId:
            Ref: Vpc
          ZoneId:
            Ref: ZoneId
          CidrBlock:
            Ref: VSwitchCidrBlock
  5. 单击保存服务。完成服务的创建。

模板示例

使用了子模块编辑的计算巢服务模板内容如下:

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VSwitchCidrBlock:
    Type: String
    Label:
      en: VSwitch CIDR Block
      zh-cn: 交换机子网网段
    Default: 192.xxx.xxx.0/24
    AssociationProperty: 'ALIYUN::VPC::VSwitch::CidrBlock'
    AssociationPropertyMetadata:
      VpcCidrBlock: ${VpcCidrBlock}
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance:ZoneId
    Label:
      en: Zone ID
      zh-cn: 可用区
  VpcName:
    Label:
      en: Vpc Name
      zh-cn: vpc名称
    Type: String
  EcsInstanceType:
    Type: String
    Label:
      en: Instance Type
      zh-cn: ecs实例类型
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ${ZoneId}
      InstanceChargeType: ${PayType}
    Default: ecs.g6.large
 Resources:
  Vpc:
    Type: MODULE::SHARE::1563457855xxxxxx::TESTVPC
    Version: default
    Properties:
      VpcName:
        Ref: VpcName
      CidrBlock:
        Ref: VpcCidrBlock
      ZoneId:
        Ref: ZoneId
      VSwitchCidrBlock:
        Ref: VSwitchCidrBlock
  EcsInstanceJumpBox:
    Type: ALIYUN::ECS::InstanceGroup
    Properties:
      ZoneId:
        Ref: ZoneId
      InstanceChargeType:
        Ref: PayType
      Period:
        Ref: PayPeriod
      ImageId: centos_7
      InstanceType:
        Ref: EcsInstanceType
      VpcId:
        Ref: Vpc.Vpc
      VSwitchId:
        Ref: Vpc.EcsVSwitch
      AllocatePublicIP: false
      Password:
        Ref: LoginPassword
      MaxAmount: 1

  • 本页导读 (0)
文档反馈