Skip to content

Upgrade a cluster's Kubernetes version

POST
/api/v1/organizations/{orgID}/clusters/{clusterID}/upgrade
curl --request POST \
--url https://api.aetherplatform.cloud/api/v1/organizations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/clusters/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/upgrade \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "target_version": "example" }'

Initiates a Kubernetes version upgrade across the control plane and worker node pools. Upgrades must be incremental: a patch bump on the same minor or a step to exactly the next minor. The cluster must be running.

orgID
required
string format: uuid

Organization UUID.

clusterID
required
string format: uuid

Cluster UUID.

Media type application/json
object
target_version
required

The target Kubernetes version (MAJOR.MINOR or MAJOR.MINOR.PATCH). Must be an incremental step from the current version.

string
Example generated
{
"target_version": "example"
}

Upgrade accepted.

Media type application/json

The updated cluster plus worker-rollout counters. When worker patching partially fails, additional fields (workers_pending, workers_error) are present.

object
cluster
object
id
required
string format: uuid
org_id
required
string format: uuid
name
required
string
region
required
string
k8s_version
required
string
status
required
string
Allowed values: provisioning running upgrading degraded deleting failed
status_message
string | null
endpoint
string | null
observed_kubernetes_version

The version aether-operator reports once a rollout settles.

string | null
capi_cluster_name
string | null
keycloak_realm
string | null
harbor_project
string | null
ceph_pool
string | null
lb_subnet
string | null
worker_subnet

The per-cluster worker /24 (read-only; allocated at create time).

string | null
created_at
required
string format: date-time
updated_at
required
string format: date-time
workers_patched
integer
workers_skipped
integer
workers_pending
boolean
workers_error
string
Example
{
"cluster": {
"status": "provisioning"
}
}

Missing or invalid credentials.

Media type application/json
object
error
required
object
code
required

A stable, machine-readable error code.

string
message
required
string
details
Array<object>
object
field
required
string
code
required
string
message
required
string
Example generated
{
"error": {
"code": "example",
"message": "example",
"details": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}
}

The requested resource was not found.

Media type application/json
object
error
required
object
code
required

A stable, machine-readable error code.

string
message
required
string
details
Array<object>
object
field
required
string
code
required
string
message
required
string
Example generated
{
"error": {
"code": "example",
"message": "example",
"details": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}
}

The cluster is not in a state that permits upgrade.

Media type application/json
object
error
required
object
code
required

A stable, machine-readable error code.

string
message
required
string
details
Array<object>
object
field
required
string
code
required
string
message
required
string
Example generated
{
"error": {
"code": "example",
"message": "example",
"details": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}
}

Request validation failed.

Media type application/json
object
error
required
object
code
required

A stable, machine-readable error code.

string
message
required
string
details
Array<object>
object
field
required
string
code
required
string
message
required
string
Example generated
{
"error": {
"code": "example",
"message": "example",
"details": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}
}

A required backend dependency is unavailable.

Media type application/json
object
error
required
object
code
required

A stable, machine-readable error code.

string
message
required
string
details
Array<object>
object
field
required
string
code
required
string
message
required
string
Example generated
{
"error": {
"code": "example",
"message": "example",
"details": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}
}