Skip to main content
Ankra supports provisioning fully managed Kubernetes clusters on UpCloud. You can create clusters with configurable control planes, workers, and networking — then scale workers up or down as needed.

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.
1

Navigate to Clusters

Go to Clusters in the Ankra dashboard and click Create Cluster.
2

Select UpCloud

Choose UpCloud as the provider.
3

Select Credentials

Pick your UpCloud API credential and SSH key credential from the dropdowns. You can also create new credentials directly from the wizard.
4

Choose Datacenter Zone

Select an UpCloud zone (e.g., Helsinki, Frankfurt, Chicago, Amsterdam). Each zone shows the location and country.
5

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.
6

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 SettingsGeneral 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

# Create credentials first
ankra credentials upcloud create --name my-upcloud-token  # securely prompts for token
ankra credentials upcloud ssh-key create --name my-ssh-key --generate

# Create the cluster
ankra cluster upcloud create \
  --name my-cluster \
  --credential-id <upcloud-credential-id> \
  --ssh-key-credential-id <ssh-key-credential-id> \
  --zone fi-hel1 \
  --control-plane-count 1 \
  --control-plane-plan 2xCPU-4GB \
  --worker-count 2 \
  --worker-plan 4xCPU-8GB

Via the API

curl -X POST https://platform.ankra.app/api/v1/clusters/upcloud \
  -H "Authorization: Bearer $ANKRA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-cluster",
    "credential_id": "<upcloud-credential-id>",
    "ssh_key_credential_id": "<ssh-key-credential-id>",
    "zone": "fi-hel1",
    "control_plane_count": 1,
    "control_plane_plan": "2xCPU-4GB",
    "worker_count": 2,
    "worker_plan": "4xCPU-8GB",
    "distribution": "k3s"
  }'

Cluster Configuration Options

ParameterDefaultDescription
namerequiredUnique cluster name
credential_idrequiredUpCloud API credential ID
ssh_key_credential_idrequiredSSH key credential ID
zonerequiredUpCloud datacenter zone
network_ip_range10.0.0.0/24Private network IP range
bastion_plan1xCPU-1GBServer plan for the bastion host
control_plane_count1Number of control plane nodes (1 or 3)
control_plane_plan2xCPU-4GBServer plan for control planes
worker_count1Number of worker nodes (1–10)
worker_plan2xCPU-4GBServer plan for workers
distributionk3sKubernetes distribution
kubernetes_versionlatest stableKubernetes version (optional)

UpCloud Datacenter Zones

ZoneLocation
fi-hel1Helsinki, Finland
de-fra1Frankfurt, Germany
us-chi1Chicago, United States
nl-ams1Amsterdam, Netherlands
uk-lon1London, United Kingdom
sg-sin1Singapore
au-syd1Sydney, Australia
pl-waw1Warsaw, Poland

UpCloud Server Plans

PlanvCPUsRAMMonthly Cost
1xCPU-1GB11 GB$5.00
2xCPU-4GB24 GB$20.00
4xCPU-8GB48 GB$40.00
8xCPU-16GB816 GB$80.00
Available plans may vary by zone. Check the UpCloud pricing page for the latest offerings.

Scaling Workers

You can scale worker nodes between 1 and 10 for any online UpCloud cluster. Scaling up adds new servers and installs Kubernetes. Scaling down removes workers starting from the highest index.
The cluster must be online with no active operations before scaling.

Via the Dashboard

Go to your cluster → SettingsGeneral and adjust the worker count. The new count is applied immediately and you can track progress in the Operations tab.

Check Current Workers

ankra cluster upcloud workers <cluster_id>
Response:
{
  "worker_count": 2,
  "min": 1,
  "max": 10
}

Scale Workers

ankra cluster upcloud scale <cluster_id> 4
Response:
{
  "previous_count": 2,
  "new_count": 4
}

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.
  • Only k3s clusters are supported for version upgrades.
  • Downgrades are not supported — k3s downgrades require an etcd snapshot restore.
  • You can only upgrade one minor version at a time (e.g., v1.33.x to v1.34.x, not v1.33.x to v1.35.x).
  • The cluster must be online with no active operations.

Via the Dashboard

Go to your cluster → SettingsGeneral to see the current k3s version and trigger an upgrade.

Check Current Version

ankra cluster upcloud k8s-version <cluster_id>
Response:
{
  "current_version": "v1.34.4+k3s1",
  "distribution": "k3s"
}

Upgrade Version

ankra cluster upcloud upgrade <cluster_id> v1.35.1+k3s1
Response:
{
  "previous_version": "v1.34.4+k3s1",
  "new_version": "v1.35.1+k3s1",
  "nodes_affected": 3
}

Deprovisioning

Deprovisioning deletes all UpCloud resources (servers, networks, routers, gateways, SSH keys) and removes the cluster from Ankra.
This action is irreversible. All data on the cluster will be permanently deleted.

Via the Dashboard

Go to your cluster → SettingsGeneralDanger Zone and click Deprovision Cluster. You will be asked to confirm before the operation begins.

Via CLI or API

ankra cluster upcloud deprovision <cluster_id>

Architecture

An UpCloud cluster provisions the following infrastructure:
ComponentDescription
RouterSDN router for network routing
Private NetworkIsolated network for inter-node communication
NAT GatewayNetwork address translation for outbound traffic
Bastion HostJump server for secure SSH access to cluster nodes
Control Plane(s)Kubernetes control plane servers
Worker(s)Kubernetes worker servers for running workloads
SSH KeysDeployed to all servers for access
All nodes are deployed within a private UpCloud SDN network. The bastion host provides the only external SSH access point, and a NAT gateway handles outbound traffic for nodes without public IPs.

Troubleshooting

Common Issues

IssueSolution
Cluster stuck in provisioningCheck UpCloud API token permissions and account quota
Cannot scale workersEnsure cluster is online and no operations are running
Invalid API tokenRe-validate at UpCloud Control Panel
Server plan unavailableTry 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
Contact UpCloud support to increase limits if needed.