ALIYUN::ECI::ContainerGroup

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

实例重启策略。

取值:

  • Always(默认值)

  • OnFailure

  • Never

ResourceGroupId

String

资源组ID。

Tag

List

键值对形式的容器组标签列表。

每个容器组最多定义20个标签。键值均为字符串。

更多信息,请参见Tag属性

VSwitchId

String

交换机ID。当前ECI实例均为专有网络实例。

交换机网段内IP的个数决定了该交换机最大可创建的ECI实例数,请提前规划交换机网段设置。

ImageRegistryCredential

List

登录容器映像仓库的信息,包括服务器地址、用户名和密码。

更多信息,请参见ImageRegistryCredential属性

Memory

Number

内存大小。

SlsEnable

Boolean

是否开启用户日志收集。

取值:

  • true:开启。

  • false(默认值):不开启。

SecurityContextSysctl

List

实例运行的安全上下文。

更多信息,请参见SecurityContext属性

Cpu

Number

CPU大小。

ImageSnapshotId

String

镜像缓存ID或快照ID。

SpotPriceLimit

Number

实例的每小时最高价格。

最大支持3位小数。

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

AutoMatchImageCache

Boolean

自动匹配镜像缓存。

SpotStrategy

String

实例的抢占策略。

取值:

  • NoSpot(默认值):正常按量付费实例。

  • SpotWithPriceLimit:设置上限价格的抢占式实例。

  • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格。

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。

取值:

  • true:为此容器分配TTY。

    当值为true时,则stdin也为true。

  • false:不为此容器分配TTY。

SecurityContext

Map

容器组的安全上下文。

Name

String

容器名。

ImagePullPolicy

String

镜像拉取策略。

Image

String

镜像。

Stdin

Boolean

是否在此容器运行时分配标准输入的缓冲。

取值:

  • true:在此容器运行时分配标准输入的缓冲。

  • false:不在此容器运行时分配标准输入的缓冲。

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个端口。取值:

  • TCP

  • UDP

更多信息,请参见Port属性

Arg

List

传递给命令的参数。

参数为String类型。最多支持10个参数。

StdinOnce

Boolean

由客户端连接时首次打开标准输入通道后,断开连接后是否关闭该通道。

取值:

  • 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.Port

Integer

系统向其中发送TCP套接字请求以执行检查的端口。

HttpGet.Scheme

String

用于连接主机的协议。

取值:

  • HTTP

  • HTTPS

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个端口。取值:

  • TCP

  • UDP

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的类型。

取值:

  • EmptyDirVolume

  • NFSVolume

  • ConfigFileVolume

FlexVolume.Options

Map

FlexVolume对象选项列表。

为KV形式,采用JSON传递。

例如:通过FlexVolume挂载云盘时,Options的格式为{"volumeId":"d-2zehdahrwoa7srg****","performanceLevel": "PL2"}

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地址。

此地址不包含协议前缀。

例如:http://https://

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。可取值:

  • None:该卷不感知任何后续在此卷或其子目录上执行的挂载操作。

  • HostToCotainer:该卷将会感知到后续在此卷或其子目录上的挂载操作。

  • Bidirectional:和HostToCotainer类似,能感知挂载操作。另外,该卷将被传播回主机和使用同一卷的所有Pod的所有容器。

SubPath

String

数据卷下的子目录。

方便Pod将同一个Volume下不同目录挂载到容器不同目录。

Port语法

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

Port属性

属性名称

类型

必须

允许更新

描述

约束

Port

Integer

端口号。

取值范围:1~65,535。

Protocol

String

端口使用的协议。

取值:

  • TCP

  • UDP

ConfigFileVolume.ConfigFileToPath语法

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

ConfigFileVolume.ConfigFileToPath属性

属性名称

类型

必须

允许更新

描述

约束

Content

String

配置文件的内容。

最大为32KB。

Path

String

配置文件中的相对路径。

您可以指定一个目录相对于另一个目录的位置。

SecurityContextSysctl语法

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

SecurityContextSysctl属性

属性名称

类型

必须

允许更新

描述

约束

Value

String

实例运行的安全上下文的变量值。

Name

String

实例运行的安全上下文系统名称。

取值:

  • 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属性

属性名称

类型

必须

允许更新

描述

约束

FailureThreshold

Integer

从上次检查成功后认定检查失败的检查次数阈值。

必须是连续失败。

默认值:3。

HttpGet.Scheme

String

GET请求协议。

取值:

  • HTTP

  • HTTPS

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": {
  }
}