Prerequisites
Before creating an UpCloud cluster, you need two credentials:UpCloud API Credential
An UpCloud API token with read/write permissions. See UpCloud Credentials.
SSH Key Credential
An SSH public key for server access. You can provide your own or let Ankra generate one. See SSH Key Credentials.
Creating an UpCloud Cluster
Via the Platform UI
A guided wizard walks you through creating an UpCloud cluster select credentials, pick a datacenter zone, choose server plans, set control plane and worker counts, and launch.Select Credentials
Pick your UpCloud API credential and SSH key credential from the dropdowns. You can also create new credentials directly from the wizard.
Choose Datacenter Zone
Select an UpCloud zone (e.g., Helsinki, Frankfurt, Chicago, Amsterdam). Each zone shows the location and country.
Configure Nodes
Set your cluster topology:
Bastion Server plan for the SSH bastion host (e.g.,
1xCPU-1GB)
Control Plane Count (1 or 3) and plan (e.g., 2xCPU-4GB)
Workers Count and plan (e.g., 2x 4xCPU-8GB)The wizard shows vCPUs, RAM, and monthly cost for each plan to help you choose.Create & Track Progress
Click Create to start provisioning. A live progress view tracks every step credential setup, router creation, network creation, gateway setup, SSH key deployment, bastion provisioning, server creation, k3s installation, and Ankra Agent setup. The cluster appears with an offline state until provisioning completes, then transitions to online.
Managing from the Dashboard
Once your UpCloud cluster is online, you can manage it directly from the Ankra dashboard:- Scale workers Go to Cluster Settings → General to scale worker nodes up or down
- Upgrade Kubernetes Upgrade the k3s version from cluster settings
- Deprovision Delete the cluster and all UpCloud resources from the Danger Zone in cluster settings
Via the CLI
Via the API
Cluster Configuration Options
| Parameter | Default | Description |
|---|---|---|
name | required | Unique cluster name |
credential_id | required | UpCloud API credential ID |
ssh_key_credential_id | required | SSH key credential ID |
zone | required | UpCloud datacenter zone |
network_ip_range | 10.0.0.0/24 | Private network IP range |
bastion_plan | 1xCPU-1GB | Server plan for the bastion host |
control_plane_count | 1 | Number of control plane nodes (1 or 3) |
control_plane_plan | 2xCPU-4GB | Server plan for control planes |
worker_count | 1 | Number of worker nodes (legacy, use node_groups instead) |
worker_plan | 2xCPU-4GB | Server plan for workers (legacy, use node_groups instead) |
node_groups | Array of node group definitions (see Node Groups) | |
distribution | k3s | Kubernetes distribution |
kubernetes_version | latest stable | Kubernetes version (optional) |
UpCloud Datacenter Zones
| Zone | Location |
|---|---|
fi-hel1 | Helsinki, Finland |
de-fra1 | Frankfurt, Germany |
us-chi1 | Chicago, United States |
nl-ams1 | Amsterdam, Netherlands |
uk-lon1 | London, United Kingdom |
sg-sin1 | Singapore |
au-syd1 | Sydney, Australia |
pl-waw1 | Warsaw, Poland |
UpCloud Server Plans
| Plan | vCPUs | RAM | Monthly Cost |
|---|---|---|---|
1xCPU-1GB | 1 | 1 GB | $5.00 |
2xCPU-4GB | 2 | 4 GB | $20.00 |
4xCPU-8GB | 4 | 8 GB | $40.00 |
8xCPU-16GB | 8 | 16 GB | $80.00 |
Available plans may vary by zone. Check the UpCloud pricing page for the latest offerings.
Node Groups
Node groups let you organize worker nodes into logical groups with independent server plans, counts, labels, and taints. Manage node groups from Settings > Nodes in the dashboard, or via the API.Node Group API Reference
| Endpoint | Method | Description |
|---|---|---|
/api/v1/clusters/upcloud/{id}/node-groups | GET | List all node groups |
/api/v1/clusters/upcloud/{id}/node-groups | POST | Add a node group |
/api/v1/clusters/upcloud/{id}/node-groups/{name}/scale | PUT | Scale a node group (0–100) |
/api/v1/clusters/upcloud/{id}/node-groups/{name}/instance-type | PUT | Change server plan |
/api/v1/clusters/upcloud/{id}/node-groups/{name}/labels | PUT | Update labels |
/api/v1/clusters/upcloud/{id}/node-groups/{name}/taints | PUT | Update taints |
/api/v1/clusters/upcloud/{id}/node-groups/{name} | DELETE | Delete a node group |
Legacy Worker Scaling
The legacyscale-workers and worker-count endpoints still work for backward compatibility.
For new clusters, prefer using Node Groups for more granular control.
Upgrading Kubernetes Version
You can upgrade the Kubernetes (k3s) version on all nodes in an UpCloud cluster. Upgrades are applied to control plane nodes first, then workers.Via the Dashboard
Go to your cluster → Settings → General to see the current k3s version and trigger an upgrade.Check Current Version
Upgrade Version
Deprovisioning
Deprovisioning deletes all UpCloud resources (servers, networks, routers, gateways, SSH keys) and removes the cluster from Ankra.Via the Dashboard
Go to your cluster → Settings → General → Danger Zone and click Deprovision Cluster. You will be asked to confirm before the operation begins.Via CLI or API
Architecture
An UpCloud cluster provisions the following infrastructure:| Component | Description |
|---|---|
| Router | SDN router for network routing |
| Private Network | Isolated network for inter-node communication |
| NAT Gateway | Network address translation for outbound traffic |
| Bastion Host | Jump server for secure SSH access to cluster nodes |
| Control Plane(s) | Kubernetes control plane servers |
| Worker(s) | Kubernetes worker servers for running workloads |
| SSH Keys | Deployed to all servers for access |
Troubleshooting
Common Issues
| Issue | Solution |
|---|---|
| Cluster stuck in provisioning | Check UpCloud API token permissions and account quota |
| Cannot scale workers | Ensure cluster is online and no operations are running |
| Invalid API token | Re-validate at UpCloud Control Panel |
| Server plan unavailable | Try a different zone or plan |
UpCloud Account Quotas
UpCloud has default resource limits per account. If provisioning fails, check your quotas in the UpCloud Control Panel:- Servers
- Networks
- Routers
- IP Addresses