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
  }
}属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| EipInstanceId | String | 否 | 否 | 弹性公网IP ID。 | 无 | 
| Container | List | 是 | 是 | 容器组中包含的容器。 | 更多信息,请参见Container属性。 | 
| DnsConfig | Map | 否 | 是 | DNS配置。 | 更多信息,请参见DnsConfig属性。 | 
| InitContainer | List | 否 | 是 | 初始化容器列表。 | 更多信息,请参见InitContainer属性。 | 
| SecurityGroupId | String | 否 | 否 | 指定新创建实例所属于的安全组ID。 | 同一个安全组内的实例之间可以互相访问。 | 
| ContainerGroupName | String | 是 | 否 | 容器组名称。 | 无 | 
| ZoneId | String | 否 | 否 | 实例所属的可用区ID。 | 默认值:空(表示由系统选择)。 | 
| Volume | List | 否 | 是 | 数据卷列表。 | 最多可以指定20个数据卷。 更多信息,请参见Volume属性。 | 
| HostAliase | List | 否 | 否 | 自定义pod内一个容器的hostname映射。 | 更多信息,请参见HostAliase属性。 | 
| RestartPolicy | String | 否 | 是 | 实例重启策略。 | 取值: 
 | 
| ResourceGroupId | String | 否 | 是 | 资源组ID。 | 无 | 
| Tag | List | 否 | 是 | 键值对形式的容器组标签列表。 | 每个容器组最多定义20个标签。键值均为字符串。 更多信息,请参见Tag属性。 | 
| VSwitchId | String | 否 | 否 | 交换机ID。当前ECI实例均为专有网络实例。 | 交换机网段内IP的个数决定了该交换机最大可创建的ECI实例数,请提前规划交换机网段设置。 | 
| ImageRegistryCredential | List | 否 | 是 | 登录容器映像仓库的信息,包括服务器地址、用户名和密码。 | 更多信息,请参见ImageRegistryCredential属性。 | 
| Memory | Number | 否 | 是 | 内存大小。 | 无 | 
| SlsEnable | Boolean | 否 | 否 | 是否开启用户日志收集。 | 取值: 
 | 
| SecurityContextSysctl | List | 否 | 否 | 实例运行的安全上下文。 | 更多信息,请参见SecurityContext属性。 | 
| Cpu | Number | 否 | 是 | CPU大小。 | 无 | 
| ImageSnapshotId | String | 否 | 否 | 镜像缓存ID或快照ID。 | 无 | 
| SpotPriceLimit | Number | 否 | 否 | 实例的每小时最高价格。 | 最大支持3位小数。 SpotStrategy取值为SpotWithPriceLimit时,该参数生效。 | 
| AutoMatchImageCache | Boolean | 否 | 否 | 自动匹配镜像缓存。 | 无 | 
| SpotStrategy | String | 否 | 否 | 实例的抢占策略。 | 取值: 
 | 
| TerminationGracePeriodSeconds | Integer | 否 | 否 | 给程序预留的最后缓冲时间,用于处理关闭之前的操作。 | 单位:秒。 | 
| ActiveDeadlineSeconds | Integer | 否 | 否 | 有效期限。 | 单位:秒。 | 
| Ipv6AddressCount | Integer | 否 | 否 | Ipv6地址数量。 | 无 | 
| RamRoleName | String | 否 | 否 | 实例RAM角色名称。 | ECI与ECS共用实例RAM角色。 | 
| AcrRegistryInfo | List | 否 | 否 | 企业版访问凭证配置信息。 | 更多信息,请参见AcrRegistryInfo属性。 | 
| InstanceType | String | 否 | 否 | 实例规格。 | 无 | 
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属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| EnvironmentVar | List | 否 | 否 | 容器中的环境变量。 | 每个环境变量都是键值对,键和值都是字符串。键表示变量的名称,值表示变量的值。 最多支持100个环境变量。 更多信息,请参见EnvironmentVar属性。 | 
| Tty | Boolean | 否 | 否 | 是否为此容器分配TTY。 | 取值: 
 | 
