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

语法

{
  "Type": "ALIYUN::ECI::ContainerGroup",
  "Properties": {
    "EipInstanceId": String,
    "Container": List,
    "DnsConfig": Map,
    "InitContainer": List,
    "SecurityGroupId": String,
    "ContainerGroupName": String,
    "ZoneId": String,
    "Volume": List,
    "HostAliase": List,
    "RestartPolicy": String,
    "Tag": List,
    "VSwitchId": String,
    "ImageRegistryCredential": List,
    "Memory": Number,
    "SlsEnable": Boolean,
    "SecurityContextSysctl": List,
    "Cpu": Number,
    "ImageSnapshotId": String
  }
}

属性

属性名称 类型 必须 允许更新 描述 约束
EipInstanceId String 弹性IP ID。 无。
Container List 容器组中包含的容器。 无。
DnsConfig Map Dns配置。 无。
InitContainer List 初始化容器列表。 无。
SecurityGroupId String 指定新创建实例所属于的安全组代码,同一个安全组内的实例之间可以互相访问。 无。
ContainerGroupName String 容器组名称。 无。
ZoneId String 实例所属的可用区编号。 默认值:空(表示由系统选择)。
Volume List 数据卷列表。 最多可以指定20个数据卷。
HostAliase List 自定义pod内一个容器的hostname映射。 无。
RestartPolicy String 实例重启策略。 取值:Always、OnFailure、Never。默认值:Always。
Tag List 键/值对形式的容器组标签列表。 每个容器组定义最多20个标记。键值均为字符串。
VSwitchId String 指定虚拟交换机ID。当前ECI实例均为VPC实例。 vsw网段内IP的个数决定了该vsw最大可创建的ECI实例数,请提前规划vsw网段设置。
ImageRegistryCredential List 登录容器映像仓库的信息,包括服务器地址、用户名和密码。 无。
Memory Number 内存大小。 无。
SlsEnable Boolean 开启用户日志收集。 默认值:false。
SecurityContextSysctl List ECI Sysctl对ECI里面的每个容器都生效。 目前只支持两种Sysctl keyName:kernel.shm_rmid_forced、kernel.msgmax。
Cpu Number CPU大小。 无。
ImageSnapshotId String 镜像缓存ID或快照ID。 无。

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个环境变量。键表示变量的名称,值表示变量的值。
Tty Boolean 是否为此容器分配TTY。 取值:true、false。如果值为true,则stdin也为true。
SecurityContext Map 容器组的安全上下文。 取值:true。
Name String 容器名。 无。
ImagePullPolicy String 镜像拉取策略。 无。
Image String 镜像。 无。
Stdin Boolean 是否在此容器运行时中分配标准输入的缓冲。 取值:true、false。
WorkingDir String 容器的工作目录。 无。
LivenessProbe Map 容器存活探针。 无。
Cpu Number 分配给容器的vCPU数量。 无。
Command List 要发送到容器以运行的命令列表。 最多可以指定一个命令。每个字符串的最大长度为256个字符。
Memory Number 分配给容器的内存。 单位:Gib。
ReadinessProbe Map 容器就绪探针。 无。
VolumeMount List 挂载到容器上的Volume的数量。 最多支持16个。
Port List 开放端口和协议。 最多可以设置100个端口。取值:TCP、UDP。
Arg List 传递给命令的参数。 参数为String类型。最多支持10个参数。
StdinOnce Boolean 由单次attach打开标准输入通道后,断开连接后是否关闭该通道。 取值: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 选项列表。每个选项都包含一个名称和一个值。 每个选项的值是可选的。

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 容器组的安全上下文。 取值:true。
Name String 容器名。 无。
Image String 容器镜像。 无。
Arg List 传递给命令的参数。 参数为String类型。最多支持10个参数。
WorkingDir String 容器的工作目录。 无。
Port List 开放端口和协议。 最多可以设置100个端口。取值:TCP、UDP。
Command List 要发送到容器以运行的命令列表。 最多可以指定一个命令。每个字符串的最大长度为256个字符。
Memory Number 分配给容器的内存。 单位:Gib。
ImagePullPolicy String 镜像拉取策略。您可以使用它从镜像仓库中提取镜像。 无。
VolumeMount List 挂载到容器上的Volume的数量。 最多支持16个。
Cpu Number 分配给容器的vCPU数量。 无。

Volume语法

