Skip to main content
PUT
Resize control-plane nodes

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

authorization
string | null
x-ankra-organisation-id
string | null

Path Parameters

cluster_id
string<uuid>
required

Body

application/json
instance_type
string
required

The new instance type for every control plane node. On a stopped cluster it is applied at the next start; on a running cluster with at least three controllers it is rolled out live, one controller at a time, each drained and waited back to healthy before the next. On a running Hetzner cluster with a single controller it resizes that server in place, which takes the Kubernetes API down while it reboots and needs accept_api_downtime.

Minimum string length: 1
accept_api_downtime
boolean
default:false

Accepts that resizing a RUNNING cluster's only control plane takes the Kubernetes API down for a few minutes while that server reboots on the new type. Required for that resize (Hetzner), which is refused with 409 without it; ignored on every other lane. Per request, never stored as a setting.

force_drain
boolean
default:false

Rolling lane only. Bypass PodDisruptionBudgets when draining each controller. Off by default: a PDB is a workload owner's stated availability requirement.

Response

Successful Response

mode
enum<string>
required

Which lane the request took: 'offline' rewrote a stopped cluster's plan, 'rolling' is the live one-controller-at-a-time path on a running cluster, 'live_with_api_downtime' resizes a running cluster's only controller in place with the Kubernetes API down while it reboots. It describes the lane, not whether work was dispatched - read operation_id for that.

Available options:
offline,
rolling,
live_with_api_downtime
new_instance_type
string
required
previous_instance_type
string
required
updated
integer
required
operation_id
string<uuid> | null

The operation to poll, when the request dispatched one. Null whenever nothing was dispatched: on the offline lane, which applies the new size at the next cluster start (its own operation), and on either lane when the control planes already run the requested type (updated is 0). Decide whether to poll by testing operation_id for null, not by reading mode.