update_node_group
Update an existing worker node group of an Ankra-provisioned self-managed cluster. Provide any combination of autoscaling ({enabled, min_count, max_count}; enabling installs the Ankra-managed Cluster Autoscaler on first use and requires a recent cluster agent and the current count within max_count; min_count 0 scales the group to zero when idle), labels (replaces the group's node labels) and taints (replaces the group's node taints) - they are applied in that order in one call - OR new_instance_type on its own (drains and power-cycles every node in the group, not reversible; refused when the group's pods cannot fit the new type, and when the group is set to scale to zero and the new instance type cannot be sized; when the resize preflight finds risks - the group is the only schedulable worker, it hosts the Ankra agent, a PodDisruptionBudget blocks the drain, a pod's ReadWriteOnce volume must move - it is refused naming them until the user accepts them and the call carries acknowledge_risks=true) OR abandon_pending_resize=true on its own (cancels a resize the group still has pending, for example one whose drain a PodDisruptionBudget blocks: the servers keep the type they run and nothing is drained). This scales NODES; to scale a workload's pods use its chart's autoscaling values or an HPA manifest through the stack draft. Instance type/label/taint changes flip the group's nodes to updating and roll out in the background. Call list_node_groups first for the group names and current values.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| labels | No | Replacement Kubernetes node labels for the group. Exactly one aspect per call. | |
| taints | No | Replacement Kubernetes node taints for the group, each {key, value, effect}. Exactly one aspect per call. | |
| cluster_id | No | UUID of the target cluster. Optional when a cluster is selected. | |
| group_name | Yes | Node group to update (from list_node_groups). | |
| autoscaling | No | New autoscaling settings: {enabled, min_count, max_count}. Bounds default to 1 and 100. min_count 0 parks the group at zero nodes when idle and provisions it again when a pod needs it - the cost-saving setting for a warm standby pool - and is allowed only when Ankra can size the group's instance_type, refused naming the instance type when it cannot. A max_count below the group's current node count is accepted: the group scales down to max_count, least busy nodes first, each drained once the pipeline steps on it finish; a min_count above the count scales the group up to min_count. Exactly one aspect per call. | |
| cluster_name | No | Exact name of the target cluster. Optional when a cluster is selected. | |
| acknowledge_risks | No | Set true only after telling the user every risk the resize preflight named for this new_instance_type and the user explicitly accepted them. Never set it on your own judgement. | |
| new_instance_type | No | New provider instance type for every node in the group. Exactly one aspect per call. Right-size from the group's pod requests, then call list_instance_types with cluster_id and pick the cheapest type with available=true that fits the busiest node: an out-of-stock type is refused before the card is raised, naming the cheapest in-stock types that fit the group's current requests. | |
| abandon_pending_resize | No | Set true to ABANDON the resize this group has pending (a resize that keeps failing, or whose drain a PodDisruptionBudget blocks): each server goes back to the type it actually runs, with nothing drained or powered off. Exactly one aspect per call; a group with no pending resize is refused. |