"Volume": [
  {
    "NFSVolume.Path": String,
    "Name": String,
    "EmptyDirVolume.Medium": String,
    "NFSVolume.Server": String,
    "NFSVolume.ReadOnly": Boolean,
    "ConfigFileVolume.ConfigFileToPath": List,
    "Type": 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 配置文件路径。 无。
Type String Volume的类型。 取值:EmptyDirVolume、NFSVolume、ConfigFileVolume。

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个字符。名称可以包含0~9、a~z、A~Z和下划线(_),不能以数字开头。
Value String 变量的值。 长度必须为0~256个字符。
FieldRef.FieldPath String 对另一个变量的引用。 目前只支持status.podIP。

SecurityContext语法

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

SecurityContext属性

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

VolumeMount语法

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

VolumeMount属性

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

Port语法

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

Port属性

属性名称 类型 必须 允许更新 描述 约束
Port Integer 端口号。 取值范围:1~65535。
Protocol String 端口使用的协议。 取值:TCP、UDP。

ConfigFileVolume.ConfigFileToPath语法

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

ConfigFileVolume.ConfigFileToPath属性

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

返回值

Fn::GetAtt

  • ContainerGroupId:容器组ID。
  • ContainerGroupName:容器组的名称。

示例

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "ContainerGroup": {
      "Type": "ALIYUN::ECI::ContainerGroup",
      "Properties": {
        "EipInstanceId": {
          "Ref": "EipInstanceId"
        },
        "Container": {
          "Ref": "Container"
        },
        "DnsConfig": {
          "Ref": "DnsConfig"
        },
        "InitContainer": {
          "Ref": "InitContainer"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroupId"
        },
        "ContainerGroupName": {
          "Ref": "ContainerGroupName"
        },
        "ZoneId": {
          "Ref": "ZoneId"
        },
        "Volume": {
          "Ref": "Volume"
        },
        "HostAliase": {
          "Ref": "HostAliase"
        },
        "RestartPolicy": {
          "Ref": "RestartPolicy"
        },
        "Tag": {
          "Ref": "Tag"
        },
        "VSwitchId": {
          "Ref": "VSwitchId"
        },
        "ImageRegistryCredential": {
          "Ref": "ImageRegistryCredential"
        },
        "Memory": {
          "Ref": "Memory"
        },
        "SlsEnable": {
          "Ref": "SlsEnable"
        },
        "SecurityContextSysctl": {
          "Ref": "SecurityContextSysctl"
        },
        "Cpu": {
          "Ref": "Cpu"
        }
      }
    }
  },
  "Parameters": {
    "EipInstanceId": {
      "Type": "String",
      "Description": "Elastic IP ID"
    },
    "Container": {
      "Type": "Json",
      "Description": "The containers that constitute the container group."
    },
    "DnsConfig": {
      "Type": "Json",
      "Description": "The information about DNS configurations."
    },
    "InitContainer": {
      "Type": "Json",
      "Description": "The containers that constitute the container group for initializing."
    },
    "SecurityGroupId": {
      "Type": "String",
      "Description": "The ID of the security group to which the instance belongs. Instances in the same security group can access one another."
    },
    "ContainerGroupName": {
      "Type": "String",
      "Description": "The name of the container group."
    },
    "ZoneId": {
      "Type": "String",
      "Description": "The ID of the zone in which the instance resides. If you leave the parameter blank, the system assigns a zone for you. The default value is blank."
    },
    "Volume": {
      "Type": "Json",
      "Description": "The data volume. You can specify a maximum of 20 data volumes.",
      "MaxLength": 20
    },
    "HostAliase": {
      "Type": "Json",
      "Description": "Customize the hostname mapping of a container inside the pod"
    },
    "RestartPolicy": {
      "Type": "String",
      "Description": "The policy for restarting the instance. Default value: Always.",
      "AllowedValues": [
        "Always",
        "OnFailure",
        "Never"
      ]
    },
    "Tag": {
      "Type": "Json",
      "Description": "The list of container group tags in the form of key/value pairs. You can define a maximum of 20 tags for each container group.",
      "MaxLength": 20
    },
    "VSwitchId": {
      "Type": "String",
      "Description": "The ID of the specified VSwitch. Currently, ECI instances can only be deployed in VPCs."
    },
    "ImageRegistryCredential": {
      "Type": "Json",
      "Description": "The information that you need to log on to the container image repository, including the server address, username, and password.",
      "MaxLength": 10
    },
    "Memory": {
      "Type": "Number",
      "Description": "memory size"
    },
    "SlsEnable": {
      "Type": "Boolean",
      "Description": "Enable user log collection. The default is False.",
      "AllowedValues": [
        "True",
        "true",
        "False",
        "false"
      ]
    },
    "SecurityContextSysctl": {
      "Type": "Json",
      "Description": "ECI Sysctl is valid for every container in ECI.\nCurrently only two Sysctl keyNames are supported:\nKernel.shm_rmid_forced\nKernel.msgmax"
    },
    "Cpu": {
      "Type": "Number",
      "Description": "CPU size"
    }
  },
  "Outputs": {
    "ContainerGroupId": {
      "Description": "The ID of the container group.",
      "Value": {
        "Fn::GetAtt": [
          "ContainerGroup",
          "ContainerGroupId"
        ]
      }
    },
    "ContainerGroupName": {
      "Description": "The name of the container group.",
      "Value": {
        "Fn::GetAtt": [
          "ContainerGroup",
          "ContainerGroupName"
        ]
      }
    }
  }
}