| SecurityContext | Map | 否 | 否 | 容器组的安全上下文。 | 无 | 
| Name | String | 是 | 否 | 容器名。 | 无 | 
| ImagePullPolicy | String | 否 | 否 | 镜像拉取策略。 | 无 | 
| Image | String | 是 | 否 | 镜像。 | 无 | 
| Stdin | Boolean | 否 | 否 | 是否在此容器运行时分配标准输入的缓冲。 | 取值: 
 | 
| WorkingDir | String | 否 | 否 | 容器的工作目录。 | 无 | 
| LivenessProbe | Map | 否 | 否 | 容器存活探针。 | 更多信息,请参见LivenessProbe属性。 | 
| Cpu | Number | 否 | 否 | 分配给容器的CPU数量。 | 无 | 
| Command | List | 否 | 否 | 要发送到容器以运行的命令列表。 | 最多可以指定一个命令。每个字符串的最大长度为256个字符。 | 
| Memory | Number | 否 | 否 | 分配给容器的内存。 | 单位:GiB。 | 
| ReadinessProbe | Map | 否 | 否 | 容器就绪探针。 | 更多信息,请参见ReadinessProbe属性。 | 
| VolumeMount | List | 否 | 否 | 挂载到容器上的Volume的详情。 | 最多支持16个。 更多信息,请参见VolumeMount属性。 | 
| Port | List | 否 | 否 | 开放端口和协议。 | 最多可以设置100个端口。取值: 
 更多信息,请参见Port属性。 | 
| Arg | List | 否 | 否 | 传递给命令的参数。 | 参数为String类型。最多支持10个参数。 | 
| StdinOnce | Boolean | 否 | 否 | 由客户端连接时首次打开标准输入通道后,断开连接后是否关闭该通道。 | 取值: 
 | 
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.Port | Integer | 否 | 否 | 系统向其中发送TCP套接字请求以执行检查的端口。 | 无 | 
| HttpGet.Scheme | String | 否 | 否 | 用于连接主机的协议。 | 取值: 
 | 
| HttpGet.Port | Integer | 否 | 否 | 系统向其中发送HTTP GET请求以执行检查的端口。 | 无 | 
| FailureThreshold | Integer | 否 | 否 | 探测器认定检查失败的检查次数阈值。 | 必须是连续失败 默认值:3。 | 
| InitialDelaySeconds | Integer | 否 | 否 | 在启动探测之前容器启动后的时间。 | 单位:秒。 | 
| TimeoutSeconds | Integer | 否 | 否 | 探测器超时的秒数。 | 最小值:1。 默认值:1。 | 
| SuccessThreshold | Integer | 否 | 否 | 探测器检查失败后重新认定检查成功的检查次数阈值。 | 取值:1。 默认值:1。 | 
| Exec.Command | List | 否 | 否 | 探测命令。 | 无 | 
| PeriodSeconds | Integer | 否 | 否 | 探测周期。 | 单位:秒。 最小值:1。 默认值:10。 | 
| HttpGet.Path | String | 否 | 否 | 系统发送HTTP GET请求以执行检查的路径。 | 无 | 
DnsConfig语法
"DnsConfig": {
  "NameServer": List,
  "Search": List,
  "Option": List
}DnsConfig属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| NameServer | List | 否 | 否 | DNS服务器的IP地址列表。 | 无 | 
| Search | List | 否 | 否 | DNS搜索域的列表。 | 无 | 
| Option | List | 否 | 否 | 选项列表。 | 每个选项都包含一个名称和一个值。选项的值可选。 更多信息,请参见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属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| EnvironmentVar | List | 否 | 否 | 容器中的环境变量。 | 每个环境变量都是键值对,键和值都是字符串。键表示变量的名称,值表示变量的值。 最多支持100个环境变量。 取值:status.podIP。 | 
| SecurityContext | Map | 否 | 否 | 容器组的安全上下文。 | 无 | 
| Name | String | 否 | 否 | 容器名。 | 无 | 
| Image | String | 否 | 否 | 容器镜像。 | 无 | 
| Arg | List | 否 | 否 | 传递给命令的参数。 | 参数为String类型。最多支持10个参数。 | 
| WorkingDir | String | 否 | 否 | 容器的工作目录。 | 无 | 
| Port | List | 否 | 否 | 开放端口和协议。 | 最多可以设置100个端口。取值: 
 | 
