全部产品
Search
文档中心

资源编排:ALIYUN::ECI::ContainerGroup

更新时间:Mar 01, 2023

ALIYUN::ECI::ContainerGroup类型用于创建一个容器组。

语法

{
  "Type": "ALIYUN::ECI::ContainerGroup",
  "Properties": {
    "SecurityContextSysctl": List,
    "Memory": Number,
    "InitContainer": List,
    "Cpu": "Number",
    "EipInstanceId": String,
    "ContainerGroupName": String,
    "Container": List,
    "ImageSnapshotId": String,
    "DnsConfig": Map,
    "AutoMatchImageCache": Boolean,
    "Ipv6AddressCount": Integer,
    "ImageRegistryCredential": List,
    "SpotPriceLimit": Number,
    "InstanceType": String,
    "SpotStrategy": String,
    "ActiveDeadlineSeconds": Integer,
    "HostAliase": List,
    "ZoneId": String,
    "TerminationGracePeriodSeconds": Integer,
    "VSwitchId": String,
    "SecurityGroupId": String,
    "SlsEnable": Boolean,
    "RestartPolicy": String,
    "RamRoleName": String,
    "Volume": List,
    "AcrRegistryInfo": List,
    "Tag": List,
    "ResourceGroupId": String
  }
}

属性

属性名称类型必须允许更新描述约束
EipInstanceIdString弹性公网IP ID。
ContainerList容器组中包含的容器。更多信息,请参见Container属性
DnsConfigMapDNS配置。更多信息,请参见DnsConfig属性
InitContainerList初始化容器列表。更多信息,请参见InitContainer属性
SecurityGroupIdString指定新创建实例所属于的安全组ID。同一个安全组内的实例之间可以互相访问。
ContainerGroupNameString容器组名称。
ZoneIdString实例所属的可用区ID。默认值:空(表示由系统选择)。
VolumeList数据卷列表。最多可以指定20个数据卷。

更多信息,请参见Volume属性

HostAliaseList自定义pod内一个容器的hostname映射。更多信息,请参见HostAliase属性
RestartPolicyString实例重启策略。取值:
  • Always(默认值)
  • OnFailure
  • Never
ResourceGroupIdString资源组ID。
TagList键值对形式的容器组标签列表。每个容器组最多定义20个标签。键值均为字符串。

更多信息,请参见Tag属性

VSwitchIdString交换机ID。当前ECI实例均为专有网络实例。交换机网段内IP的个数决定了该交换机最大可创建的ECI实例数,请提前规划交换机网段设置。
ImageRegistryCredentialList登录容器映像仓库的信息,包括服务器地址、用户名和密码。更多信息,请参见ImageRegistryCredential属性
MemoryNumber内存大小。
SlsEnableBoolean是否开启用户日志收集。取值:
  • true:开启。
  • false(默认值):不开启。
SecurityContextSysctlList实例运行的安全上下文。更多信息,请参见SecurityContext属性
CpuNumberCPU大小。
ImageSnapshotIdString镜像缓存ID或快照ID。
SpotPriceLimitNumber实例的每小时最高价格。最大支持3位小数。

SpotStrategy取值为SpotWithPriceLimit时,该参数生效。

AutoMatchImageCacheBoolean自动匹配镜像缓存。
SpotStrategyString实例的抢占策略。取值:
  • NoSpot(默认值):正常按量付费实例。
  • SpotWithPriceLimit:设置上限价格的抢占式实例。
  • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格。
TerminationGracePeriodSecondsInteger给程序预留的最后缓冲时间,用于处理关闭之前的操作。单位:秒。
ActiveDeadlineSecondsInteger有效期限。单位:秒。
Ipv6AddressCountIntegerIpv6地址数量。
RamRoleNameString实例RAM角色名称。ECI与ECS共用实例RAM角色。
AcrRegistryInfoList企业版访问凭证配置信息。更多信息,请参见AcrRegistryInfo属性
InstanceTypeString实例规格。

Container语法

"Container": [
  {
    "EnvironmentVar": List,
    "Tty": Boolean,
    "SecurityContext": Map,
    "Name": String,
    "ImagePullPolicy": String,
    "Image": String,
    "Stdin": boolean,
    "WorkingDir": String,
    "LivenessProbe": Map,
    "Cpu": Number,
    "Command": List,
    "Memory": Number,
    "ReadinessProbe": Map,
    "VolumeMount": List,
    "Port": List,
    "Arg": List,
    "StdinOnce": Boolean
  }
]

Container属性

