CreateCluster
In this article:
CreateCluster#
Description#
Creates a cluster
The cluster consists of master nodes on which software (e.g. etcd, kubelet, etc.) required for Kubernetes operation is deployed and an optional node with an Ingress controller. Every cluster is deployed on its own set of instances. It usually takes several minutes to create a cluster.
Request Syntax#
POST /clusters HTTP/1.1
Content-type: application/json
{
     "name": "string",
     "kubernetesNetworkConfig": {
           "ipFamily": "string",
           "podIpv4Cidr": "string",
           "serviceIpv4Cidr": "string",
     },
     "resourcesVpcConfig": {
           "securityGroupIds": ["string"],
           "subnetIds": ["string"],
     },
     "tags": {
           "string" : "string"
     },
     "version": "string",
     "remoteAccessConfig": {
         "ec2SshKey": "string",
     },
     "legacyClusterParams": {
           "masterConfig": {
                 "highAvailability": boolean,
                 "mastersInstanceType": "string",
                 "mastersVolumeType": "string",
                 "mastersVolumeSize": number,
                 "mastersVolumeIops": number,
                 "masterPublicIp": "string",
           },
           "ingressConfig": {
                 "ingressRequired": boolean,
                 "ingressPublicIp": "string",
                 "ingressInstanceType": "string",
                 "ingressVolumeType": "string",
                 "ingressVolumeSize": number,
                 "ingressVolumeIops": number,
           },
           "dockerRegistryConfig": {
                 "dockerRegistryRequired": boolean,
                 "dockerRegistryVolumeType": "string",
                 "dockerRegistryVolumeSize": number,
                 "dockerRegistryVolumeIops": number,
           },
           "ebsProviderConfig": {
                 "ebsProviderRequired": boolean,
                 "ebsUser": "string",
           },
           "userDataConfig": {
                 "userData": "string",
                 "userDataContentType": "string",
           }
     }
}
Request Parameters#
Required parameters#
- name — The cluster name. - Type: String 
- Required: Yes 
 
- resourcesVpcConfig — The VPC configuration that the Kubernetes cluster uses. - Type: resourcesVpcConfig object 
- Required: Yes 
 
- version — The Kubernetes server version used to deploy the cluster. - Type: String 
- Required: Yes 
- Valid values: - 1.27.3|- 1.26.6|- 1.25.11|- 1.22.3|- 1.20.9|- 1.18.2
 
Optional parameters#
- kubernetesNetworkConfig — The Kubernetes network configuration for the cluster. - Type: kubernetesNetworkConfig object 
- Required: No 
 
- legacyClusterParams — The parameters for fine-tuning Kubernetes cluster. - Type: legacyClusterParams object 
- Required: No 
 
- remoteAccessConfig — The remote access configuration for the managed node group. - Type: remoteAccessConfig object 
- Required: No 
 
Response Syntax#
POST /clusters HTTP/1.1
Content-type: application/json
{
   "cluster": {
      "name": "string",
      "createdAt": number,
      "version": "string",
      "status": "string",
      "resourcesVpcConfig": {
         "securityGroupIds": [ "string" ],
         "subnetIds": [ "string" ],
         "vpcId": "string"
      },
      "certificateAuthority": {
         "data": "string",
      },
      "remoteAccessConfig": {
         "ec2SshKey": "string",
      },
      "kubernetesNetworkConfig": {
         "ipFamily": "string",
         "serviceIpv4Cidr": "string",
         "podIpv4Cidr": "string",
      },
      "health": {
         "issues": [
            {
               "code": "string",
               "message": "string",
               "resourceIds": [ "string" ]
            }
         ]
      },
      "platformVersion": "string",
      "legacyClusterParams": {
           "masterConfig": {
                 "highAvailability": boolean,
                 "mastersInstanceType": "string",
                 "mastersVolumeType": "string",
                 "mastersVolumeSize": number,
                 "mastersVolumeIops": number,
                 "masterPublicIp": "string",
           },
           "ingressConfig": {
                 "ingressRequired": boolean,
                 "ingressPublicIp": "string",
                 "ingressInstanceType": "string",
                 "ingressVolumeType": "string",
                 "ingressVolumeSize": number,
                 "ingressVolumeIops": number,
           },
           "dockerRegistryConfig": {
                 "dockerRegistryRequired": boolean,
                 "dockerRegistryVolumeType": "string",
                 "dockerRegistryVolumeSize": number,
                 "dockerRegistryVolumeIops": number,
           },
           "ebsProviderConfig": {
                 "ebsProviderRequired": boolean,
                 "ebsUser": "string",
           },
           "userDataConfig": {
                 "userData": "string",
                 "userDataContentType": "string",
           }
      },
      "tags": {
         "string" : "string"
      },
   }
}
Response Elements#
- cluster — Describes the cluster. - Type: Cluster object 
 
