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
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:
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 textPaste 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:
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:
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
| When | What you see |
|---|---|
| Within the hour | The cluster, its nodes, namespaces and workloads in Diagnostics and Clusters |
| Within the hour, once billing data is in | Allocated cost per namespace, team and label in Allocations |
| Once billing data is in | 180 days of billing read and allocated, in Cloud costs |
| Within 30 minutes of allocation | Savings, starting with findings that need no usage history |
| At the next daily regeneration | The first change proposals |
team, cost_center and app (or the names you already use) before you look at chargeback. KubeOn discovers owners from label values automatically.