属性名称类型必须允许更新描述约束
EnvironmentVarList容器中的环境变量。每个环境变量都是键值对,键和值都是字符串。键表示变量的名称,值表示变量的值。

最多支持100个环境变量。

更多信息,请参见EnvironmentVar属性

TtyBoolean是否为此容器分配TTY。取值:
  • true
  • false
如果值为true,则stdin也为true。
SecurityContextMap容器组的安全上下文。取值:true。
NameString容器名。
ImagePullPolicyString镜像拉取策略。
ImageString镜像。
StdinBoolean是否在此容器运行时中分配标准输入的缓冲。取值:
  • true
  • false
WorkingDirString容器的工作目录。
LivenessProbeMap容器存活探针。更多信息,请参见LivenessProbe属性
CpuNumber分配给容器的CPU数量。
CommandList要发送到容器以运行的命令列表。最多可以指定一个命令。每个字符串的最大长度为256个字符。
MemoryNumber分配给容器的内存。单位:GiB。
ReadinessProbeMap容器就绪探针。更多信息,请参见ReadinessProbe属性
VolumeMountList 挂载到容器上的Volume的详情。最多支持16个。

更多信息,请参见VolumeMount属性

PortList开放端口和协议。最多可以设置100个端口。取值:
  • TCP
  • UDP

更多信息,请参见Port属性

ArgList传递给命令的参数。参数为String类型。最多支持10个参数。
StdinOnceBoolean由客户端连接时首次打开标准输入通道后,断开连接后是否关闭该通道。取值:
  • true:关闭通道。
  • false:开启通道。

LivenessProbe语法

"LivenessProbe": {
  "TcpSocket.Port": Integer,
  "HttpGet.Scheme": String,
  "HttpGet.Port": Integer,
  "FailureThreshold": Integer,
  "InitialDelaySeconds": Integer,
  "TimeoutSeconds": Integer,
  "SuccessThreshold": Integer,
  "Exec.Command": List,
  "PeriodSeconds": Integer,
  "HttpGet.Path": String
}

LivenessProbe属性

属性名称类型必须允许更新描述约束
TcpSocket.PortInteger系统向其中发送TCP套接字请求以执行检查的端口。
HttpGet.SchemeString用于连接主机的协议。取值:
  • HTTP
  • HTTPS
HttpGet.PortInteger系统向其中发送HTTP GET请求以执行检查的端口。
FailureThresholdInteger探测器认定检查失败的检查次数阈值。必须是连续失败

默认值:3。

InitialDelaySecondsInteger在启动探测之前容器启动后的时间。单位:秒。
TimeoutSecondsInteger探测器超时的秒数。最小值:1。

默认值:1。

SuccessThresholdInteger探测器检查失败后重新认定检查成功的检查次数阈值。取值:1。

默认值:1。

Exec.CommandList探测命令。
PeriodSecondsInteger探测周期。单位:秒。

最小值:1。

默认值:10。

HttpGet.PathString系统发送HTTP GET请求以执行检查的路径。

DnsConfig语法

"DnsConfig": {
  "NameServer": List,
  "Search": List,
  "Option": List
}

DnsConfig属性

属性名称类型必须允许更新描述约束
NameServerListDNS服务器的IP地址列表。
SearchListDNS搜索域的列表。
OptionList选项列表。每个选项都包含一个名称和一个值。选项的值可选。

更多信息,请参见Option属性

InitContainer语法

"InitContainer": [
  {
    "EnvironmentVar": List,
    "SecurityContext": Map,
    "Name": String,
    "Image": String,
    "Arg": List,
    "WorkingDir": String,
    "Port": List,
    "Command": List,
    "Memory": Number,
    "ImagePullPolicy": String,
    "VolumeMount": List,
    "Cpu": Number
  }
]

InitContainer属性

属性名称类型必须允许更新描述约束
EnvironmentVarList容器中的环境变量。每个环境变量都是键值对,键和值都是字符串。键表示变量的名称,值表示变量的值。

最多支持100个环境变量。

取值:status.podIP。
SecurityContextMap容器组的安全上下文。取值:true。
NameString容器名。
ImageString容器镜像。
ArgList传递给命令的参数。参数为String类型。最多支持10个参数。
WorkingDirString容器的工作目录。
PortList开放端口和协议。最多可以设置100个端口。取值:
  • TCP
  • UDP
CommandList要发送到容器以运行的命令列表。最多可以指定一个命令。每个字符串的最大长度为256个字符。
MemoryNumber分配给容器的内存。单位:GB。
ImagePullPolicyString镜像拉取策略。
VolumeMountList挂载到容器上的Volume的详情。最多支持16个Volume。
CpuNumber分配给容器的CPU数量。

