Skip to main content
A newer release of this product is available.

Create a new cluster for a cloud

Contributors

POST /accounts/{account_id}/topology/v1/clouds/{cloud_id}/clusters

Indicates the desired values for the Cluster API resource to be created.

Parameters

Name Type In Required Description

account_id

string

path

True

ID of the containing account resource

  • example: {{.Account}}

cloud_id

string

path

True

ID of the containing cloud resource

Request Body

Indicates the desired values for the Cluster API resource to be created.

Name Type Required Description

type

string

True

Media type of the resource. Defined values are:

  • "application/astra-cluster"

version

string

True

Version of the resource. Defined values are:

  • "1.0"

  • "1.1"

  • "1.2"

  • "1.3"

name

string

False

JSON string containing a name for the cluster. If not specified, the Kubernetes name of the cluster will be used. Defined values are:

  • Minimum length: 1

  • Maximum length: 63

  • This string is internally validated to prevent XSS, Unicode, directory traversal, and SQL-injection attacks

accHost

string

False

JSON string that indicates that this cluster hosts the instance of Astra Control Center that is currently being accessed. Defined values are:

  • "true" - This cluster is hosting the instance of Astra Control Center that is currently being accessed.

credentialID

string

True

JSON string containing a value indicating the ID of the credential that contains the kubeconfig file for the cluster. Defined values are:

  • Conforms to the Astra Identifier Schema

metadata

type_astra_metadata_update

False

Client and service-specified metadata associated with the resource. Defined values are:

  • Conforms to the Astra Metadata Schema If not specified on create, a metadata object will be created with no labels. If not specified on update, the metadata object's labels, creationTimestamp and createdBy, will be preserved without modification.

Example request
{
  "type": "application/astra-cluster",
  "version": "1.3",
  "name": "GKE-22",
  "credentialID": "6fa2f917-f730-41b8-9c15-17f531843b31"
}

Response

Status: 201, Returns the newly created cluster resource in the JSON response body.
Name Type Required Description

type

string

True

Media type of the resource. Defined values are:

  • "application/astra-cluster"

version

string

True

Version of the resource. Defined values are:

  • "1.0"

  • "1.1"

  • "1.2"

  • "1.3"

id

string

True

Globally unique identifier of the resource. Defined values are:

  • Conforms to the UUIDv4 Schema

name

string

True

JSON string containing a name for the cluster. If not specified, the Kubernetes name of the cluster will be used. Defined values are:

  • Minimum length: 1

  • Maximum length: 63

  • This string is internally validated to prevent XSS, Unicode, directory traversal, and SQL-injection attacks

state

string

True

JSON string containing a value indicating the operational state of the cluster. Defined values are:

  • "pending" - The cluster is scheduled for discovery

  • "discovering" - The cluster is in the process of being discovered

  • "provisioning" - The cluster is in the process of being provisioned

  • "running" - The cluster is running normally

  • "failed" - The cluster is in a permanent failure state

  • "removed" - The cluster is not currently accessible

  • "unknown" - The cluster state cannot be determined

stateUnready

array[string]

True

JSON array of JSON strings, each indicating a reason why the cluster is unable to transition to "running" state, when there are issues while in "running" state, or why it has transitioned to "failed" or "removed" state. Defined values are:

  • Minimum length: 1

  • Maximum length: 127

managedState

string

True

JSON string containing a value indicating the management state of the cluster. Defined values are:

  • "pending" - The cluster is scheduled to be discovered or added

  • "ineligible" - The cluster is in "running" state, is not under management, and is not eligible for management. The reasons for this ineligibility are provided in the unready key value

  • "unmanaged" - The cluster is in "running" or "failed" state, is not under management, and is eligible for management

  • "managing" - The cluster is in "running" state and is in the process of being managed

  • "managed" - The cluster is in "running", "failed", or "removed" state, and is under management

protectionState

string

True

JSON string containing a value indicating the protection state of the cluster. Defined values are:

  • "full" - The clusters default storage class supports snapshots

  • "partial" - The cluster has only storageClasses that do not support snapshots

  • "atRisk" - The default storage class of the cluster does not support snapshots

protectionStateDetails

array[type_astra_stateDetails]

True

JSON array of JSON objects which lists additional details about the current protection state, including why the current state was reached. If no details are available, this array will be empty. Defined values are:

  • Minimum Items: 0

restoreTargetSupported

string

False

JSON string containing a value indicating the ability of the cluster to be a target of application data management operations. Defined values are:

  • "true" - Cluster is an eligible target for app data management operations.

  • "false" - Cluster is not an eligible target for app data management operations.

snapshotSupported

string

False

JSON string containing a value indicating the ability of the cluster to perform application data management backup-like operations. Defined values are:

  • "true" - Cluster is eligible to perform app data management operations.

  • "false" - Cluster is not eligible to perform app data management operations.

