Skip to content
NewFinOps, Kubernetes and AI, on one platform
Book a demo

On-premises and data centers

Kubernetes cost allocation for clusters that never had a bill

On-prem clusters run on hardware that was paid for years ago. KubeOn prices that capacity with your rate cards or your hardware cost, then allocates it to teams the same way it does in the cloud.

What KubeOn reads

What KubeOn needs in your data center

Your data center

  • Your rate cardOr amortized hardware cost
  • Outbound HTTPSNo inbound port
  • OpenShift, Rancher, Tanzu or k3sThe agent sends a snapshot every hour

KubeOn hub

Fully managed by UnitVane

  1. 1Load your rates
  2. 2Join them with each snapshot
  3. 3Allocate every node's cost
  4. 4Show idle capacity

What you get

  • Cost per team and labelPods, namespaces and teams
  • Priced with your ratesThe same report as any cloud
  • Savings to act onAs pull requests, or applied by KubeOn

Pricing

Rate cards per node pool or label (vCPU-hour, GiB-hour, GPU-hour, storage GiB-month), or hardware purchase price over a depreciation period plus power, space and support.

Network

Outbound HTTPS from each cluster to KubeOn, which runs everything else. No inbound port.

Agent identity

A cluster token from KubeOn, in a Kubernetes Secret. Snapshots go to your organization in KubeOn and nowhere else.

Runs onRed Hat OpenShiftRancher RKE2VMware Tanzuk3skubeadm on bare metalMirantis Kubernetes Engine

Setup

Three steps to the first allocation

Cluster inventory appears within the first hour. Allocated costs follow as soon as billing data is in.

  1. 01

    Define your rates

    Write a rate card per node pool, or enter hardware cost and let KubeOn amortize it.
    rate-cards/dc1-standard.yaml
    # rate-cards/dc1-standard.yamlapiVersion: kubeon.io/v1kind: RateCardmetadata:  name: dc1-standardspec:  currency: USD  effectiveFrom: "2026-01-01"  # Option 1: unit rates, per node pool or node label  rates:    - match: { nodeLabel: "node.kubernetes.io/pool=general" }      vcpuHour: 0.0312      memoryGiBHour: 0.0041    - match: { nodeLabel: "node.kubernetes.io/pool=gpu" }      vcpuHour: 0.0312      memoryGiBHour: 0.0041      gpuHour: 1.18  storage:    - storageClass: ceph-rbd      gibMonth: 0.06  # Option 2: amortized hardware, spread across the nodes it covers  hardware:    - match: { nodeLabel: "kubeon.io/rack=r12" }      purchasePrice: 184000      depreciationMonths: 48      monthly:        power: 1450        space: 900        support: 610
  2. 02

    Install the agent

    The same chart, with the rate card named in the values.
    kubeon-agent.yaml
    # kubeon-agent.yaml (on-premises)clusterName: dc1-prodkubeon:  existingSecret: kubeon-agent-tokenpricing:  rateCard: dc1-standard   # the rate card that prices this cluster's nodes
  3. 03

    Allow outbound HTTPS

    The agent sends snapshots to KubeOn over port 443. Nothing else in the data center needs to change.
    Helm
    helm upgrade --install kubeon-agent oci://registry.kubeon.io/kubeon/charts/kubeon-agent \  --version 0.6.0 \  --namespace kubeon --create-namespace \  -f kubeon-agent.yaml

Highlights

Built for how data centers are priced

Rate cards

Unit rates per node pool or label, effective-dated so a new rate applies from its start date and earlier days keep theirs.

Hardware amortization

Purchase price over a depreciation period, plus power, space and support.

GPU pricing

GPU-hour rates for accelerator nodes, with idle GPU time reported.

Hybrid views

On-prem and cloud clusters in the same allocation, budget and report.

Outbound only

One HTTPS destination, no inbound port, no Service or Ingress.

Self-hosted models

GPUs priced by rate card, with idle time shown beside each one.

FAQ

On-premises questions

Let's get started

A 30-minute walkthrough on your own billing data, for your clouds, your clusters and your model providers.