Volume语法

"Volume": [
  {
    "NFSVolume.Path": String,
    "Name": String,
    "EmptyDirVolume.Medium": String,
    "NFSVolume.Server": String,
    "NFSVolume.ReadOnly": Boolean,
    "ConfigFileVolume.ConfigFileToPath": List,
    "Type": String
  }
]

Volume属性

属性名称类型必须允许更新描述约束
NFSVolume.PathStringNFSVolume的路径。
NameStringVolume名。
EmptyDirVolume.MediumString存储介质。默认情况下,使用节点上的文件系统。

取值:Memory。

如果值为Memory,则EmptyDirVolume卷存储在内存中。
NFSVolume.ServerStringNFS服务器的IP地址。
NFSVolume.ReadOnlyBooleanNFS卷只读属性。默认值:false。
ConfigFileVolume.ConfigFileToPathList配置文件路径。更多信息,请参见ConfigFileVolume.ConfigFileToPath属性
TypeStringVolume的类型。取值:
  • EmptyDirVolume
  • NFSVolume
  • ConfigFileVolume

HostAliase语法

"HostAliase": [
  {
    "Ip": String,
    "Hostname": List
  }
]

HostAliase属性

属性名称类型必须允许更新描述约束
IpStringIP地址。
HostnameList主机名。

ImageRegistryCredential语法

"ImageRegistryCredential": [
  {
    "UserName": String,
    "Password": String,
    "Server": String
  }
]

ImageRegistryCredential属性

属性名称类型必须允许更新描述约束
UserNameString用于登录镜像仓库的用户名。
PasswordString用于登录镜像仓库的密码。
ServerString镜像仓库的IP地址。此地址不包含协议前缀。

例如:http://https://

EnvironmentVar语法

"EnvironmentVar": {
  "Key": String,
  "Value": String,
  "FieldRef.FieldPath": String
}

EnvironmentVar属性

属性名称类型必须允许更新描述约束
KeyString变量的名称。长度为1~128个字符,不能以数字开头,可包含数字、英文字母和下划线(_)。
ValueString变量的值。长度为0~256个字符。
FieldRef.FieldPathString对另一个变量的引用。目前只支持status.podIP。

SecurityContext语法

"SecurityContext": {
  "Capability.Add": List,
  "RunAsUser": Interger,
  "ReadOnlyRootFilesystem": Boolen
}

SecurityContext属性

属性名称类型必须允许更新描述约束
Capability.AddList可添加到容器的Capability。取值:["NET_ADMIN"]。
RunAsUserInteger用户ID。
ReadOnlyRootFilesystemBoolean只读根文件系统。取值:true。

VolumeMount语法

"VolumeMount": [
  {
    "Name": String,
    "ReadOnly": Boolen,
    "MountPath": String
  }
]

VolumeMount属性

属性名称类型必须允许更新描述约束
NameStringVolume的名称。名称与Volume部分中为name参数指定的值相同。
ReadOnlyBoolean只读属性。默认值:false。
MountPathString安装路径。目标目录中的数据被挂载卷中的数据覆盖。

Port语法

"Port": [
  {
    "Port": Interger,
    "Protocol": String
  }
]

Port属性

属性名称类型必须允许更新描述约束
PortInteger端口号。取值范围:1~65,535。
ProtocolString端口使用的协议。取值:
  • TCP
  • UDP

ConfigFileVolume.ConfigFileToPath语法

"onfigFileVolume.ConfigFileToPath": [
  {
    "Content": String,
    "Path": String
  }
]

ConfigFileVolume.ConfigFileToPath属性

属性名称类型必须允许更新描述约束
ContentString配置文件的内容。最大为32KB。
PathString配置文件中的相对路径。您可以指定一个目录相对于另一个目录的位置。

SecurityContextSysctl语法

"SecurityContextSysctl": [
  {
    "Value": String,
    "Name": String
  }
] 

SecurityContextSysctl属性

属性名称类型必须允许更新描述约束
ValueString实例运行的安全上下文的变量值。
NameString实例运行的安全上下文系统名称。取值:
  • kernel.msgmax
  • kernel.shm_rmid_forced

ReadinessProbe语法

"ReadinessProbe": {
  "TimeoutSeconds": Integer,
  "InitialDelaySeconds": Integer,
  "Exec.Command": List,
  "PeriodSeconds": Integer,
  "HttpGet.Port": Integer,
  "TcpSocket.Port": Integer,
  "FailureThreshold": Integer,
  "HttpGet.Scheme": String,
  "HttpGet.Path": String,
  "SuccessThreshold": Integer
} 