| Command | List | 否 | 否 | 要发送到容器以运行的命令列表。 | 最多可以指定一个命令。每个字符串的最大长度为256个字符。 | 
| Memory | Number | 否 | 否 | 分配给容器的内存。 | 单位:GB。 | 
| ImagePullPolicy | String | 否 | 否 | 镜像拉取策略。 | 无 | 
| VolumeMount | List | 否 | 否 | 挂载到容器上的Volume的详情。 | 最多支持16个Volume。 | 
| Cpu | Number | 否 | 否 | 分配给容器的CPU数量。 | 无 | 
Volume语法
"Volume": [
  {
    "NFSVolume.Path": String,
    "Name": String,
    "EmptyDirVolume.Medium": String,
    "NFSVolume.Server": String,
    "NFSVolume.ReadOnly": Boolean,
    "ConfigFileVolume.ConfigFileToPath": List,
    "Type": String,
    "FlexVolume.Options": Map,
    "FlexVolume.Driver": String,
    "FlexVolume.FsType": String
  }
]Volume属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| NFSVolume.Path | String | 否 | 否 | NFSVolume的路径。 | 无 | 
| Name | String | 是 | 否 | Volume名。 | 无 | 
| EmptyDirVolume.Medium | String | 否 | 否 | 存储介质。 | 默认情况下,使用节点上的文件系统。 取值:Memory。 如果值为Memory,则EmptyDirVolume卷存储在内存中。 | 
| NFSVolume.Server | String | 否 | 否 | NFS服务器的IP地址。 | 无 | 
| NFSVolume.ReadOnly | Boolean | 否 | 否 | NFS卷只读属性。 | 默认值:false。 | 
| ConfigFileVolume.ConfigFileToPath | List | 否 | 否 | 配置文件路径。 | 更多信息,请参见ConfigFileVolume.ConfigFileToPath属性。 | 
| Type | String | 是 | 否 | Volume的类型。 | 取值: 
 | 
| FlexVolume.Options | Map | 否 | 否 | FlexVolume对象选项列表。 | 为KV形式,采用JSON传递。 例如:通过FlexVolume挂载云盘时,Options的格式为 | 
| FlexVolume.Driver | String | 否 | 否 | 用于FlexVolume的驱动程序名称。 | 无 | 
| FlexVolume.FsType | String | 否 | 否 | 挂载的文件系统类型 | 无 | 
HostAliase语法
"HostAliase": [
  {
    "Ip": String,
    "Hostname": List
  }
]HostAliase属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| Ip | String | 否 | 否 | IP地址。 | 无 | 
| Hostname | List | 否 | 否 | 主机名。 | 无 | 
ImageRegistryCredential语法
"ImageRegistryCredential": [
  {
    "UserName": String,
    "Password": String,
    "Server": String
  }
]ImageRegistryCredential属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| UserName | String | 是 | 否 | 用于登录镜像仓库的用户名。 | 无 | 
| Password | String | 是 | 否 | 用于登录镜像仓库的密码。 | 无 | 
| Server | String | 是 | 否 | 镜像仓库的IP地址。 | 此地址不包含协议前缀。 例如: | 
EnvironmentVar语法
"EnvironmentVar": {
  "Key": String,
  "Value": String,
  "FieldRef.FieldPath": String
}EnvironmentVar属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| Key | String | 否 | 否 | 变量的名称。 | 长度为1~128个字符,不能以数字开头,可包含数字、英文字母和下划线(_)。 | 
| Value | String | 否 | 否 | 变量的值。 | 长度为0~256个字符。 | 
| FieldRef.FieldPath | String | 否 | 否 | 对另一个变量的引用。 | 目前只支持status.podIP。 | 
SecurityContext语法
"SecurityContext": {
  "Capability.Add": List,
  "RunAsUser": Integer,
  "ReadOnlyRootFilesystem": Boolen
}SecurityContext属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| Capability.Add | List | 否 | 否 | 可添加到容器的Capability。 | 取值:["NET_ADMIN"]。 | 
| RunAsUser | Integer | 否 | 否 | 用户ID。 | 无 | 
| ReadOnlyRootFilesystem | Boolean | 否 | 否 | 只读根文件系统。 | 默认值:true。 | 
VolumeMount语法
"VolumeMount": [
  {
    "Name": String,
    "ReadOnly": Boolean,
    "MountPath": String,
    "MountPropagation": String,
    "SubPath": String
  }
]VolumeMount属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| Name | String | 否 | 否 | Volume的名称。 | 名称与Volume部分中为name参数指定的值相同。 | 
| ReadOnly | Boolean | 否 | 否 | 只读属性。 | 默认值:false。 | 
| MountPath | String | 否 | 否 | 安装路径。 | 目标目录中的数据被挂载卷中的数据覆盖。 | 
| MountPropagation | String | 否 | 否 | 数据卷的挂载传播设置。 | 挂载传播允许将Container挂载的卷共享到同一Pod中的其他Container,甚至可以共享到同一节点上的其他Pod。可取值: 
 | 
