ALIYUN::CS::ASKCluster

ALIYUN::CS::ASKCluster类型用于创建ACK Serverless集群

语法

{
  "Type": "ALIYUN::CS::ASKCluster",
  "Properties": {
    "KubernetesVersion": String,
    "EndpointPublicAccess": Boolean,
    "ZoneId": String,
    "ResourceGroupId": String,
    "VSwitchIds": List,
    "SecurityGroupId": String,
    "Addons": List,
    "DeletionProtection": Boolean,
    "ClusterSpec": String,
    "Name": String,
    "TimeZone": String,
    "ServiceDiscoveryTypes": List,
    "VpcId": String,
    "ServiceCidr": String,
    "SnatEntry": Boolean,
    "Tags": List,
    "PrivateZone": Boolean,
    "DeleteOptions": List
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

KubernetesVersion

String

集群版本。

EndpointPublicAccess

Boolean

是否开启公网API Server访问。

取值:

  • true(默认值):开启公网API Server访问。

  • false:不开启公网访问。选择不开启时,则无法通过外网访问集群API Server。

ZoneId

String

集群所属地域的可用区ID。

当创建ACK Serverless集群时,如果未指定VpcIdVSwitchIds,必须为集群指定ZoneId,用于自动在该可用区创建VPC网络资源。

ResourceGroupId

String

集群所属资源组ID。

VSwitchIds

List

集群节点所在的虚拟交换机ID列表。

最多支持3个虚拟交换机。

说明

当创建零节点的托管版集群时,该字段必填。

SecurityGroupId

String

集群ECS实例所属的安全组ID。 

Addons

List

集群组件列表。

DeletionProtection

Boolean

集群是否启用删除保护,防止通过控制台或API误删除集群。

取值:

  • true:启用集群删除保护,将不能通过控制台或API删除集群。

  • false(默认值):不启用集群删除保护,则能通过控制台或API删除集群。

DeleteOptions

List

集群关联资源的删除选项。

更多信息,请参见DeleteOptions属性。

ClusterSpec

String

托管版集群类型,面向托管集群。

取值:

  • ack.pro.small:专业托管集群,即ACK Pro版集群。

  • ack.standard(默认值):标准托管集群。

说明

取值可以为空,为空时则创建标准托管集群。

更多信息,请参见ACK Pro版集群概述

Name

String

集群名称。

命名规则:由数字、汉字、英文字符或短划线(-)组成,长度范围1~63个字符,且不能以短划线(-)开头。

TimeZone

String

集群使用的时区。

ServiceDiscoveryTypes

List

集群内服务发现类型,用于在ACK Serverless集群中指定服务发现方式。

取值:

  • CoreDNS:使用Kubernetes原生标准服务发现组件CoreDNS,需要在集群部署一组容器用于DNS解析。默认采用两个0.25 Core 512 MiB规格的ECI实例。

  • PrivateZone:使用阿里云PrivateZone产品提供服务发现能力,需要开启PrivateZone服务,默认不开启。

VpcId

String

集群使用的专有网络。

ServiceCidr

String

Service网络地址段。

可选范围:10.0.0.0/16-24172.16-31.0.0/16-24192.168.0.0/16-24 不能与VPC网段10.1.0.0/21及VPC内已有Kubernetes集群使用的网段重复,创建成功后不能修改。

说明

默认使用172.19.0.0/20网段。

SnatEntry

Boolean

是否为专有网络配置SNAT规则。

取值:

  • true(默认值):将为您创建NAT网关并自动配置SNAT规则,若您集群内的节点、应用等需要访问公网需要设置为true。

  • false:不为您创建NAT网关及SNAT规则。这种模式下,集群内节点及应用将不能访问公网。

说明

如果创建集群时未开启,后续业务需要访问公网,可手动开启。更多信息,请参见为已有集群开启公网访问能力

Tags

List

节点标签。

标签定义规则:

  • 标签由区分大小写的键值对组成,您最多可以设置20个标签。

  • 标签键不可以重复,最长为64个字符。标签值可以为空,最长为128个字符。标签键和标签值都不能以aliyunacs:https://http://开头。更多信息,请参见Labels and Selectors

PrivateZone

Boolean

是否开启PrivateZone服务。

取值:

  • true:开启PrivateZone服务。

  • false:不开启PrivateZone服务。

Addons语法

"Addons": [
  {
    "Config": String,
    "Disabled": Boolean,
    "Name": String
  }
]

Addons属性

属性名称

类型

必须

允许更新

描述

约束

Config

String

组件配置。

Disabled

Boolean

是否禁止默认安装。

集群创建时除了安装必需组件外,还会额外安装一些日志组件等,您可以禁止这些默认行为,后续通过安装组件的API进行安装或通过控制台安装。

取值:

  • true:禁止默认安装。

  • false:允许默认安装。

Name

String

组件名称。

Tags语法

"Tags": [
  {
    "Value": String,
    "Key": String
  }
]

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Value

String

标签key值。

Key

String

标签value值。

DeleteOptions语法

"DeleteOptions": [
  {
    "DeleteMode": String,
    "ResourceType": String
  }
]

DeleteOptions属性

属性名称

类型

必须

允许更新

描述

约束

DeleteMode

String

该类型资源的删除策略。

取值:

  • delete:删除该类资源

  • retain:保留该类资源

ResourceType

String

资源类型。

取值:

  • SLB:通过 service 创建的 SLB 资源,默认删除,可选择保留

  • ALB:ALB Ingress Controller 创建的 ALB 资源,默认保留,可选择删除

  • SLS_Data:集群日志功能所使用的日志服务 Project,默认保留,可选择删除

  • SLS_ControlPlane:托管版集群控制平面日志所使用的日志服务 Project,默认保留,可选择删除

  • PrivateZone:ACK Serverless 集群创建的 PrivateZone 资源,默认保留,可选择删除

返回值

Fn::GetAtt

  • TaskId:任务ID。

  • ClusterId:集群ID。

  • APIServerSLBId:API服务器SLB的ID

  • ScalingGroupId:伸缩组ID

  • ScalingRuleId:缩放规则ID。

  • DefaultUserKubeConfig:用户配置集群凭据的默认Kubernetes配置。

  • WorkerRamRoleName:Worker节点RAM角色名称。

  • ScalingConfigurationId:伸缩配置ID。

  • PrivateUserKubConfig:用户配置集群凭据的专有Kubernetes配置。

  • Nodes:集群节点列表。

  • IngressSLBId:Ingress负载均衡ID。

示例

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Description: Test Create ASKCluster
Parameters: {}
Resources:
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName: mytest
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.1.0/24
      ZoneId:
        Fn::Select:
          - '0'
          - Fn::GetAZs:
              Ref: ALIYUN::Region
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      VpcName: mytest
      CidrBlock: 192.168.0.0/16
  ASKCluster:
    Type: ALIYUN::CS::ASKCluster
    Properties:
      VpcId:
        Ref: Vpc
      ClusterSpec: ack.pro.small
      Name: mytest
      VSwitchIds:
        - Ref: VSwitch
Outputs:
  ClusterId:
    Value:
      Fn::GetAtt:
        - ASKCluster
        - ClusterId
  TaskId:
    Value:
      Fn::GetAtt:
        - ASKCluster
        - TaskId

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": "Test Create ASKCluster",
  "Parameters": {},
  "Resources": {
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VSwitchName": "mytest",
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "192.168.1.0/24",
        "ZoneId": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAZs": {
                "Ref": "ALIYUN::Region"
              }
            }
          ]
        }
      }
    },
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": "mytest",
        "CidrBlock": "192.168.0.0/16"
      }
    },
    "ASKCluster": {
      "Type": "ALIYUN::CS::ASKCluster",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        },
        "ClusterSpec": "ack.pro.small",
        "Name": "mytest",
        "VSwitchIds": [
          {
            "Ref": "VSwitch"
          }
        ]
      }
    }
  },
  "Outputs": {
    "ClusterId": {
      "Value": {
        "Fn::GetAtt": [
          "ASKCluster",
          "ClusterId"
        ]
      }
    },
    "TaskId": {
      "Value": {
        "Fn::GetAtt": [
          "ASKCluster",
          "TaskId"
        ]
      }
    }
  }
}