managedStateUnready

array[string]

True

JSON array of JSON strings, each indicating a reason why the cluster is ineligible to be managed, or that the cluster is managed but non-fatal errors were encountered while managing the cluster. Defined values are:

  • Minimum length: 1

  • Maximum length: 127

managedTimestamp

string

False

JSON string containing the timestamp indicating when the cluster was brought under management. Defined values are:

  • Conforms to the ISO-8601 Date Time Schema This key is only returned when a cluster has a managedState of "managed".

tridentVersion

string

False

JSON string containing the version of Trident installed on the cluster. Defined values are:

  • Conforms to the Software Version Schema

tridentManagedState

string

False

JSON string containing one of a set of enumerated values indicating the management state of Trident on this cluster. Defined values are:

  • "managed" - Trident instance on the cluster is managed by Astra

  • "unmanaged" - Trident instance on the cluster is not managed by Astra

tridentManagedStateDesired

string

False

JSON string containing a value indicating the desired management state for Trident. Defined values are:

  • "managed" - Manage Trident on this cluster

  • "unmanaged" - Do not manage Trident on this cluster

tridentManagedStateDetails

array[type_astra_stateDetails]

False

JSON array of JSON objects that lists additional details about why the state transitioned to "managed" or "unmanaged".
If no details are available, this array will be empty.

  • Minimum items: 0

tridentManagedStateAllowed

array[string]

False

States that can be requested in a given tridentManagedState. The following states can be requested in each defined state:

  • "managed": "managed"

  • "unmanaged": "unmanaged"

inUse

string

True

JSON string containing a value indicating if the cluster has any managed applications and therefore cannot be deleted. Defined values are:

  • "false" - The cluster is not managed or is managed but has no managed applications associated with it

  • "true" - The cluster is managed and has managed applications associated with it

accHost

string

False

JSON string that indicates that this cluster hosts the instance of Astra Control Center that is currently being accessed. Defined values are:

  • "true" - This cluster is hosting the instance of Astra Control Center that is currently being accessed.

clusterType

string

True

JSON string containing a value indicating the type of cluster. Defined values are:

  • "gke" - Kubernetes hosted on Google Kubernetes Engine

  • "aks" - Kubernetes hosted on Microsoft Azure Kubernetes Service

  • "eks" - Kubernetes hosted on Amazon Elastic Kubernetes Service

  • "rke" - The cluster is of type Rancher

  • "tanzu" -The cluster is of type Tanzu Kubernetes Grid

  • "openshift" - The cluster is of type OpenShift

  • "kubernetes" - The cluster is generic Kubernetes

clusterVersion

string

False

JSON string containing a value indicating the semantic versioning representation of the cluster environment. For Kubernetes clusters, this is the Kubernetes version. Defined values are:

  • Minimum length: 1

  • Maximum length: 31

clusterVersionString

string

False

JSON string containing a value indicating the extended versioning information for the cluster environment. For Kubernetes clusters, this is the full Kubernetes version. Defined values are:

  • Minimum length: 1

  • Maximum length: 31

clusterCreationTimestamp

string

False

JSON string containing the timestamp indicating when the cluster was originally created. Defined values are:

  • Conforms to the ISO-8601 Date Time Schema

namespaces

array[string]

False

JSON array of JSON strings, each indicating a namespace within the cluster. Defined values are:

  • Minimum length: 1

  • Maximum length: 253

defaultStorageClass

string

False

JSON string containing a storageClass ID that corresponds to the default storage class set in Kubernetes. Defined values are:

  • Conforms to the Astra Identifier Schema

cloudID

string

True

JSON string containing a value indicating the ID of the cloud the cluster is running on. Defined values are:

  • Conforms to the Astra Identifier Schema

credentialID

string

False

JSON string containing a value indicating the ID of the credential that contains the kubeconfig file for the cluster. Defined values are:

  • Conforms to the Astra Identifier Schema

location

string

False

JSON string containing a value provided by the cloud that the cluster is running on, indicating the cloud-specific location of the cluster. Defined values are:

  • Minimum length: 1

  • Maximum length: 63

isMultizonal

string

False

JSON string containing a value provided by the cloud the cluster is running on, indicating whether the cluster spans two or more availability zones. Defined values are:

  • "true" - The cluster spans two or more availability zones

  • "false" - The cluster is wholly located within a single availability zone

privateRouteID

string

False

JSON string containing the location ID for private clusters.

  • Minimum length: 1

  • Maximum length: 255

apiServiceID

string

False

JSON string containing the UUID from the Kubernetes (k8s) API service object. Used to uniquely identify a cluster.

metadata

type_astra_metadata_update

True

