Skip to content
NewFinOps, Kubernetes and AI, on one platform
Book a demo
UnitVane docs
API referenceReleases

Quickstart

From first sign-in to allocated costs: connect billing, install the agent on one cluster and check the first run. Other clouds follow the same steps.

On this page

Before you start

KubeOn creates your organization and invites its first admin. You also need cluster-admin on one cluster, to create the agent's read-only ClusterRole, and access to the AWS account that owns your Cost and Usage Report.

1. Sign in and invite your team

Accept the invitation and sign in at app.kubeon.io. In Settings > People, invite the people who will connect billing and clusters, with the Admin or Platform engineer role. With single sign-on, sign-in goes to your identity provider instead: see users, roles and SSO.

2. Connect billing

KubeOn reads a CUR 2.0 Data Export with resource IDs and split cost allocation data. If you already have one cataloged in AWS Glue, deploy the KubeOn billing role in the account that owns it. It reads the export and writes only Athena query results:

CloudFormation
aws cloudformation deploy \  --stack-name kubeon-billing-access \  --template-url https://downloads.kubeon.io/aws/kubeon-billing-access.yml \  --capabilities CAPABILITY_NAMED_IAM \  --parameter-overrides \      KubeOnAccountId=444455556666 \      KubeOnRoleName=kubeon-prod-hub-task \      ExternalId="$(openssl rand -hex 24)" \      CurBucketName=acme-cur-exports \      AthenaResultsBucketName=acme-athena-results \      GlueDatabaseName=cur_database \      AthenaWorkgroupName=primaryaws cloudformation describe-stacks --stack-name kubeon-billing-access \  --query "Stacks[0].Outputs[?OutputKey=='RoleArn'].OutputValue" --output text

Paste the role ARN and the ExternalId into Settings > Integrations > Add integration in KubeOn. Use Test integration to run a small Athena query before saving. See Connect AWS billing if you need to create the export, or Azure and Google Cloud.

3. Install the agent

In Settings > Integrations > Add cluster, name the cluster and choose Create token. KubeOn prints the Helm command with the token filled in; run it with access to the cluster:

Install
helm upgrade --install kubeon-agent oci://registry.kubeon.io/kubeon/charts/kubeon-agent \  --namespace kubeon --create-namespace \  --set clusterName=prod-use1-a \  --set kubeon.agentToken=<token from KubeOn>

The agent sends what it reads to your organization in KubeOn and nowhere else, so there is no bucket or cloud role to set up. For production, keep the token in a Secret and pin the chart version: see install the agent.

4. Check the first run

The CronJob runs once an hour. To send a snapshot now, start a job from the CronJob and read its log:

Verify
kubectl -n kubeon get cronjob,jobkubectl -n kubeon create job --from=cronjob/kubeon-agent kubeon-agent-first-runkubectl -n kubeon logs job/kubeon-agent-first-run# the last line reads: sent snapshot to https://app.kubeon.io (... bytes)

Open Diagnostics in KubeOn. The cluster appears as soon as the job finishes. For up to 2 days, billing and allocation say Waiting for the first billing data; that is expected, because clouds deliver the bill a day or two late.

5. Add the rest of the fleet

Create a token per cluster and install the same chart on each, by hand or with Flux, Argo CD or Terraform. Every cluster appears in Clusters with its agent version, so you can follow a rollout.

What to expect

Data availability

Within the first hour once metrics and billing data are available. A new billing export can take up to a day to arrive. Savings refresh every 30 minutes; proposals regenerate daily. Usage-based findings need the documented history window.
WhenWhat you see
Within the hourThe cluster, its nodes, namespaces and workloads in Diagnostics and Clusters
Within the hour, once billing data is inAllocated cost per namespace, team and label in Allocations
Once billing data is in180 days of billing read and allocated, in Cloud costs
Within 30 minutes of allocationSavings, starting with findings that need no usage history
At the next daily regenerationThe first change proposals
Label workloads with team, cost_center and app (or the names you already use) before you look at chargeback. KubeOn discovers owners from label values automatically.
Need help with this guide?Contact support