| SubPath | String | 否 | 否 | 数据卷下的子目录。 | 方便Pod将同一个Volume下不同目录挂载到容器不同目录。 | 
Port语法
"Port": [
  {
    "Port": Interger,
    "Protocol": String
  }
]Port属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| Port | Integer | 否 | 否 | 端口号。 | 取值范围:1~65,535。 | 
| Protocol | String | 否 | 否 | 端口使用的协议。 | 取值: 
 | 
ConfigFileVolume.ConfigFileToPath语法
"ConfigFileVolume.ConfigFileToPath": [
  {
    "Content": String,
    "Path": String
  }
]ConfigFileVolume.ConfigFileToPath属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| Content | String | 否 | 否 | 配置文件的内容。 | 最大为32KB。 | 
| Path | String | 是 | 否 | 配置文件中的相对路径。 | 您可以指定一个目录相对于另一个目录的位置。 | 
SecurityContextSysctl语法
"SecurityContextSysctl": [
  {
    "Value": String,
    "Name": String
  }
] SecurityContextSysctl属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| Value | String | 否 | 否 | 实例运行的安全上下文的变量值。 | 无 | 
| Name | String | 否 | 否 | 实例运行的安全上下文系统名称。 | 取值: 
 | 
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属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| FailureThreshold | Integer | 否 | 否 | 从上次检查成功后认定检查失败的检查次数阈值。 | 必须是连续失败。 默认值:3。 | 
| HttpGet.Scheme | String | 否 | 否 | GET请求协议。 | 取值: 
 | 
| HttpGet.Path | String | 否 | 否 | HttpGet检测的路径。 | 无 | 
| Exec.Command | List | 否 | 否 | 容器内检测的命令。 | 无 | 
| TcpSocket.Port | Integer | 否 | 否 | TcpSocket检测的端口。 | 无 | 
| PeriodSeconds | Integer | 否 | 否 | 检查执行的周期。 | 默认值:10。 最小值:1。 单位:秒。 | 
| TimeoutSeconds | Integer | 否 | 否 | 检查超时的时间。 | 默认值:10。 最小值:1。 单位:秒。 | 
| InitialDelaySeconds | Integer | 否 | 否 | 检查开始执行的时间,以容器启动完成为起点计算。 | 无 | 
| SuccessThreshold | Integer | 否 | 否 | 从上次检查失败后重新认定检查成功的检查次数阈值。 | 必须是连续成功。 默认值:1。 | 
| HttpGet.Port | Integer | 否 | 否 | HttpGet检测的端口号。 | 无 | 
Option语法
"Option": [
  {
    "Name": String,
    "Value": String
  }
] Option属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| Name | String | 否 | 否 | 对象名称。 | 无 | 
| Value | String | 否 | 否 | 对象值。 | 无 | 
Tag语法
"Tag": [
  {
    "Key": String,
    "Value": String
  }
]Tag属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| Key | String | 是 | 否 | 标签键。 | 无 | 
| Value | String | 否 | 否 | 标签值。 | 无 | 
AcrRegistryInfo语法
"AcrRegistryInfo": [
  {
    "RegionId": String,
    "InstanceName": String,
    "Domain": List,
    "InstanceId": String
  }
]AcrRegistryInfo属性
| 属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 | 
| RegionId | String | 否 | 否 | 所属地域ID。 | 默认为本地地域。 | 
| InstanceName | String | 否 | 否 | 实例名称。 | 无 | 
| Domain | List | 否 | 否 | 域名。 | 默认为实例的所有域名。 | 
| InstanceId | String | 是 | 否 | 实例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": {
  }
}