Client and service-specified metadata associated with the resource. Defined values are:

  • Conforms to the Astra Metadata Schema If not specified on create, a metadata object will be created with no labels. If not specified on update, the metadata object's labels, creationTimestamp and createdBy, will be preserved without modification.

Example response
{
  "type": "application/astra-cluster",
  "version": "1.3",
  "id": "01eaddc3-75b9-5606-97ae-0aa468b59492",
  "name": "GKE-22",
  "state": "running",
  "stateUnready": [],
  "managedState": "unmanaged",
  "managedStateUnready": [],
  "protectionState": "full",
  "protectionStateDetails": [],
  "tridentVersion": "21.07.2",
  "tridentManagedState": "managed",
  "tridentManagedStateDetails": [],
  "inUse": "false",
  "clusterType": "kubernetes",
  "clusterVersion": "1.91.1",
  "clusterVersionString": "1.19.1",
  "clusterCreationTimestamp": "2020-08-06T12:24:52.256624Z",
  "namespaces": [
    "kube-system",
    "kube-public",
    "my-app-1"
  ],
  "defaultStorageClass": "31c95aba-99d9-4987-b1bb-000dfce5952c",
  "cloudID": "548bdc1f-f00e-4a23-a062-83265d224d46",
  "credentialID": "6fa2f917-f730-41b8-9c15-17f531843b31",
  "location": "europe-west4",
  "isMultizonal": "false",
  "apiServiceID": "6bf33af2-872a-4553-a891-26b510c3edbe",
  "metadata": {
    "labels": [],
    "creationTimestamp": "2022-10-06T20:58:16.305662Z",
    "modificationTimestamp": "2022-10-06T20:58:16.305662Z",
    "createdBy": "8f84cf09-8036-51e4-b579-bd30cb07b269"
  }
}

Response

Status: 401, Unauthorized
Name Type Required Description

type

string

True

title

string

True

detail

string

False

status

string

True

correlationID

string

False

Example response
{
  "type": "https://astra.netapp.io/problems/3",
  "title": "Missing bearer token",
  "detail": "The request is missing the required bearer token.",
  "status": "401"
}

Response

Status: 400, Bad request
Name Type Required Description

type

string

True

title

string

True

detail

string

False

status

string

True

correlationID

string

False

Example response
{
  "type": "https://astra.netapp.io/problems/5",
  "title": "Invalid query parameters",
  "detail": "The supplied query parameters are invalid.",
  "status": "400"
}

Response

Status: 409, Conflict
Name Type Required Description

type

string

True

title

string

True

detail

string

False

status

string

True

correlationID

string

False

invalidFields

array[invalidFields]

False

List of invalid request body fields

Example response
{
  "type": "https://astra.netapp.io/problems/10",
  "title": "JSON resource conflict",
  "detail": "The request body JSON contains a field that conflicts with an idempotent value.",
  "status": "409"
}

Response

Status: 403, Forbidden
Name Type Required Description

type

string

True

title

string

True

detail

string

False

status

string

True

correlationID

string

False

Example response
{
  "type": "https://astra.netapp.io/problems/11",
  "title": "Operation not permitted",
  "detail": "The requested operation isn't permitted.",
  "status": "403"
}

Response

Status: 500, Internal server error
Name Type Required Description

type

string

True

title

string

True

detail

string

False

status

string

True

correlationID

string

False

Example response
{
  "type": "https://astra.netapp.io/problems/64",
  "title": "Storage classes not found",
  "detail": "Storage classes from Trident weren't found.",
  "status": "500"
}

Error

Status: 404, Not found
Name Type Required Description

type

string

True

title

string

True

detail

string

False

status

string

True

correlationID

string

False

Example error response
{
  "type": "https://astra.netapp.io/problems/2",
  "title": "Collection not found",
  "detail": "The collection specified in the request URI wasn't found.",
  "status": "404"
}

Definitions

See Definitions

type_astra_label

Name Type Required Description

name

string

True

value

string

True

type_astra_metadata_update

Client and service-specified metadata associated with the resource. Defined values are:

  • Conforms to the Astra Metadata Schema If not specified on create, a metadata object will be created with no labels. If not specified on update, the metadata object's labels, creationTimestamp and createdBy, will be preserved without modification.

Name Type Required Description

labels

array[type_astra_label]

False

creationTimestamp

string

False

modificationTimestamp

string

False

createdBy

string

False

modifiedBy

string

False

type_astra_stateDetails

Name Type Required Description

type

string

True

title

string

True

detail

string

True

invalidParams

Name Type Required Description

name

string

True

Name of the invalid query parameter

reason

string

True

Reason why the query parameter is invalid

invalidFields

Name Type Required Description

name

string

True

Name of the invalid request body field

reason

string

True

Reason why the request body field is invalid