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.pattern^((org|team)\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$storage
(multiple options: oneOf)- {object}
storageEnabled
booleansnapshotsEnabled
booleanstorageClasses
[array]- {object}
id
string requiredname
string requireddescription
stringplatformMapping
string requiredone ofssd, hddkubernetesName
string requireddefaultSnapshotClass
stringsnapshotClasses
[array]- {object}
id
string requiredname
string requireddescription
stringkubernetesName
string requirednodePools
[array] requiredsettings
{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 buildspattern^((org|team)\/)?[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.pattern^((org|team)\/)?[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.4max1restrictions
{object}BYOC restrictions configuration for controlling team accessenabled
boolean requiredEnable or disable BYOC restrictions for this entityteams
[array]List of teams that have access to this BYOC cluster- {object}
teamId
string requiredThe ID of the team that has access to this BYOC clustermin length3max length45pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$gcp
{object}GCP specific data. Required when `provider` is `gcp`.enableAuthorizedIpRanges
booleanprojectId
stringGCP Project IDaws
{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
booleanbyok
{object}BYOK specific data. Required when `provider` is `byok`.nodePoolProviderIdLabel
string required
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.pattern^((org|team)\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$storage
(multiple options: oneOf)- {object}
storageEnabled
booleansnapshotsEnabled
booleanstorageClasses
[array]- {object}
id
string requiredname
string requireddescription
stringplatformMapping
string requiredone ofssd, hddkubernetesName
string requireddefaultSnapshotClass
stringsnapshotClasses
[array]- {object}
id
string requiredname
string requireddescription
stringkubernetesName
string requirednodePools
[array] requiredsettings
{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 buildspattern^((org|team)\/)?[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.pattern^((org|team)\/)?[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.4max1restrictions
{object}BYOC restrictions configuration for controlling team accessenabled
boolean requiredEnable or disable BYOC restrictions for this entityteams
[array]List of teams that have access to this BYOC cluster- {object}
teamId
string requiredThe ID of the team that has access to this BYOC clustermin length3max length45pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$gcp
{object}GCP specific data. Required when `provider` is `gcp`.enableAuthorizedIpRanges
booleanprojectId
stringGCP Project IDaws
{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
booleanbyok
{object}BYOK specific data. Required when `provider` is `byok`.nodePoolProviderIdLabel
string requiredid
string requiredThe ID of clusterstatus
{object}state
{object}state
stringtransitionTime
stringnextUpdateAfter
stringdns
stringAuto-generated dns identifier for this cluster.updatedAt
string requiredThe time the cluster was last updated.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","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}}},"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",
"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
}
}
},
"aws": {
"subnetConfiguration": {
"subnets": [
"eu-west-1a"
]
}
},
"id": "gcp-cluster-1",
"status": {
"state": {
"state": "initial",
"transitionTime": "2024-05-03T16:40:38.198Z"
}
},
"dns": "xxxxxxxxxx",
"updatedAt": "2021-01-20T11:19:53.175Z",
"createdAt": "2021-01-20T11:19:53.175Z",
"deletionRequested": false
}
}