ALIYUN::CS::ServerlessKubernetesCluster类型用于创建Serverless Kubernetes集群实例。

语法

{
  "Type": "ALIYUN::CS::ServerlessKubernetesCluster",
  "Properties": {
    "VpcId": String,
    "Name": String,
    "Tags": List,
    "ZoneId": String,
    "PrivateZone": Boolean,
    "VSwitchId": String,
    "EndpointPublicAccess": Boolean,
    "SecurityGroupId": String,
    "VSwitchIds": List,
    "ServiceCidr": String,
    "Addons": List,
    "KubernetesVersion": String,
    "NatGateway": Boolean,
    "ResourceGroupId": String
  }
}

属性

属性名称类型必须允许更新描述约束
VpcIdString专有网络ID。如果不设置,系统会自动创建专有网络。系统自动创建的专有网络网段为192.168.0.0/16。

VpcId和VSwitchId只能同时为空或者同时设置。

NameString集群名称。必须以数字或英文字母开头。可包含英文字母、汉字、数字和短划线(-)。
TagsList集群标签。更多信息,请参见Tags属性
ZoneIdString可用区ID。
PrivateZoneBoolean是否开启云解析PrivateZone用于服务发现。取值:
  • true:开启。
  • false(默认值):关闭。
更多信息,请参见ASK集群基于云解析PrivateZone的服务发现
VSwitchIdString交换机ID。如果不设置,系统会自动创建交换机。系统自动创建的交换机网段为192.168.0.0/16。

VpcId和VSwitchId只能同时为空或者同时设置。

EndpointPublicAccessBoolean是否开启公网API Server。取值:
  • true(默认值):开启公网API Server。
  • false:仅开启私网API Server。
SecurityGroupIdString集群ECS实例所属的安全组ID。
VSwitchIdsList交换机ID列表。最多支持10个交换机ID。

如果不设置,系统会自动创建交换机,系统自动创建的交换机网段为192.168.0.0/16。

VpcId和VSwitchId只能同时为空或者同时设置。

ServiceCidrString服务网段。不能和专有网络网段以及容器网段冲突。

当选择系统自动创建专有网络时,默认使用172.19.0.0/20网段。

AddonsList集群安装的组件列表。取值:
  • 网络组件

    支持Flannel和Terway两种网络类型,创建集群时需二选一:

    • Flannel网络:[{"Name":"flannel","Config":""}]
    • Terway网络:[{"Name": "terway-eniip","Config": ""}]
  • 存储组件

    支持csi和flexvolume两种类型:

    • csi:[{"Name":"csi-plugin","Config": ""},{"Name": "csi-provisioner","Config": ""}]
    • flexvolume:[{"Name": "flexvolume","Config": ""}]
  • 日志组件(可选)
    说明 如果不开启日志服务,将无法使用集群审计功能。
    • 使用已有SLS Project:[{"Name": "logtail-ds","Config": "{\"IngressDashboardEnabled\":\"true\",\"sls_project_name\":\"your_sls_project_name\"}"}]
    • 创建新的SLS Project:[{"Name": "logtail-ds","Config": "{\"IngressDashboardEnabled\":\"true\"}"}]
  • Ingress组件(可选)

    ACK专有版集群默认安装Ingress组件nginx-ingress-controller。

    • 安装Ingress并且开启公网:[{"Name":"nginx-ingress-controller","Config":"{\"IngressSlbNetworkType\":\"internet\"}"}]
    • 不安装Ingress:[{"Name": "nginx-ingress-controller","Config": "","Disabled": true}]
  • 事件中心(可选,默认开启)

    事件中心提供对Kubernetes事件的存储、查询、告警等能力。Kubernetes事件中心关联的Logstore在90天内免费。更多信息,请参见创建并使用K8s事件中心

    开启事件中心:[{"Name":"ack-node-problem-detector","Config":"{\"sls_project_name\":\"your_sls_project_name\"}"}]

更多信息,请参见Addons属性
KubernetesVersionString集群版本。取值:
  • 1.14.8-aliyun.1:Kubernetes集群的1.14.8版本。
  • 1.16.9-aliyun.1:Kubernetes集群的1.16.9版本。
ResourceGroupIdString集群所属的资源组ID。
NatGatewayBoolean是否创建NAT网关。取值:
  • true:创建。
  • false(默认值):不创建。

Tags语法

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

Tags属性

属性名称类型必须允许更新描述约束
KeyString标签键。长度为1~64个字符,不能以aliyunacs:https://http://开头。
ValueString标签值。长度为0~128个字符,不能以aliyunacs:https://http://开头。

Addons语法

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

Addons属性

