Skip to main content
The CostGraph Operator is configured through Helm values.yaml. The defaults work for most clusters; this page covers the options you’re most likely to change.

Global settings

global.clusterName
string
required
Name used to identify this cluster in the CostGraph platform.
global.apiKey
string
API key for authenticating with CostGraph. Don’t commit a real key — prefer existingSecret in production.
global.existingSecret
string
Name of a pre-existing Secret holding the API key. When set, apiKey is ignored.
global.existingSecretKey
string
default:"apiKey"
Key within existingSecret that holds the API key value.
global.backendURL
string
default:"https://api.costgraph.ai"
Base URL of the CostGraph API.
global.namespace
string
default:"costgraph"
Namespace the operator runs in.

Resource exporter

operatorKubernetes watches cluster resources and exports them to CostGraph.
operatorKubernetes.enabled
boolean
default:"true"
Deploy the resource exporter.
operatorKubernetes.replicas
number
default:"1"
Keep at 1 — the exporter is not designed to run multiple replicas.
operatorKubernetes.resources
object
Resource requests and limits.
operatorKubernetes.nodeSelector / tolerations / affinity
object
Standard pod scheduling controls.
operatorKubernetes.env
array
Additional environment variables.

Metrics scraper

operatorPrometheus scrapes in-cluster metrics endpoints and remote-writes them to CostGraph.
operatorPrometheus.enabled
boolean
default:"true"
Deploy the metrics scraper.
operatorPrometheus.config.remoteWriteURL
string
default:"https://tsdb.costgraph.ai"
Remote-write endpoint for collected metrics.
operatorPrometheus.config.remoteWritePath
string
default:"/api/v1/write"
Remote-write path appended to the URL.
operatorPrometheus.config.prometheusAPIProvider
string
default:"prometheus"
Metrics API flavor. prometheus or victoriametrics.
operatorPrometheus.config.httpTimeout
string
default:"30s"
Timeout for scrape and backend requests.

Scrape targets

operatorPrometheus.scrapeTargets is a map of the in-cluster /metrics endpoints to scrape. The chart ships defaults for cAdvisor, kube-state-metrics, node-exporter, and the kubelet (DCGM is off). Add a source by appending an entry — no new operator image is required. Each entry accepts:
enabled
boolean
default:"true"
Include this target.
kind
string
default:"pod"
pod discovers and scrapes matching pods; node scrapes each node’s kubelet through the API-server proxy.
namespace
string
Pod targets only — namespace to discover pods in.
labelSelector
string
Label selector for pod (or node) discovery. Required for pod targets.
port
number
Pod targets only — port the exporter listens on.
path
string
default:"/metrics"
Metrics path to scrape.
nodeMetrics
boolean
default:"false"
Stamp costgraph_instance_hostname and costgraph_instance_id on node-scoped sources like cAdvisor and node-exporter.
metricNamePrefixes
array
Keep only metric families whose names match one of these prefixes. Empty keeps everything.

Bundled exporters

The chart pulls in the metrics sources as subcharts. Disable any you already run in the cluster.
kube-state-metrics.enabled
boolean
default:"true"
Kubernetes object-level metrics (pods, deployments, nodes).
cadvisor.enabled
boolean
default:"true"
Per-container resource usage. Uses the baselinehq/cadvisor image.
prometheus-node-exporter.enabled
boolean
default:"true"
Host-level metrics (CPU, memory, disk, network) on port 9100.
dcgm-exporter.enabled
boolean
default:"false"
NVIDIA GPU metrics. Enable only on clusters with GPU nodes; restrict it to GPU nodes with dcgm-exporter.nodeSelector and dcgm-exporter.tolerations.

Full values reference

global:
  clusterName: ""
  apiKey: ""
  existingSecret: ""
  existingSecretKey: ""
  backendURL: "https://api.costgraph.ai"
  namespace: "costgraph"

serviceAccount:
  create: true
  automount: true

kube-state-metrics:
  enabled: true

cadvisor:
  enabled: true
  image:
    registry: ghcr.io
    repository: baselinehq/cadvisor
    tag: "0.56.3-baseline"

prometheus-node-exporter:
  enabled: true
  service:
    port: 9100
    targetPort: 9100

dcgm-exporter:
  enabled: false
  nodeSelector:
    accelerator: nvidia
  tolerations: []

operatorKubernetes:
  enabled: true
  replicas: 1
  resources:
    requests:
      cpu: 10m
      memory: 64Mi
  nodeSelector: {}
  tolerations: []
  affinity: {}
  env: []

operatorPrometheus:
  enabled: true
  replicas: 1
  config:
    remoteWriteURL: "https://tsdb.costgraph.ai"
    remoteWritePath: "/api/v1/write"
    prometheusAPIProvider: "prometheus"
    httpTimeout: "30s"
  scrapeTargets:
    cadvisor:
      enabled: true
      labelSelector: "app.kubernetes.io/name=cadvisor"
      port: 8080
      nodeMetrics: true
    kube-state-metrics:
      enabled: true
      labelSelector: "app.kubernetes.io/name=kube-state-metrics"
      port: 8080
    node-exporter:
      enabled: true
      labelSelector: "app.kubernetes.io/name=prometheus-node-exporter"
      port: 9100
      nodeMetrics: true
    kubelet:
      enabled: true
      kind: node
      nodeMetrics: true
      metricNamePrefixes:
        - kubelet_
    dcgm-exporter:
      enabled: false
      labelSelector: "app.kubernetes.io/name=dcgm-exporter"
      port: 9400
      nodeMetrics: true
  resources:
    requests:
      cpu: 100m
      memory: 64Mi
  env: []