Skip to content

UpCloud Resources

Shoehorn automatically discovers and catalogs UpCloud cloud resources. The integration runs in the crawler service and syncs resources on a configurable interval.

UpCloud Managed Kubernetes clusters are cataloged as upcloud-k8s entities. Each cluster includes:

  • Cluster name, UUID, and version
  • Node group details (count, plan, disk size)
  • Network and zone information
  • Pricing breakdown (control plane + node costs)
  • Direct link to the UpCloud Hub console

Console link: hub.upcloud.com/kubernetes/{uuid}

UpCloud Cloud Servers are cataloged as upcloud-server entities. Each server includes:

  • Hostname, UUID, and state
  • Plan, CPU count, and memory
  • IP addresses (public and private)
  • Zone and storage details
  • Monthly pricing

Console link: hub.upcloud.com/server/{uuid}

UpCloud Managed Databases are cataloged as upcloud-db entities. Supported engines include PostgreSQL, MySQL, Redis, Valkey, and OpenSearch. Each database includes:

  • Database name, UUID, and engine version
  • Plan and node count
  • Connection details (host, port)
  • Maintenance window
  • Monthly pricing

Console link: hub.upcloud.com/database/{uuid}

UpCloud Managed Object Storage instances are cataloged as upcloud-objectstorage entities. Each instance includes:

  • Storage name, UUID, and region
  • Endpoint URL
  • Monthly pricing

Console link: hub.upcloud.com/object-storage/{uuid}

Terminal window
CLOUD_PROVIDER_UPCLOUD_ENABLED=true
UPCLOUD_TOKEN=ucat_your_token_here
  1. Log in to the UpCloud Hub
  2. Navigate to Account > API Keys
  3. Create a new API token with read access
  4. Copy the token (starts with ucat_)
cloudProviders:
syncInterval: "15m" # Global sync interval (default: 15m, minimum: 1m)
upcloud:
enabled: true
syncInterval: "" # Per-provider override (empty = use global)
apiBaseUrl: "" # Defaults to https://api.upcloud.com/1.3

The API token is stored in the integration-credentials Kubernetes secret:

Terminal window
kubectl create secret generic integration-credentials \
--from-literal=upcloud_token="ucat_your_token_here"
VariableRequiredDefaultDescription
CLOUD_PROVIDER_UPCLOUD_ENABLEDYesfalseEnable UpCloud discovery
UPCLOUD_TOKENYesUpCloud API token
CLOUD_PROVIDER_SYNC_INTERVALNo15mGlobal sync interval
UPCLOUD_SYNC_INTERVALNoPer-provider sync override
UPCLOUD_API_BASE_URLNohttps://api.upcloud.com/1.3API base URL

UpCloud resource labels control how entities appear in Shoehorn. Add labels in the UpCloud Hub or via the UpCloud API.

These labels map to specific UI cards:

UpCloud LabelWhere It AppearsExample Value
teamContacts Card (owner)platform
ownerContacts Card (owner)infra-team
descriptionAbout CardProduction API database
tagsAbout Card (comma-separated)critical,tier-1,eu-west
linksLinks Card (name=url pairs)Grafana=https://grafana.io/d/xyz
slackChannelSlack Cardplatform-alerts

Apply these labels to a Managed Database in the UpCloud Hub:

team=platform
description=Production PostgreSQL 16 cluster for the API
tags=critical,tier-1,eu-west
links=Grafana=https://grafana.io/d/db-dashboard,Runbook=https://wiki.internal/db-runbook
slackChannel=db-alerts

Result in Shoehorn:

  • Contacts Card: Shows “platform” as owner
  • About Card: Shows description and tags
  • Links Card: Shows Grafana and Runbook links alongside the auto-generated UpCloud Console link
  • Slack Card: Shows #db-alerts channel link

Any label NOT in the reserved list above appears as a metadata badge on the entity detail page:

env=production
region=eu-west
cost-center=engineering

These show as key-value badges in the Cloud Summary card.

Note: slackChannel and slackchannel are both supported. All other labels are case-sensitive.

Monthly pricing is automatically calculated from the UpCloud pricing API.

ResourceFormula
ServerPlan price per hour x 730
Managed DatabasePlan price per hour x 730
Managed KubernetesControl plane price + sum(node count x node plan price)
Managed Object StorageStandard tier price

Prices are in EUR and displayed as monthly cost on entity detail cards.

Cloud entities are fully searchable by:

  • Entity name, description
  • IP address, hostname
  • Zone, plan, engine
  • Label values (e.g., search “production” finds entities with env=production label)
  • UpCloud UUID

Cloud entity IDs use colons: upcloud:server:abc123. These work in browser URLs without encoding:

/catalog/entities/upcloud:server:abc123