Use ALIYUN::CS::ManagedEdgeKubernetesCluster to create an ACK managed edge Kubernetes cluster.
Syntax
{
"Type": "ALIYUN::CS::ManagedEdgeKubernetesCluster",
"Properties": {
"Profile": String,
"VpcId": String,
"ServiceCidr": String,
"Name": String,
"Tags": List,
"ProxyMode": String,
"SnatEntry": Boolean,
"LoginPassword": String,
"KeyPair": String,
"Addons": List,
"EndpointPublicAccess": Boolean,
"TimeoutMins": Number,
"ClusterSpec": String,
"ContainerCidr": String,
"CloudMonitorFlags": Boolean,
"IsEnterpriseSecurityGroup": Boolean,
"NodeCidrMask": String,
"DeletionProtection": Boolean,
"ResourceGroupId": String,
"RrsaConfig": Map,
"MaintenanceWindow": Map,
"ZoneIds": List,
"VSwitchIds": List,
"NodePools": List,
"EncryptionProviderKey": String,
"KubernetesVersion": String,
"IpStack": String
}
}Properties
Property name | Type | Required | Update allowed | Description | Constraints |
Name | String | Yes | No | The name of the cluster. | The name must start with a letter or a digit. It can contain letters, Chinese characters, digits, and hyphens (-). |
Addons | List | No | No | The list of components to install in the cluster. | Valid values:
For more information, see Addons properties. |
CloudMonitorFlags | Boolean | No | No | Specifies whether to install the CloudMonitor agent. | Valid values:
|
ClusterSpec | String | No | No | The type of the managed cluster. | Valid values:
|
ContainerCidr | String | No | No | The CIDR block for pods. | This parameter is required when you create a cluster that uses the Flannel plugin. The value must be a valid private CIDR block or a subnet of the following CIDR blocks:
The CIDR block cannot overlap with the VPC CIDR block or the CIDR blocks of existing Kubernetes clusters in the VPC. This parameter cannot be changed after the cluster is created. For more information about network planning, see Plan CIDR blocks for an ACK managed cluster. |
RrsaConfig | Map | No | No | The configurations of RRSA. | For more information, see RrsaConfig properties. |
DeletionProtection | Boolean | No | Yes | Specifies whether to enable deletion protection. | If deletion protection is enabled, the cluster cannot be directly deleted. Valid values:
|
EndpointPublicAccess | Boolean | No | No | Specifies whether to expose the API server to the internet. | Valid values:
|
IsEnterpriseSecurityGroup | Boolean | No | No | Determines whether to create an advanced security group. | This parameter takes effect only when SecurityGroupId is left empty. Valid values:
|
KeyPair | String | No | No | The name of the key pair. | You can specify either LoginPassword or KeyPair. |
LoginPassword | String | No | No | The logon password. | The password must be 8 to 30 characters in length. It must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. The supported special characters are: You can specify either LoginPassword or KeyPair. |
NodeCidrMask | String | No | No | The maximum number of CIDR blocks that can be assigned to a node. | The number is determined by the specified pod CIDR block. This parameter takes effect only when the cluster uses the Flannel plugin. Default value: 25. |
Profile | String | No | No | The identifier of the edge cluster. | Default value: Edge. |
ProxyMode | String | No | No | The kube-proxy proxy mode. | Valid values:
|
ResourceGroupId | String | No | Yes | The ID of the resource group to which the cluster belongs. | None |
ServiceCidr | String | No | No | The service CIDR block. | The CIDR block cannot overlap with the VPC CIDR block or the container CIDR block. If you let the system automatically create a VPC, the default CIDR block is 172.19.0.0/20. |
SnatEntry | Boolean | No | No | Specifies whether to configure an SNAT entry for the network. | Valid values:
Note If you use the VPC that is automatically created by the system, you must set this property to true. If you use an existing VPC that is not automatically created by the system, you must specify this property based on whether the VPC can access the Internet. |
MaintenanceWindow | Map | No | Yes | The cluster maintenance window configuration. | For more information, see MaintenanceWindow properties. |
Tags | List | No | Yes | The tags. | You can add up to 20 tags. For more information, see the Tags property. |
TimeoutMins | Number | No | No | The timeout period for cluster stack creation. | Default value: 60. Unit: minutes. |
VSwitchIds | List | No | No | The vSwitches to which the worker nodes are attached. | None |
VpcId | String | No | No | The ID of the virtual private cloud (VPC). | If this parameter is left empty, the system automatically creates a VPC with the CIDR block 192.168.0.0/16. VpcId and VSwitchIds must both be specified, or both be left empty. |
ZoneIds | List | No | No | The list of zones. | None |
NodePools | List | No | No | The information about the node pools. | For more information, see NodePools properties. |
EncryptionProviderKey | String | No | No | The ID of a key managed by Key Management Service (KMS). | This key encrypts data disks. You can use KMS only in ACK Pro clusters. |
IpStack | String | No | No | The IP protocol stack of the cluster. | Valid values:
|
KubernetesVersion | String | No | Yes | The version of the cluster. This version is consistent with the Kubernetes community baseline. Select the latest version. | You can create clusters of the two latest versions. For more information about the Kubernetes versions that ACK supports, see Version Guide. |
MaintenanceWindow syntax
"MaintenanceWindow": {
"Enable": Boolean,
"MaintenanceTime": String,
"Duration": String,
"WeeklyPeriod": String,
"Recurrence": String
}MaintenanceWindow properties
Property name | Type | Required | Updatable | Description | Constraints |
Duration | String | No | Yes | The duration of the maintenance window. | The value must be an integer from 1 to 24. The unit is hours. Default value: 3h. |
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. | The RFC 3339 format. |
WeeklyPeriod | String | No | Yes | The maintenance period. | Separate multiple values with commas (,). Valid values: {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday} Default value: |
Recurrence | String | No | Yes | The recurrence rule for the maintenance window, defined using RFC5545 Recurrence Rule syntax. | Only FREQ=WEEKLY is supported. The COUNT and UNTIL parameters are not supported. |
NodePools syntax
"NodePools": [
{
"ScalingGroup": Map,
"KubernetesConfig": Map,
"NodePoolInfo": Map
}
]NodePools properties
Property name | Type | Required | Allow Updates | Description | Constraints |
ScalingGroup | Map | Yes | No | The scale-out group configuration for the node pool. | For more information, see ScalingGroup properties. |
KubernetesConfig | Map | No | No | The cluster configuration. | For more information, see KubernetesConfig properties. |
NodePoolInfo | Map | No | No | The node pool configuration. | For more information, see NodePoolInfo properties. |
NodePoolInfo syntax
"NodePoolInfo": {
"Name": String,
"Type": String,
"ResourceGroupId": String
}NodePoolInfo properties
Property name | Type | Required | Allow updates | Description | Constraints |
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:
|
KubernetesConfig syntax
"KubernetesConfig": {
"Runtime": String,
"RuntimeVersion": String,
"CpuPolicy": String,
"Labels": List,
"NodeNameMode": String,
"Taints": List
}KubernetesConfig properties
Property name | Type | Required | Updatable | Description | Constraints |
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 for the node. | The following two policies are supported for clusters of version 1.12.6 or later:
|
Labels | List | No | No | The node labels. | Adds labels to Kubernetes cluster nodes. For more information, see Labels properties. |
NodeNameMode | String | No | No | The custom node name. | The node name consists of three parts: a prefix, a substring of the node's IP address, and a suffix.
For example, if the node IP address is 192.168.XX.XX, the prefix is |
Taints | List | No | No | The taint configuration. | For more information, see Taints properties. |
Label syntax
"Labels": {
"Value": String,
"Key": String
}Labels properties
Property name | Type | Required | Update allowed | Description | Constraints |
Key | String | Yes | No | The tag key. | None |
Value | String | Yes | No | The tag value. | None |
Taints syntax
"Taints": [{
"Value": String,
"Effect": String,
"Key": String
}]Taint properties
Property name | Type | Required | Updatable | Description | Constraints |
Key | String | Yes | No | The name of the taint. | None |
Value | String | Yes | No | The value of the taint. | None |
Effect | String | No | No | The scheduling policy. |
|
ScalingGroup syntax
"ScalingGroup": {
"SocEnabled": Boolean,
"ImageType": String,
"InstancePatterns": List,
"SecurityHardeningOs": Boolean,
"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 name | Type | Required | Updatable | Description | Constraints |
InstanceTypes | List | No | No | The instance types. | None |
SystemDiskSize | Integer | Yes | No | The size of the node's system disk. | Unit: GiB. Value range: 40 to 500. |
VSwitchIds | List | No | No | A list of virtual switch IDs. | None |
SocEnabled | Boolean | No | No | Specifies whether to enable security hardening based on classified protection. | Valid values:
|
ImageType | String | No | No | The type of the operating system image. | None |
InstancePatterns | List | No | No | The instance property configurations. | For more information, see InstancePatterns properties. |
SecurityHardeningOs | Boolean | No | No | Alibaba Cloud OS security hardening. | Valid values:
Default value: |
DesiredSize | Integer | No | No | The expected number of nodes in the node pool. | None |
DataDisks | List | No | No | The data disk configurations for 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 system-provided image is used. |
InstanceChargeType | String | No | No | The billing method for the nodes in the node pool. | Valid values:
|
InternetChargeType | String | No | No | The billing method for the public IP address. | Valid values:
|
InternetMaxBandwidthOut | Integer | No | No | The maximum outbound bandwidth of the public IP address for the node. | Unit: Mbps. Value range: 1 to 100. |
IsEnterpriseSecurityGroup | Boolean | No | No | An enterprise-level security group is automatically created. | Valid values:
|
KeyPair | String | No | No | The name of the key pair for password-free logon. | Specify either `KeyPair` or `LoginPassword`. |
LoginPassword | String | No | No | The SSH logon password. | Specify either `KeyPair` or `LoginPassword`. The password must be 8 to 30 characters long and contain uppercase letters, lowercase letters, digits, and special characters. |
Period | Integer | No | No | The subscription duration for the nodes in the node pool. | This property is required and takes effect only when `InstanceChargeType` is set to `PrePaid`. When period_unit is set to Month, the valid values for period are 1, 2, 3, 6, and 12. Default value: 1. |
PeriodUnit | String | No | No | The billing cycle for the nodes in the node pool. | This property is required when `InstanceChargeType` is set to `PrePaid`. Month: The time unit is months. |
RdsInstances | List | No | No | The ApsaraDB RDS instance IDs. | None |
SystemDiskCategory | String | No | No | The category of the node's system disk. | Valid values:
|
SystemDiskPerformanceLevel | String | No | No | The performance level of the node's system disk. | This property takes effect only for ESSDs. |
Tags | List | No | No | You can add tags only to ECS instances. | For more information, see Tags properties. |
ZoneIds | List | No | No | Availability zones | None |
RrsaConfig syntax
"RrsaConfig":
{
"Enabled": Boolean
}RrsaConfig properties
Property name | Type | Required | Update allowed | Description | Constraints |
Enabled | Boolean | Yes | No | Specifies whether to enable RAM Roles for Service Accounts (RRSA). | Valid values:
|
Tags syntax
"Tags": [
{
"Key": String,
"Value": String
}
]Tags properties
Property name | Type | Required | Enable updates | Description | Constraints |
Key | String | Yes | No | The tag key. | The length must be 1 to 64 characters. The key cannot start with |
Value | String | Yes | No | The tag value. | The length can be 0 to 128 characters. The value cannot start with |
Addons syntax
"Addons": [
{
"Disabled": Boolean,
"Config": String,
"Name": String,
"Version": String
}
]Addon properties
Property name | Type | Required | Allow updates | Description | Constraints |
Name | String | Yes | No | The component name. | None |
Config | String | No | No | The component configuration. | None |
Disabled | Boolean | No | No | Specifies whether to disable the default installation of the component. | Valid values:
|
Version | String | No | No | The addon version. | The latest version is used by default. |
InstancePatterns syntax
"InstancePatterns": [
{
"CpuArchitectures": List,
"MaxCpuCores": Integer,
"MinMemorySize": Integer,
"Memory": Integer,
"InstanceFamilyLevel": String,
"MinCpuCores": Integer,
"Cores": Integer,
"InstanceTypeFamilies": List,
"InstanceCategories": List,
"ExcludedInstanceTypes": List,
"MaxMemorySize": Integer
}
]InstancePatterns properties
Property name | Type | Required | Allow updates | Description | Constraints |
CpuArchitectures | List | No | No | The CPU architecture of the instance. | Valid values:
|
MaxCpuCores | Integer | No | No | The maximum number of vCPU cores for the instance type. | None |
MinMemorySize | Integer | No | No | The minimum memory size of the instance type. | The unit is GiB. |
Memory | Integer | No | No | The memory size of the instance type. | The unit is GiB. |
InstanceFamilyLevel | String | No | No | The level of the instance family. | None |
MinCpuCores | Integer | No | No | The minimum number of vCPU cores for the instance type. | None |
Cores | Integer | No | No | The number of vCPU cores for the instance type. | None |
InstanceTypeFamilies | List | No | No | You can specify the instance family. | None |
InstanceCategories | List | No | No | The instance classification. | None |
ExcludedInstanceTypes | List | No | No | The instance types to exclude. | None |
MaxMemorySize | Integer | No | No | The maximum memory size of the instance type. | The unit is GiB. |
DataDisks syntax
"DataDisks": [
{
"Category": String,
"Encrypted": Boolean,
"PerformanceLevel": String,
"Size": Integer,
"AutoSnapshotPolicyId": String,
"Categories": List
}
]DataDisks properties
Property name | Type | Required | Allow Updates | Description | Constraints |
AutoSnapshotPolicyId | String | No | No | The ID of the automatic snapshot policy for the disk. The disk is automatically backed up based on this policy. | By default, this parameter is empty, and automatic backups are disabled. |
Category | String | No | No | The type of the data disk. | Valid values:
|
Encrypted | Boolean | No | No | Specifies whether to encrypt the data disk. | Valid values:
|
PerformanceLevel | String | No | No | You can set the performance level of the cloud disk. | Valid values:
For more information, see enterprise SSD (ESSD). |
Size | Integer | No | No | The size of the data disk. | Value range: 40 to 32768. Default value: 120. Unit: GiB. |
Categories | List | No | No | A list of data disk types. | None |
Return value
Fn::GetAtt
ClusterId: The ID of the cluster.
TaskId: The ID of the task. The system automatically assigns this ID. You can use this ID to query the task status.
DefaultUserKubeConfig: The default Kubernetes configuration for cluster credentials.
ScalingRuleId: The ID of the scaling rule.
ScalingGroupId: The ID of the scaling group.
PrivateUserKubConfig: The private Kubernetes configuration for cluster credentials.
ScalingConfigurationId: The ID of the scaling configuration.
Nodes: The list of cluster nodes.
APIServerSLBId: The ID of the API Server Load Balancer.
IngressSLBId: The ID of the Ingress Server Load Balancer.
WorkerRamRoleName: The name of the worker node RAM role.
Examples
ROSTemplateFormatVersion: '2015-09-01'
Description: Test ManagedEdgeKubernetesCluster
Parameters:
VSwitchZoneId:
Type: String
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
Description: The zone ID for the vSwitch.
Label: VSwitch Zone ID
VpcId:
Type: String
Default: Null
AssociationProperty: ALIYUN::ECS::VPC::VPCId
Description: The ID of the VPC. The ID starts with vpc- and is available in the Virtual Private Cloud console.
Label: Existing VPC ID
VSwitchId:
Type: String
Default: Null
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
Description: The ID of the vSwitch. The ID starts with vsw- and is available on the VSwitches page of the VPC console.
Label: VSwitch ID
AssociationPropertyMetadata:
ZoneId: ${VSwitchZoneId}
VpcId: ${VpcId}
ClusterName:
Type: String
Default: mytest
Password:
Type: String
Description: The logon password for the server. The password must be 8 to 30 characters long and include characters from three of the following types: uppercase letters, lowercase letters, digits, and special characters. Supported special characters: ()`~!@#$%^*_-+=|{}[]:;,.?
MinLength: 8
Label: Instance Password
NoEcho: true
MaxLength: 30
ConstraintDescription: The password must be 8 to 30 characters long and include characters from three of the following types: uppercase letters, lowercase letters, digits, and special characters. Supported special characters: ()`~!@#$%^*_-+=|{}[]:;',.?/
NumOfNodes:
Type: Number
Default: 1
MinValue: 0
MaxValue: 300
Resources:
Cluster:
Type: ALIYUN::CS::ManagedEdgeKubernetesCluster
Properties:
NumOfNodes:
Ref: NumOfNodes
Name:
Ref: ClusterName
LoginPassword:
Ref: Password
VpcId:
Ref: VpcId
VSwitchIds:
- Ref: VSwitchId
ServiceCidr: 172.19.0.0/20
Outputs:
ClusterId:
Value:
Fn::GetAtt:
- Cluster
- ClusterId
TaskId:
Value:
Fn::GetAtt:
- Cluster
- TaskId
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": "Test ManagedEdgeKubernetesCluster",
"Parameters": {
"VSwitchZoneId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
"Description": "The zone ID for the vSwitch.",
"Label": "VSwitch Zone ID"
},
"VpcId": {
"Type": "String",
"Default": null,
"AssociationProperty": "ALIYUN::ECS::VPC::VPCId",
"Description": "The ID of the VPC. The ID starts with vpc- and is available in the Virtual Private Cloud console.",
"Label": "Existing VPC ID"
},
"VSwitchId": {
"Type": "String",
"Default": null,
"AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
"Description": "The ID of the vSwitch. The ID starts with vsw- and is available on the VSwitches page of the VPC console.",
"Label": "VSwitch ID",
"AssociationPropertyMetadata": {
"ZoneId": "${VSwitchZoneId}",
"VpcId": "${VpcId}"
}
},
"ClusterName": {
"Type": "String",
"Default": "mytest"
},
"Password": {
"Type": "String",
"Description": "The logon password for the server. The password must be 8 to 30 characters long and include characters from three of the following types: uppercase letters, lowercase letters, digits, and special characters. Supported special characters: ()`~!@#$%^*_-+=|{}[]:;,.?",
"MinLength": 8,
"Label": "Instance Password",
"NoEcho": true,
"MaxLength": 30,
"ConstraintDescription": "The password must be 8 to 30 characters long and include characters from three of the following types: uppercase letters, lowercase letters, digits, and special characters. Supported special characters: ()`~!@#$%^*_-+=|{}[]:;',.?/"
},
"NumOfNodes": {
"Type": "Number",
"Default": 1,
"MinValue": 0,
"MaxValue": 300
}
},
"Resources": {
"Cluster": {
"Type": "ALIYUN::CS::ManagedEdgeKubernetesCluster",
"Properties": {
"NumOfNodes": {
"Ref": "NumOfNodes"
},
"Name": {
"Ref": "ClusterName"
},
"LoginPassword": {
"Ref": "Password"
},
"VpcId": {
"Ref": "VpcId"
},
"VSwitchIds": [
{
"Ref": "VSwitchId"
}
],
"ServiceCidr": "172.19.0.0/20"
}
}
},
"Outputs": {
"ClusterId": {
"Value": {
"Fn::GetAtt": [
"Cluster",
"ClusterId"
]
}
},
"TaskId": {
"Value": {
"Fn::GetAtt": [
"Cluster",
"TaskId"
]
}
}
}
}