ALIYUN::CS::ManagedKubernetesCluster is used to create a Container Service for Kubernetes (ACK) managed cluster.
Syntax
{
"Type": "ALIYUN::CS::ManagedKubernetesCluster",
"Properties": {
"CloudMonitorFlags": Boolean,
"ProxyMode": String,
"SnatEntry": Boolean,
"VpcId": String,
"Tags": List,
"LoginPassword": String,
"ContainerCidr": String,
"Name": String,
"Taint": List,
"KeyPair": String,
"Addons": List,
"ServiceCidr": String,
"KubernetesVersion": String,
"SecurityGroupId": String,
"EndpointPublicAccess": Boolean,
"ClusterSpec": String,
"TimeoutMins": Number,
"PodVswitchIds": List,
"EncryptionProviderKey": String,
"Runtime": Map,
"SocEnabled": Boolean,
"UserData": String,
"OsType": String,
"IsEnterpriseSecurityGroup": Boolean,
"Platform": String,
"LoadBalancerSpec": String,
"FormatDisk": Boolean,
"NodeCidrMask": String,
"KeepInstanceName": Boolean,
"DeletionProtection": Boolean,
"ResourceGroupId": String,
"NodePools": List,
"NodeNameMode": String,
"SecurityHardeningOs": Boolean,
"DeleteOptions": List,
"ControlPlaneLogComponents": List,
"ControlPlaneLogTtl": Number,
"ControlPlaneLogProject": String,
"MaintenanceWindow": Map,
"ZoneIds": List,
"VSwitchIds": List
}
}
Properties
Property | Type | Required | Editable | Description | Constraint |
Name | String | Yes | No | The name of the cluster. | The name must be 1 to 63 characters in length, and can contain letters, digits, and hyphens (-). |
VpcId | String | Yes | No | The ID of the virtual private cloud (VPC). | If you do not specify this property, the system automatically creates a VPC whose CIDR block is 192.168.0.0/16. You must specify both |
Addons | List | No | Yes | The components that you want to use for the cluster. | Valid values:
For more information, see Addons properties. |
SecurityHardeningOs | Boolean | No | No | Specifies whether to enable security hardening for Alibaba Cloud Linux. | Valid values:
Default value: false. |
CloudMonitorFlags | Boolean | No | No | Specifies whether to install the CloudMonitor agent. | Valid values:
|
ClusterSpec | String | No | No | The specification of the ACK managed cluster. | Valid values:
|
ContainerCidr | String | No | No | The CIDR block of the container. | The CIDR block of the container cannot overlap with the CIDR block of the VPC. If you use the VPC that is automatically created by the system, the CIDR block 172.16.0.0/16 is used by default. |
DeletionProtection | Boolean | No | Yes | Specifies whether to enable deletion protection. | After you enable deletion protection, you cannot delete the cluster using the ACK console or calling specific ACK API operations. Valid values:
|
EncryptionProviderKey | String | No | No | The ID of the key that is managed by Key Management Service (KMS). | The key is used to encrypt data disks. You can use KMS only for ACK Pro clusters. |
EndpointPublicAccess | Boolean | No | No | Specifies whether to allow the cluster to access the API server over the Internet. | Valid values:
|
FormatDisk | Boolean | No | No | Specifies whether to attach a data disk to a node that is created based on an existing ECS instance. | Valid values:
|
IsEnterpriseSecurityGroup | Boolean | No | No | Specifies whether to create an advanced security group. | This property takes effect when SecurityGroupId is left empty. Valid values:
|
KeepInstanceName | Boolean | No | No | Specifies whether to retain the names of existing ECS instances in the cluster. | Valid values:
|
KeyPair | String | No | No | The name of the key pair. | You can specify KeyPair or LoginPassword. |
KubernetesVersion | String | No | Yes | The Kubernetes version of the cluster. The Kubernetes versions supported by ACK are the same as the Kubernetes versions supported by open source Kubernetes. We recommend that you use the latest version. | You can create clusters of the latest two versions. For more information about the Kubernetes versions supported by ACK, see Overview of Kubernetes versions supported by ACK. |
LoadBalancerSpec | String | No | No | The specification of the Server Load Balancer (SLB) instance. | Valid values:
|
LoginPassword | String | No | No | The password for SSH logons. | The password must be 8 to 30 characters in length, and must contain letters, digits, and special characters. The following special characters are supported: Note You can specify LoginPassword or KeyPair. |
NodeCidrMask | String | No | No | The maximum number of IP addresses that can be assigned to nodes. | The value varies based on the CIDR block that you specify for pods. This property takes effect only when you use the Flannel component for the cluster. Default value: 25. |
NodeNameMode | String | No | No | The custom name of the node. | A node name consists of a prefix, an IP address substring, and a suffix.
For example, if the node IP address is 192.168.XX.XX, the prefix is |
NodePools | List | No | No | The details of the node pools. | For more information, see NodePools properties. |
OsType | String | No | No | The OS type. | Valid values:
|
Platform | String | No | No | The OS distribution. | Valid values:
|
PodVswitchIds | List | No | No | The IDs of the pod vSwitches. | For each node vSwitch, you must specify at least one pod vSwitch that is deployed in the same zone as the node vSwitch. The pod vSwitch cannot overlap with the node vSwitch. We recommend that you use a vSwitch whose CIDR block mask is not greater than 19 bits in length. Note If you install the Terway component in the cluster, you must specify this property. |
ProxyMode | String | No | No | The kube-proxy mode. | Valid values:
|
ResourceGroupId | String | No | Yes | The ID of the resource group to which the cluster belongs. | None. |
Runtime | Map | No | No | The container runtime. | The Runtime property consists of the following fields:
Example:
For more information about how to select a container runtime, see Comparison among Docker, containerd, and Sandboxed-Container. For more information, see Runtime properties. |
SecurityGroupId | String | No | No | The ID of the security group to which the ECS instances in the cluster belong. | None. |
ServiceCidr | String | No | No | The CIDR block of the Service. | The CIDR block of the service cannot overlap with the CIDR block of the VPC or container. If you use the VPC that is automatically created by the system, the CIDR block 172.19.0.0/20 is used by default. |
SnatEntry | Boolean | No | No | Specifies whether to configure SNAT rules for the virtual private cloud (VPC) in which you want to deploy the cluster. | Valid values:
|
SocEnabled | Boolean | No | No | Specifies whether to enable reinforcement based on classified protection. | Valid values:
|
Tags | List | No | Yes | The tags of the cluster. | You can add up to 20 tags. For more information, see Tags properties. |
Taint | List | No | No | The taints that you want to add to nodes to ensure that pods are appropriately scheduled. | If you apply tolerations to pods, the pods can be scheduled to nodes that have matching taints. |
TimeoutMins | Number | No | No | The timeout period of cluster creation. | Default value: 60. Unit: minutes. |
UserData | String | No | No | The user data that you want to pass when you create the ECS instances. | The user data can be up to 16 KB in size. You do not need to convert the data into Base64-encoded strings. If the user data contains special characters, you must add the escape character (\) before each special character. |
DeleteOptions | List | No | Yes | Deletion configurations of cluster resources. | For more information, see DeleteOptions properties. |
ControlPlaneLogTtl | Number | No | Yes | The retention period of control plane logs in days. | None. |
ControlPlaneLogComponents | List | No | Yes | The list of component names. | You can use this property to specify the control plane components whose logs you want to collect. By default, the logs of kube-apiserver, kube-controller-manager, and kube-scheduler are collected. |
ControlPlaneLogProject | String | No | Yes | The Simple Log Service (SLS) project that you want to use to store the logs of control plane components. | You can use an existing project or a new project. If you choose to automatically create an SLS project, the system creates a project named |
MaintenanceWindow | Map | No | Yes | The maintenance window configurations of the cluster. | For more information, see MaintenanceWindow properties. |
VSwitchIds | List | Yes | No | The vSwitches to which worker nodes are bound. | None. |
ZoneIds | List | No | No | The zones. | None. |
NodePools syntax
"NodePools": [
{
"ScalingGroup": Map,
"KubernetesConfig": Map,
"NodePoolInfo": Map
}
]
NodePools properties
Property | Type | Required | Allow Updates | Description | Constraint |
ScalingGroup | Map | Yes | No | The configurations of the scaling group that is used by the node pool. | For more information, see ScalingGroup properties. |
KubernetesConfig | Map | No | No | The configurations about the cluster. | For more information, see KubernetesConfig properties. |
NodePoolInfo | Map | No | No | The configuration of the node pool. | For more information, see NodePoolInfo properties. |
ScalingGroup syntax
"ScalingGroup": {
"RdsInstances": List,
"IsEnterpriseSecurityGroup": Boolean,
"VSwitchIds": List,
"InternetMaxBandwidthOut": Integer,
"DataDisks": List,
"Period": Integer,
"InternetChargeType": String,
"KeyPair": String,
"SystemDiskPerformanceLevel": String,
"ImageId": String,
"InstanceTypes": List,
"SystemDiskCategory": String,
"PeriodUnit": String,
"LoginPassword": String,
"InstanceChargeType": String,
"SystemDiskSize": Integer,
"Tags": List,
"ZoneIds": List,
"DesiredSize": Integer
}
ScalingGroup properties
Property | Type | Required | Allow updates | Description | Constraint |
InstanceTypes | List | Yes | No | The instance types. | None. |
SystemDiskSize | Integer | Yes | No | The system disk size of the nodes. | Unit: GiB. Valid values: 40 to 500. |
VSwitchIds | List | Yes | No | The IDs of the vSwitches. | None. |
DesiredSize | Integer | No | No | The expected number of nodes in the node pool. | None. |
DataDisks | List | No | No | The configurations of the data disks that are attached to the nodes in the node pool. | For more information, see DataDisks properties. |
ImageId | String | No | No | The ID of the custom image. | By default, the image that is provided by the system is used. |
InstanceChargeType | String | No | No | The billing method of the nodes in the node pool. | Valid values:
|
InternetChargeType | String | No | No | The billing method of the public IP address. | Valid values:
|
InternetMaxBandwidthOut | Integer | No | No | The maximum outbound bandwidth of the public IP address of the node. | Unit: Mbit/s. Valid values: 1 to 100. |
IsEnterpriseSecurityGroup | Boolean | No | No | Specifies whether to automatically create an advanced security group. | Valid values:
|
KeyPair | String | No | No | The name of the key pair that is used for password-free logon. | You can specify KeyPair or LoginPassword. |
LoginPassword | String | No | No | The password for SSH logon. | You can specify KeyPair or LoginPassword. The password must be 8 to 30 characters in length, and must contain uppercase letters, lowercase letters, digits, and special characters. |
Period | Integer | No | No | The subscription duration of the nodes in the node pool. | You must specify this property only when InstanceChargeType is set to PrePaid. Valid values if PeriodUnit is set to Month: 1, 2, 3, 6, and 12. Default value: 1. |
PeriodUnit | String | No | No | The unit of the subscription duration of the nodes in the node pool. | You must specify this property when InstanceChargeType is set to PrePaid. Set the value to Month. |
RdsInstances | List | No | No | The IDs of the ApsaraDB RDS instances. | None. |
SystemDiskCategory | String | No | No | The system disk category of the nodes. | Valid values:
|
SystemDiskPerformanceLevel | String | No | No | The performance level (PL) of the system disks for nodes. | This property takes effect only for ESSDs. |
Tags | List | No | No | The tags that you want to add to the ECS instances. | For more information, see Tags properties. |
ZoneIds | List | No | No | The zones. | None. |
DataDisks syntax
"DataDisks": [
{
"AutoSnapshotPolicyId": String,
"Encrypted": Boolean,
"Size": Integer,
"Category": String,
"PerformanceLevel": String
}
]
DataDisks properties
Property | Type | Required | Allow updates | Description | Constraint |
AutoSnapshotPolicyId | String | No | No | The ID of the automatic snapshot policy. | The system automatically backs up cloud disks based on the specified automatic snapshot policy. |
Category | String | No | No | The data disk category. | Valid values:
|
Encrypted | Boolean | No | No | Specifies whether to encrypt data disks. | Valid values:
|
PerformanceLevel | String | No | No | The PL of the data disk for nodes. | This property takes effect only for ESSDs. The PL of a disk varies based on the disk size. For more information, see ESSDs. |
Size | Integer | No | No | The data disk size. | Unit: GiB. Valid values: 40 to 32768. Default value: 120. |
KubernetesConfig syntax
"KubernetesConfig": {
"Runtime": String,
"RuntimeVersion": String,
"CpuPolicy": String,
"Labels": List,
"NodeNameMode": String,
"Taints": List
}
KubernetesConfig properties
Property | Type | Required | Allow Updates | Description | Constraint |
Runtime | String | Yes | No | The container runtime. | None. |
RuntimeVersion | String | Yes | No | The version of the container runtime. | None. |
CpuPolicy | String | No | No | The CPU management policy of the nodes. | Valid values when the Kubernetes version of the cluster is 1.12.6 or later:
|
Labels | List | No | No | The labels of the nodes. | You can add labels to the nodes in the cluster. For more information, see Labels properties. |
NodeNameMode | String | No | No | The custom name of the node. | A node name consists of a prefix, an IP address substring, and a suffix.
For example, if the node IP address is 192.168.XX.XX, the prefix is |
Taints | List | No | No | Taint configuration. | For more information, see Taints properties. |
Labels syntax
"Labels": {
"Value": String,
"Key": String
}
Labels properties
Property | Type | Required | Allow updates | Description | Constraint |
Key | String | Yes | No | The key of the label. | None. |
Value | String | Yes | No | The value of the label. | None. |
Taints syntax
"Taints": [{
"Value": String,
"Effect": String,
"Key": String
}]
Taints properties
Property | Type | Required | Editable | Description | Constraint |
Key | String | Yes | No | The taint name. | None. |
Value | String | Yes | No | The taint value. | None. |
Effect | String | No | No | The scheduling policy. |
|
NodePoolInfo syntax
"NodePoolInfo": {
"Name": String,
"Type": String,
"ResourceGroupId": String
}
NodePoolInfo properties
Property | Type | Required | Allow updates | Description | Constraint |
ResourceGroupId | String | No | Yes | The resource group to which the node pool belongs. | None. |
Name | String | Yes | No | The name of the node pool. | None. |
Type | String | No | No | The type of the node pool. | Valid values:
|
MaintenanceWindow syntax
"MaintenanceWindow": {
"Enable": Boolean,
"MaintenanceTime": String,
"Duration": String,
"WeeklyPeriod": String,
"Recurrence": String
}
MaintenanceWindow properties
Property | Type | Required | Allow updates | Description | Constraint |
Duration | String | No | Yes | The duration of the maintenance window. | Valid values: 1 to 24. Unit: hour. Default value: 3. |
Enable | Boolean | No | Yes | Specifies whether to enable the maintenance window. | Valid values:
Default value: |
MaintenanceTime | String | No | Yes | The start time of the maintenance window. | Specify the time in the RFC 3339 format. |
WeeklyPeriod | String | No | Yes | The maintenance cycle. | Separate multiple values with commas (,). Valid values: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, and Sunday. Default value: |
Recurrence | String | No | Yes | The recurrence rule defined for the maintenance window using the RFC 5545 recurrence rule. | You must set FREQ to WEEKLY and cannot specify COUNT or UNTIL. |
Tags syntax
"Tags": [
{
"Key": String,
"Value": String
}
]
Tags properties
Property | Type | Required | Allow Updates | Description | Constraint |
Key | String | Yes | No | The key of the tag. | The key must be 1 to 64 characters in length, and cannot start with |
Value | String | Yes | No | The value of the tag. | The value can be up to 128 characters in length, and cannot start with |
Addons syntax
"Addons": [
{
"Version": String,
"Config": String,
"Name": String,
"Disabled": Boolean
}
]
Addons properties
Property | Type | Required | Allow updates | Description | Constraint |
Name | String | Yes | No | The name of the component. | None. |
Config | String | No | Yes | The configurations of the component. | None. |
Disabled | Boolean | No | No | Specifies whether to disable default installation for the component. | Valid values:
|
Version | String | No | No | The version of the component. | By default, the latest version is used. |
DeleteOptions syntax
"DeleteOptions": [
{
"DeleteMode": String,
"ResourceType": String
}
]
DeleteOptions properties
Property | Type | Required | Allow Updates | Description | Constraint |
DeleteMode | String | No | Yes | The policy that specifies whether to delete the specified type of resources. | Valid values:
|
ResourceType | String | No | Yes | The type of the resources. | Valid values:
|
Runtime syntax
"Runtime": {
"Name": String,
"Version": String
}
Runtime properties
Property | Type | Required | Editable | Description | Constraint |
Name | String | Yes | No | The name of the container runtime. | ACK supports the following types of container runtimes:
Default value: |
Version | String | No | No | The version of the container runtime. | By default, the latest version is used. For more information about changes to the sandboxed container runtime, see Release notes for Sandboxed-Container. |
Return values
Fn::GetAtt
ClusterId: the ID of the cluster.
TaskId: the ID of the task. The system automatically assigns the task ID, which you can use to query the task status.
DefaultUserKubeConfig: the default kubeconfig file of the cluster credentials.
ScalingRuleId: the ID of the scaling rule.
ScalingGroupId: the ID of the scaling group.
PrivateUserKubConfig: the private kubeconfig file of the cluster credentials.
ScalingConfigurationId: the ID of the scaling configuration.
Nodes: the nodes in the cluster.
APIServerSLBId: the ID of the SLB instance that is associated with the API server.
IngressSLBId: the ID of the SLB Ingress.
WorkerRamRoleName: the name of the RAM role for worker nodes.
Examples
YAML
format
ROSTemplateFormatVersion: '2015-09-01'
Description: Test Create ManagedKubernetesCluster
Parameters: {}
Resources:
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
VpcName: mytest
CidrBlock: 192.168.0.0/16
VSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
VSwitchName: mytest
VpcId:
Ref: Vpc
ZoneId:
Fn::Select:
- '0'
- Fn::GetAZs:
Ref: ALIYUN::Region
CidrBlock: 192.168.1.0/24
ManagedKubernetesCluster:
Type: ALIYUN::CS::ManagedKubernetesCluster
Properties:
VSwitchIds:
- Ref: VSwitch
VpcId:
Ref: Vpc
ClusterSpec: ack.pro.small
LoginPassword: Admin@123!
Name: mytest
Outputs:
ClusterId:
Value:
Fn::GetAtt:
- ManagedKubernetesCluster
- ClusterId
TaskId:
Value:
Fn::GetAtt:
- ManagedKubernetesCluster
- TaskId
JSON
format
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": "Test Create ManagedKubernetesCluster",
"Parameters": {
},
"Resources": {
"Vpc": {
"Type": "ALIYUN::ECS::VPC",
"Properties": {
"VpcName": "mytest",
"CidrBlock": "192.168.0.0/16"
}
},
"VSwitch": {
"Type": "ALIYUN::ECS::VSwitch",
"Properties": {
"VSwitchName": "mytest",
"VpcId": {
"Ref": "Vpc"
},
"ZoneId": {
"Fn::Select": [
"0",
{
"Fn::GetAZs": {
"Ref": "ALIYUN::Region"
}
}
]
},
"CidrBlock": "192.168.1.0/24"
}
},
"ManagedKubernetesCluster": {
"Type": "ALIYUN::CS::ManagedKubernetesCluster",
"Properties": {
"VSwitchIds": [
{
"Ref": "VSwitch"
}
],
"VpcId": {
"Ref": "Vpc"
},
"ClusterSpec": "ack.pro.small",
"LoginPassword": "Admin@123!",
"Name": "mytest"
}
}
},
"Outputs": {
"ClusterId": {
"Value": {
"Fn::GetAtt": [
"ManagedKubernetesCluster",
"ClusterId"
]
}
},
"TaskId": {
"Value": {
"Fn::GetAtt": [
"ManagedKubernetesCluster",
"TaskId"
]
}
}
}
}