Dimensions
A key with no suffix is read as
.compute on a node and .storage on a volume.
Prefer the explicit suffix.
Register a rate
Full request and response schema: Register a custom provider for compute, and Register a custom disk provider for storage.id for each entry. That UUID is what you tag with.
Tag the resource
On Kubernetes, use labels:Tag keys on each provider
Not every provider accepts the canonical key verbatim. CostGraph matches keys case-insensitively after replacing/, . and - with _, so the alias your
provider allows resolves to the same pin.
Azure tag names reject
/. GCP label keys allow only lowercase letters, digits,
- and _, and must start with a letter.
Inheritance
A pin applies to the object that carries it and to everything under it that has no nearer pin of the same dimension. Tag a node and its pods inherit the compute rate; tag one namespace differently and only that namespace changes. The nearest pin wins.What a pin changes
A pin sets ListCost: the rate you would be charged at list. It never overwrites BilledCost, which comes from an ingested bill. On a resource with no bill behind it, such as a bare-metal node, ListCost is the only cost there is. On a resource that is also billed, you get both, and the difference is your discount. Pins never double-count against an invoice.Change a rate
Re-POST the same entry with a newcost_per_hour. The ID is unchanged and every
tagged resource picks up the new rate from the next hour. Already-billed hours
keep the rate they were billed at.