Cloud Providers /
Create cluster
Required permission
Account > Cloud > Clusters > Create
Request body
- {object}
name
string requiredThe name of the cluster.min length3max length20pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringThe description of the cluster.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$provider
string requiredCloud provider to be used for the selected resourceone ofaws, azure, civo, gcp, oci, byokregion
string requiredRegion of the cluster.kubernetesVersion
stringDeprecated: This field is no longer used, the version is now set by the platform.integrationId
stringExisting integration to use for this cluster.min length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$nodePools
[array] requiredAn array of node pools.- {object}
nodeType
string requiredMachine type to be used by the node pool.oci
{object}OCI instance specific settings. Must respect ratios as determined by the selected node type.ocpu
integer requiredmin1memory
integer requiredmin1nodeCount
integer requiredNumber of nodes to the node pool should be provisioned with.min0max250autoscaling
{object}Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature.enabled
booleanmin
integermin0max249max
integermin1max250computeResources
{object}gpu
{object}mig
{object}enabled
booleanpartitions
[array]- string
timeslicing
{object}enabled
booleannumSlices
numbermin1preemptible
booleanConfigures node pool with preemptible / spot instances if enabled.diskType
stringThe disk type to use.diskSize
integer requiredDisk size in GBmin1systemPool
booleanWhen 'provider' is 'azure', at least one system node pool is required per cluster.availabilityZones
[array] requiredZones in which the node pool should be provisioned.- string
subnets
(multiple options: oneOf)- [array]Subnets in which the node pool should be provisioned.
- string
scheduling
{object}Define basic workload scheduling restrictions for this node poolallowJobs
booleanAllow jobs to schedule to this node poolonlyGpuJobs
booleanRestrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools.allowServices
booleanAllow services to schedule to this node poolonlyGpuServices
booleanRestrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools.allowAddons
booleanAllow addons to schedule to this node poolallowBuilds
booleanAllow builds to schedule to this node poolonlyGpuBuilds
booleanRestrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools.allowCeph
booleanAllow the placement of Ceph podslabels
{object}Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules.settings
{object}builds
{object}mode
stringone ofpaas, internal, build-clusterplan
stringPlan to use for builds if they are run on the clustermin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$clusterId
stringCluster to use for scheduling buildsmin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$registry
{object}mode
stringone ofpaas, self-hostedregistryId
stringCredentials to use for storing of images.min length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$logging
{object}mode
stringone ofpaas, lokiloki
{object}Required data for the loki mode setting.s3BucketName
string requireds3AccessKey
string requireds3SecretKey
string requireds3Region
string requiredvanityDomains
{object}apps
{object}zoneName
string requiredintegrationId
string requiredcustomDomains
{object}zoneName
string requiredintegrationId
string requiredloadBalancers
{object}zoneName
string requiredintegrationId
string requiredinfrastructure
{object}workloads
{object}runtimeClass
stringone ofnone, gvisor, kata-clh, kata-qemu, katars-clhbuilds
{object}runtimeClass
stringone ofnone, gvisor, kata-clh, kata-qemu, katars-clhinstallKata
booleaninstallGvisor
booleancleanupVolumes
booleancleanupSnapshots
booleancephStorageProvider
{object}enabled
booleanresources
{object}cpu
numberConfigure the CPU resources per Ceph replicamin1max20memory
numberConfigure the memory resources per Ceph replicamin5024max40960storage
numberConfigure the data disk size per Ceph replicamin102400max5242880enableErasureCoding
booleanenableTopologyAwareScheduling
booleanrequestModifiers
{object}Allows customising request modifier values.services
{object}Request modifiers for servicescpu
number requiredmin0.2max1memory
number requiredmin0.4max1jobs
{object}Request modifiers for jobscpu
number requiredmin0.2max1memory
number requiredmin0.4max1builds
{object}Request modifiers for buildscpu
number requiredmin0.1max1memory
number requiredmin0.1max1addons
{object}Request modifiers for addonscpu
number requiredmin0.2max1memory
number requiredmin0.4max1gcp
{object}GCP specific data. Required when `provider` is `gcp`.projectId
string requiredID of the GCP project the cluster will be provisioned in.aws
{object}AWS specific data. Required when `provider` is `aws`.enablePublicAccessCidrs
booleanpublicAccessCidrs
[array]- stringpattern^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$
subnetConfiguration
{object}mode
string requiredone ofdefault-subnets-for-azs, explicit-subnetsvpcId
(multiple options: oneOf)- string
- string
subnets
[array] requiredList of subnets the cluster should be created for. At least 2 must be specified.- string
vpcEgress
booleanIf egress traffic from the cluster should come from a single static egress IP.oci
{object}OCI specific data. Required when `provider` is `oci`.vcnConfiguration
{object} requiredvcnId
string requiredsubnetIdForKubernetesApi
string requiredsubnetIdsForServiceLBs
[array] required- string
azure
{object}Azure specific data. Required when `provider` is `azure`.enableAuthorizedIpRanges
boolean
OR
Response body
- {object}Response object.
data
{object} requiredResult data.name
string requiredThe name of the cluster.min length3max length20pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringThe description of the cluster.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$provider
string requiredCloud provider to be used for the selected resourceone ofaws, azure, civo, gcp, oci, byokregion
string requiredRegion of the cluster.kubernetesVersion
stringDeprecated: This field is no longer used, the version is now set by the platform.integrationId
stringExisting integration to use for this cluster.min length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$nodePools
[array] requiredAn array of node pools.- {object}
nodeType
string requiredMachine type to be used by the node pool.oci
{object}OCI instance specific settings. Must respect ratios as determined by the selected node type.ocpu
integer requiredmin1memory
integer requiredmin1nodeCount
integer requiredNumber of nodes to the node pool should be provisioned with.min0max250autoscaling
{object}Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature.enabled
booleanmin
integermin0max249max
integermin1max250computeResources
{object}gpu
{object}mig
{object}enabled
booleanpartitions
[array]- string
timeslicing
{object}enabled
booleannumSlices
numbermin1preemptible
booleanConfigures node pool with preemptible / spot instances if enabled.diskType
stringThe disk type to use.diskSize
integer requiredDisk size in GBmin1systemPool
booleanWhen 'provider' is 'azure', at least one system node pool is required per cluster.availabilityZones
[array] requiredZones in which the node pool should be provisioned.- string
subnets
(multiple options: oneOf)- [array]Subnets in which the node pool should be provisioned.
- string
scheduling
{object}Define basic workload scheduling restrictions for this node poolallowJobs
booleanAllow jobs to schedule to this node poolonlyGpuJobs
booleanRestrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools.allowServices
booleanAllow services to schedule to this node poolonlyGpuServices
booleanRestrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools.allowAddons
booleanAllow addons to schedule to this node poolallowBuilds
booleanAllow builds to schedule to this node poolonlyGpuBuilds
booleanRestrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools.allowCeph
booleanAllow the placement of Ceph podslabels
{object}Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules.settings
{object}builds
{object}mode
stringone ofpaas, internal, build-clusterplan
stringPlan to use for builds if they are run on the clustermin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$clusterId
stringCluster to use for scheduling buildsmin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$registry
{object}mode
stringone ofpaas, self-hostedregistryId
stringCredentials to use for storing of images.min length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$logging
{object}mode
stringone ofpaas, lokiloki
{object}Required data for the loki mode setting.s3BucketName
string requireds3AccessKey
string requireds3SecretKey
string requireds3Region
string requiredvanityDomains
{object}apps
{object}zoneName
string requiredintegrationId
string requiredcustomDomains
{object}zoneName
string requiredintegrationId
string requiredloadBalancers
{object}zoneName
string requiredintegrationId
string requiredinfrastructure
{object}workloads
{object}runtimeClass
stringone ofnone, gvisor, kata-clh, kata-qemu, katars-clhbuilds
{object}runtimeClass
stringone ofnone, gvisor, kata-clh, kata-qemu, katars-clhinstallKata
booleaninstallGvisor
booleancleanupVolumes
booleancleanupSnapshots
booleancephStorageProvider
{object}enabled
booleanresources
{object}cpu
numberConfigure the CPU resources per Ceph replicamin1max20memory
numberConfigure the memory resources per Ceph replicamin5024max40960storage
numberConfigure the data disk size per Ceph replicamin102400max5242880enableErasureCoding
booleanenableTopologyAwareScheduling
booleanrequestModifiers
{object}Allows customising request modifier values.services
{object}Request modifiers for servicescpu
number requiredmin0.2max1memory
number requiredmin0.4max1jobs
{object}Request modifiers for jobscpu
number requiredmin0.2max1memory
number requiredmin0.4max1builds
{object}Request modifiers for buildscpu
number requiredmin0.1max1memory
number requiredmin0.1max1addons
{object}Request modifiers for addonscpu
number requiredmin0.2max1memory
number requiredmin0.4max1gcp
{object}GCP specific data. Required when `provider` is `gcp`.projectId
string requiredID of the GCP project the cluster will be provisioned in.aws
{object}AWS specific data. Required when `provider` is `aws`.enablePublicAccessCidrs
booleanpublicAccessCidrs
[array]- stringpattern^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$
subnetConfiguration
{object}mode
string requiredone ofdefault-subnets-for-azs, explicit-subnetsvpcId
(multiple options: oneOf)- string
- string
subnets
[array] requiredList of subnets the cluster should be created for. At least 2 must be specified.- string
vpcEgress
booleanIf egress traffic from the cluster should come from a single static egress IP.oci
{object}OCI specific data. Required when `provider` is `oci`.vcnConfiguration
{object} requiredvcnId
string requiredsubnetIdForKubernetesApi
string requiredsubnetIdsForServiceLBs
[array] required- string
azure
{object}Azure specific data. Required when `provider` is `azure`.enableAuthorizedIpRanges
booleanid
string requiredThe ID of clusterstatus
{object}state
{object}state
stringtransitionTime
stringnextUpdateAfter
stringdns
stringAuto-generated dns identifier for this cluster.createdAt
string requiredThe time the cluster was created.deletionRequested
boolean requiredIndicates if provider resource deletion has been requested.
OR
POST /v1/cloud-providers/clusters
Example request
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request POST \
--data '{"name":"GCP Cluster 1","description":"This is a new cluster.","provider":"gcp","region":"europe-west2","kubernetesVersion":"1.30","integrationId":"gcp-integration","nodePools":[{"nodeType":"n2-standard-8","nodeCount":3,"autoscaling":{"enabled":true,"min":0,"max":10},"preemptible":false,"diskSize":100}],"settings":{"builds":{"plan":"nf-compute-200"},"registry":{"registryId":"my-registry-credentials"},"requestModifiers":{"services":{"cpu":0.5,"memory":0.8},"jobs":{"cpu":0.5,"memory":0.8},"builds":{"cpu":0.2,"memory":0.5},"addons":{"cpu":0.5,"memory":0.8}}},"gcp":{"projectId":"example-project-id"},"aws":{"subnetConfiguration":{"subnets":["eu-west-1a"]}}}' \
https://api.northflank.com/v1/cloud-providers/clusters
Example response
200 OK
JSON
{
"data": {
"name": "GCP Cluster 1",
"description": "This is a new cluster.",
"provider": "gcp",
"region": "europe-west2",
"kubernetesVersion": "1.30",
"integrationId": "gcp-integration",
"nodePools": [
{
"nodeType": "n2-standard-8",
"nodeCount": 3,
"autoscaling": {
"enabled": true,
"min": 0,
"max": 10
},
"preemptible": false,
"diskSize": 100
}
],
"settings": {
"builds": {
"plan": "nf-compute-200"
},
"registry": {
"registryId": "my-registry-credentials"
},
"requestModifiers": {
"services": {
"cpu": 0.5,
"memory": 0.8
},
"jobs": {
"cpu": 0.5,
"memory": 0.8
},
"builds": {
"cpu": 0.2,
"memory": 0.5
},
"addons": {
"cpu": 0.5,
"memory": 0.8
}
}
},
"gcp": {
"projectId": "example-project-id"
},
"aws": {
"subnetConfiguration": {
"subnets": [
"eu-west-1a"
]
}
},
"id": "gcp-cluster-1",
"status": {
"state": {
"state": "initial",
"transitionTime": "2024-05-03T16:40:38.198Z"
}
},
"dns": "xxxxxxxxxx",
"createdAt": "2021-01-20T11:19:53.175Z",
"deletionRequested": false
}
}