Examples#
Amazon boto3
import boto3
session = boto3.Session(
   aws_access_key_id="<AWS_ACCESS_KEY_ID>",
   aws_secret_access_key="<AWS_SECRET_ACCESS_KEY>",
   region_name="ngn",
)
eks_client = session.client(
   'eks',
   endpoint_url='https://eks.cloud.ngn.com.tr/',
)
eks_client.create_cluster(
    name="production",
    version="1.22.3",
    remoteAccessConfig={"ec2SshKey": "production"},
    resourcesVpcConfig={
        "securityGroupIds": ["sg-C46E1CB8"],
        "subnetIds": ["subnet-F2276B20"],
    },
    kubernetesNetworkConfig={
        "ipFamily": "ipv4",
        "serviceIpv4Cidr": "10.96.0.0/12",
        "podIpv4Cidr": "10.244.0.0/16",
    }
)
boto3 CROC Cloud boto3 Client
import boto3
session = boto3.Session(
   aws_access_key_id="<AWS_ACCESS_KEY_ID>",
   aws_secret_access_key="<AWS_SECRET_ACCESS_KEY>",
   region_name="ngn",
)
eks_client = session.client(
   'eks',
   endpoint_url='https://eks.cloud.ngn.com.tr/',
)
eks_client.create_cluster(
    name="production",
    version="1.22.3",
    remoteAccessConfig={"ec2SshKey": "production"},
    resourcesVpcConfig={
        "securityGroupIds": ["sg-C46E1CB8"],
        "subnetIds": ["subnet-F2276B20"],
    },
    kubernetesNetworkConfig={
        "ipFamily": "ipv4",
        "serviceIpv4Cidr": "10.96.0.0/12",
        "podIpv4Cidr": "10.244.0.0/16",
    },
    legacyClusterParams={
        "masterConfig": {
            "highAvailability": False,
            "mastersInstanceType": "c5.large",
            "mastersVolumeType": "st2",
            "mastersVolumeSize": 64
        },
        "ingressConfig": {
            "ingressRequired": False,
        },
      "dockerRegistryConfig": {
            "dockerRegistryRequired": True,
            "dockerRegistryVolumeType": "st2",
            "dockerRegistryVolumeSize": 32,
      },
      "ebsProviderConfig": {
            "ebsProviderRequired": True,
            "ebsUser": "ebs",
      },
    }
 )
c2-eks CROC Cloud API Client
c2-eks CreateCluster \
    name production \
    version 1.18.2 \
    resourcesVpcConfig.securityGroupIds.0 sg-C46E1CB8  \
    resourcesVpcConfig.subnetIds.0 subnet-F2276B20 \
    remoteAccessConfig.ec2SshKey production
aws-cli
aws eks --endpoint https://eks.cloud.ngn.com.tr/ create-cluster \
    --name test2 \
    --role-arn '' \
    --resources-vpc-config 'subnetIds=subnet-97E15280,securityGroupIds=sg-0BF242A6' \
    --tags=tagkey=tagvalue \
    --kubernetes-version 1.18.2 \
    --kubernetes-network-config 'serviceIpv4Cidr=10.96.0.0/16,ipFamily=ipv4'