UpCloud Resources
Shoehorn automatically discovers and catalogs UpCloud cloud resources. The integration runs in the crawler service and syncs resources on a configurable interval.
Supported Resources
Section titled “Supported Resources”Managed Kubernetes
Section titled “Managed Kubernetes”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}
Servers
Section titled “Servers”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}
Managed Databases
Section titled “Managed Databases”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}
Managed Object Storage
Section titled “Managed Object Storage”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}
Configuration
Section titled “Configuration”Enable UpCloud Discovery
Section titled “Enable UpCloud Discovery”CLOUD_PROVIDER_UPCLOUD_ENABLED=trueUPCLOUD_TOKEN=ucat_your_token_hereGet an API Token
Section titled “Get an API Token”- Log in to the UpCloud Hub
- Navigate to Account > API Keys
- Create a new API token with read access
- Copy the token (starts with
ucat_)
Helm Configuration
Section titled “Helm Configuration”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.3The API token is stored in the integration-credentials Kubernetes secret:
kubectl create secret generic integration-credentials \ --from-literal=upcloud_token="ucat_your_token_here"Environment Variables
Section titled “Environment Variables”| Variable | Required | Default | Description |
|---|---|---|---|
CLOUD_PROVIDER_UPCLOUD_ENABLED | Yes | false | Enable UpCloud discovery |
UPCLOUD_TOKEN | Yes | — | UpCloud API token |
CLOUD_PROVIDER_SYNC_INTERVAL | No | 15m | Global sync interval |
UPCLOUD_SYNC_INTERVAL | No | — | Per-provider sync override |
UPCLOUD_API_BASE_URL | No | https://api.upcloud.com/1.3 | API base URL |
Labels
Section titled “Labels”UpCloud resource labels control how entities appear in Shoehorn. Add labels in the UpCloud Hub or via the UpCloud API.
Reserved Labels
Section titled “Reserved Labels”These labels map to specific UI cards:
| UpCloud Label | Where It Appears | Example Value |
|---|---|---|
team | Contacts Card (owner) | platform |
owner | Contacts Card (owner) | infra-team |
description | About Card | Production API database |
tags | About Card (comma-separated) | critical,tier-1,eu-west |
links | Links Card (name=url pairs) | Grafana=https://grafana.io/d/xyz |
slackChannel | Slack Card | platform-alerts |
Example
Section titled “Example”Apply these labels to a Managed Database in the UpCloud Hub:
team=platformdescription=Production PostgreSQL 16 cluster for the APItags=critical,tier-1,eu-westlinks=Grafana=https://grafana.io/d/db-dashboard,Runbook=https://wiki.internal/db-runbookslackChannel=db-alertsResult 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-alertschannel link
Metadata Badges
Section titled “Metadata Badges”Any label NOT in the reserved list above appears as a metadata badge on the entity detail page:
env=productionregion=eu-westcost-center=engineeringThese show as key-value badges in the Cloud Summary card.
Note:
slackChannelandslackchannelare both supported. All other labels are case-sensitive.
Pricing
Section titled “Pricing”Monthly pricing is automatically calculated from the UpCloud pricing API.
| Resource | Formula |
|---|---|
| Server | Plan price per hour x 730 |
| Managed Database | Plan price per hour x 730 |
| Managed Kubernetes | Control plane price + sum(node count x node plan price) |
| Managed Object Storage | Standard tier price |
Prices are in EUR and displayed as monthly cost on entity detail cards.
Search
Section titled “Search”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=productionlabel) - UpCloud UUID
Entity URLs
Section titled “Entity URLs”Cloud entity IDs use colons: upcloud:server:abc123. These work in browser URLs without encoding:
/catalog/entities/upcloud:server:abc123See Also
Section titled “See Also”- Cloud Provider Integration - Overview of all cloud integrations
- Entities - Entity types and lifecycle management