属性名称类型必须允许更新描述约束
DisabledBoolean是否禁止默认安装组件。取值:
  • true:禁止默认安装组件。
  • false(默认值):允许默认安装组件。
ConfigString组件配置。
NameString组件名称。

返回值

Fn::GetAtt

  • ClusterId:集群ID。
  • TaskId:任务ID。系统自动分配,用于查询任务状态。
  • WorkerRamRoleName:Worker节点RAM角色名称。
  • DefaultUserKubeConfig:用户配置集群凭据的默认Kubernetes配置。
  • ScalingRuleId:伸缩规则ID。
  • ScalingGroupId:伸缩组ID。
  • PrivateUserKubConfig:用户配置集群凭据的专有Kubernetes配置。
  • ScalingConfigurationId:伸缩配置ID。
  • Nodes:集群节点列表。
  • APIServerSLBId:API服务器负载均衡ID。

示例

  • YAML格式

    ROSTemplateFormatVersion: '2015-09-01'
    Description: Test ServerlessKubernetesCluster
    Parameters:
      VpcId:
        Type: String
        AssociationProperty: ALIYUN::ECS::VPC::VPCId
      ZoneId:
        Type: String
        AssociationProperty: ALIYUN::ECS::ZoneId
      VSwitchId:
        Type: Json
        AssociationProperty: List[Parameter]
        AssociationPropertyMetadata:
          Parameter:
            Type: String
            AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
            MinLength: 1
            MaxLength: 3
      SecurityGroupId:
        Type: String
        AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
        AssociationPropertyMetadata:
          VpcId: ${VpcId}
    Resources:
      Cluster:
        Type: ALIYUN::CS::ServerlessKubernetesCluster
        Properties:
          Name: serverless-kube-test
          PrivateZone: true
          ZoneId:
            Ref: ZoneId
          NatGateway: false
          VpcId:
            Ref: VpcId
          VSwitchIds:
            - Ref: VSwitchId
          KubernetesVersion: 1.18.8-aliyun.1
          EndpointPublicAccess: true
          Addons:
            - Name: nginx-ingress-controller
              Config: '{"IngressSlbNetworkType":"intranet"}'
            - Name: logtail-ds
              Config: '{"sls_project_name":"test"}'
            - Name: knative
          ServiceCidr: 172.25.0.0/20
          SecurityGroupId:
            Ref: SecurityGroupId
    Outputs:
      ClusterId:
        Value:
          Fn::GetAtt:
            - Cluster
            - ClusterId
      TaskId:
        Value:
          Fn::GetAtt:
            - Cluster
            - TaskId
  • JSON格式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Description": "Test ServerlessKubernetesCluster",
      "Parameters": {
        "VpcId": {
          "Type": "String",
          "AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
        },
        "ZoneId": {
          "Type": "String",
          "AssociationProperty": "ALIYUN::ECS::ZoneId"
        },
        "VSwitchId": {
          "Type": "Json",
          "AssociationProperty": "List[Parameter]",
          "AssociationPropertyMetadata": {
            "Parameter": {
              "Type": "String",
              "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
              "MinLength": 1,
              "MaxLength": 3
            }
          }
        },
        "SecurityGroupId": {
          "Type": "String",
          "AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId",
          "AssociationPropertyMetadata": {
            "VpcId": "${VpcId}"
          }
        }
      },
      "Resources": {
        "Cluster": {
          "Type": "ALIYUN::CS::ServerlessKubernetesCluster",
          "Properties": {
            "Name": "serverless-kube-test",
            "PrivateZone": true,
            "ZoneId": {
              "Ref": "ZoneId"
            },
            "NatGateway": false,
            "VpcId": {
              "Ref": "VpcId"
            },
            "VSwitchIds": [
              {
                "Ref": "VSwitchId"
              }
            ],
            "KubernetesVersion": "1.18.8-aliyun.1",
            "EndpointPublicAccess": true,
            "Addons": [
              {
                "Name": "nginx-ingress-controller",
                "Config": "{\"IngressSlbNetworkType\":\"intranet\"}"
              },
              {
                "Name": "logtail-ds",
                "Config": "{\"sls_project_name\":\"test\"}"
              },
              {
                "Name": "knative"
              }
            ],
            "ServiceCidr": "172.25.0.0/20",
            "SecurityGroupId": {
              "Ref": "SecurityGroupId"
            }
          }
        }
      },
      "Outputs": {
        "ClusterId": {
          "Value": {
            "Fn::GetAtt": [
              "Cluster",
              "ClusterId"
            ]
          }
        },
        "TaskId": {
          "Value": {
            "Fn::GetAtt": [
              "Cluster",
              "TaskId"
            ]
          }
        }
      }
    }

更多示例,请参见JSON示例YAML示例