ReadinessProbe属性

属性名称类型必须允许更新描述约束
FailureThresholdInteger从上次检查成功后认定检查失败的检查次数阈值。必须是连续失败。

默认值:3。

HttpGet.SchemeStringGET请求协议。取值:
  • HTTP
  • HTTPS
HttpGet.PathStringHttpGet检测的路径。
Exec.CommandList容器内检测的命令。
TcpSocket.PortIntegerTcpSocket检测的端口。
PeriodSecondsInteger检查执行的周期。默认值:10。

最小值:1。

单位:秒。

TimeoutSecondsInteger检查超时的时间。默认值:10。

最小值:1。

单位:秒。

InitialDelaySecondsInteger检查开始执行的时间,以容器启动完成为起点计算。
SuccessThresholdInteger从上次检查失败后重新认定检查成功的检查次数阈值。必须是连续成功。

默认值:1。

HttpGet.PortIntegerHttpGet检测的端口号。

Option语法

"Option": [
  {
    "Name": String,
    "Value": String
  }
] 

Option属性

属性名称类型必须允许更新描述约束
NameString对象名称。
ValueString对象值。

Tag语法

"Tag": [
  {
    "Key": String,
    "Value": String
  }
]

Tag属性

属性名称类型必须允许更新描述约束
KeyString标签键。
ValueString标签值。

AcrRegistryInfo语法

"AcrRegistryInfo": [
  {
    "RegionId": String,
    "InstanceName": String,
    "Domain": List,
    "InstanceId": String
  }
]

AcrRegistryInfo属性

属性名称类型必须允许更新描述约束
RegionIdString所属地域,默认为本地地域。
InstanceNameString实例名称。
DomainList域名。默认为实例的所有域名。
InstanceIdString实例ID。

返回值

Fn::GetAtt

  • ContainerGroupId:容器组ID。
  • ContainerGroupName:容器组的名称。
  • SecurityGroupId:安全组ID。
  • Ipv6Address:Ipv6地址。
  • InternetIp:公网IP。
  • RegionId:实例所属地域。
  • IntranetIp:内网IP。
  • ZoneId:可用区。
  • VSwitchId:交换机ID。
  • EniInstanceId:弹性网卡ID。

示例

  • YAML格式

    ROSTemplateFormatVersion: '2015-09-01'
    Description: Test ECI ContainerGroup
    Parameters:
      VSwitch:
        AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
        Type: String
        Label:
          zh-cn: 网络交换机ID
          en: VSwitch ID
      SecurityGroup:
        Type: String
        AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
        Label:
          zh-cn: 安全组ID
          en: Security Group ID
    Resources:
      ContainerGroup:
        Type: ALIYUN::ECI::ContainerGroup
        Properties:
          Container:
            - Name: mytest
              Image: busybox
              Cpu: 2
              Memory: 4
              Port:
                - Port: 8080
                  Protocol: TCP
                - Port: 8888
                  Protocol: TCP
          SecurityGroupId:
            Ref: SecurityGroup
          ContainerGroupName: mytest
          VSwitchId:
            Ref: VSwitch
          RestartPolicy: Always
          SlsEnable: false
          Cpu: 2
          Memory: 4
    Outputs: {}
  • JSON格式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Description": "Test ECI ContainerGroup",
      "Parameters": {
        "VSwitch": {
          "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
          "Type": "String",
          "Label": {
            "zh-cn": "网络交换机ID",
            "en": "VSwitch ID"
          }
        },
        "SecurityGroup": {
          "Type": "String",
          "AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId",
          "Label": {
            "zh-cn": "安全组ID",
            "en": "Security Group ID"
          }
        }
      },
      "Resources": {
        "ContainerGroup": {
          "Type": "ALIYUN::ECI::ContainerGroup",
          "Properties": {
            "Container": [
              {
                "Name": "mytest",
                "Image": "busybox",
                "Cpu": 2,
                "Memory": 4,
                "Port": [
                  {
                    "Port": 8080,
                    "Protocol": "TCP"
                  },
                  {
                    "Port": 8888,
                    "Protocol": "TCP"
                  }
                ]
              }
            ],
            "SecurityGroupId": {
              "Ref": "SecurityGroup"
            },
            "ContainerGroupName": "mytest",
            "VSwitchId": {
              "Ref": "VSwitch"
            },
            "RestartPolicy": "Always",
            "SlsEnable": false,
            "Cpu": 2,
            "Memory": 4
          }
        }
      },
      "Outputs": {
      }
    }        

更多示例,请参见:JSON示例YAML示例