create_upcloud_cluster
Create and provision a new Kubernetes cluster on UpCloud. Requires an UpCloud API credential, SSH key credential, and a zone. The cluster will begin provisioning immediately after creation. Use list_provider_credentials to find credential IDs and list_instance_types for plan sizes.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Cluster name. Must be unique within the organisation. | |
| zone | Yes | UpCloud zone (e.g., 'de-fra1', 'fi-hel1', 'nl-ams1', 'us-chi1'). | |
| zones | No | Zone pool for a multi-zone cluster; must include 'zone' (the primary). Needs at least 3 zones and 3 control planes; the nodes are joined by a platform-managed WireGuard mesh. Omit for a single-zone cluster. | |
| description | No | Optional cluster description. | |
| worker_plan | No | UpCloud plan for worker nodes. Default: 'PREMIUM-2xCPU-4GB'. | |
| bastion_plan | No | UpCloud plan for the bastion host. Default: 'STARTER-1xCPU-1GB'. | |
| distribution | No | Kubernetes distribution. Default: 'kubeadm' (vanilla upstream Kubernetes with Cilium). 'k3s' is the lightweight alternative. | |
| gateway_plan | No | UpCloud NAT gateway plan every node's outbound internet runs through. Default: 'standard' (500 Mbps, two servers). A plan with server_number 1 ('development', 'essentials') cuts all cluster egress while UpCloud rebuilds its one server; two-server plans fail over. Get the plans from list_upcloud_options (gateway_plans). | |
| network_mode | No | Derived when omitted: 'wireguard_mesh' for a multi-zone pool, 'private_network' otherwise. 'wireguard_mesh' on a single zone makes the cluster mesh-capable. | |
| worker_count | No | Number of worker nodes. Default: 1. | |
| credential_id | Yes | UUID of the UpCloud API credential. Get from list_provider_credentials with provider='upcloud'. | |
| control_plane_plan | No | UpCloud plan for control plane nodes. Default: 'PREMIUM-2xCPU-4GB'. | |
| kubernetes_version | No | Version for the chosen distribution. With the default distribution (kubeadm) pass a plain upstream tag such as v1.36.4, from list_kubernetes_versions with engine 'kubeadm'. With distribution 'k3s' pass a k3s build such as v1.35.7+k3s1, from engine 'k3s' (a bare patch resolves to its newest +k3sN build). A +k3sN build without distribution 'k3s' is refused. Omit it to install the catalogue's stable version for the distribution. | |
| control_plane_count | No | Number of control plane nodes. Default: 1. | |
| ssh_key_credential_id | Yes | UUID of the SSH key credential. Get from list_provider_credentials with provider='ssh-key'. |