Data Connections

Connecting a Kubernetes cluster

Deploy the DigiUsher Kubernetes agent with Helm and connect cluster metrics to DigiUsher.

Overview

Connecting a cluster brings your Kubernetes spend into DigiUsher alongside your cloud bills. You get cost broken down by namespace, workload, and team, a clear view of the capacity you're paying for but not using, and rightsizing signals for over-provisioned workloads.

To collect this, you install a lightweight agent in your cluster with Helm. Connecting takes a few minutes: create a Kubernetes data source in DigiUsher to get an install token, then run two Helm commands. From there the agent streams metrics on its own and your cluster costs start showing up in DigiUsher.

What gets installed

The digiusher-k8s-agent chart installs two small workloads and nothing else — no kube-state-metrics, and no in-cluster time-series database to run, scale, or pay for.

ComponentTypeWhat it does
agentStatefulSet (1 pod)Receives metrics from vmagent, watches the Kubernetes API to build object metadata in-process, writes the data to a persistent volume, and uploads it to DigiUsher.
vmagentDeployment (1 pod)Scrapes each node's kubelet (cAdvisor and /metrics endpoints), plus optional GPU and node exporters when present, and forwards the metrics to the agent.

Both workloads run as a non-root user with a read-only root filesystem, drop all Linux capabilities, and cannot escalate privileges — so the agent is safe to run in locked-down and regulated clusters.

Prerequisites

RequirementDetails
HelmHelm must be installed locally. See the Helm documentation if you need to install it.
Kubernetes accessUse a kubeconfig context with permission to create namespaces, workloads, services, service accounts, config maps, secrets, and persistent volume claims, plus the cluster-scoped ClusterRole and ClusterRoleBinding the agent uses to read object metadata.
DigiUsher accessYou need permission to create a Kubernetes data source in DigiUsher.
Outbound accessThe agent must be able to reach https://app.digiusher.com/api/v3.
StorageThe agent creates a 20Gi persistent volume claim and vmagent creates a 30Gi claim by default. Both sizes are configurable.

Keep the default namespace

Install the chart in the digiusher-k8s namespace unless DigiUsher support instructs you to customize the chart. The agent's default configuration references services in this namespace.

Connect your cluster

Connecting has two halves: you create the data source in DigiUsher, which hands you a ready-to-run Helm command, then you run that command in your cluster.

Create the Kubernetes data source

  1. Open the DigiUsher app.
  2. Go to Connectors, grouped under System.
  3. Click Add Source.
  4. Select Kubernetes and click continue.
  5. Enter a Display Name for the cluster — this is how the cluster appears throughout DigiUsher, so use something you'll recognize (for example, prod-eks-us-east).
  6. Continue to the confirmation step and click Save Data Source.

When you save, DigiUsher shows the full helm repo add and helm install commands with your token already filled in. Copy them and run them in your cluster — the steps below are the same commands, with a bit of context.

You can come back to this anytime

These commands stay available on the connector's page in DigiUsher, so you don't need to keep a copy outside the cluster.

Add the DigiUsher Helm repository

helm repo add digiusher https://digiusher.github.io/helm-charts
helm repo update

Confirm the chart is available:

helm search repo digiusher

Install the agent

Replace <insert_api_token> with your token.

helm install digiusher-k8s-agent digiusher/digiusher-k8s-agent \
  --set agent.env.digiusher_k8s_api_token=<insert_api_token> \
  --namespace digiusher-k8s \
  --create-namespace

Helm stores the token in a Kubernetes secret named digiusher-k8s-agent-api-token (key K8S_API_TOKEN). If you'd rather not pass it on the command line, put it in a values file and install with -f values.yaml.

Confirm it's running

Check that the release deployed and both workloads are healthy:

helm status digiusher-k8s-agent --namespace digiusher-k8s
kubectl get pods --namespace digiusher-k8s

You should see the agent and vmagent pods reach Running. Once they do, the agent begins uploading on its own — your cluster's costs appear in DigiUsher after the first upload and processing cycle completes, with no further action needed.

What you can configure

The defaults are tuned to run on clusters of any size, so most teams install the chart exactly as shown above. These are the settings worth knowing about:

  • Match your chargeback tags. The agent collects the team, cost-center, and owner pod annotations so DigiUsher can attribute cost by those. If your org tags workloads with different keys, set agent.informers.annotationKeys to your own comma-separated list.
  • GPU and node-level metrics come for free. If your cluster runs an NVIDIA dcgm-exporter or a node-exporter, the agent discovers and scrapes them automatically — adding GPU cost and node-consolidation analysis with nothing to configure. Set vmagent.dcgm.enabled or vmagent.nodeExporter.enabled to false to opt out.
  • Locked-down clusters. If you can't create cluster-scoped roles, have an administrator pre-create the agent's ClusterRole and ClusterRoleBinding and install with --set agent.rbac.create=false.
  • Large or high-cardinality clusters. The defaults carry clusters well into the thousands of nodes. If you do hit memory pressure as you scale, vmagent is the lever — see the sizing notes below.

For anything beyond a flag or two, put your overrides in a values file and install or upgrade with -f values.yaml.

What DigiUsher collects

The agent collects only what DigiUsher needs to allocate and rightsize cost — Kubernetes object metadata and resource usage. The agent builds object metadata in-process from the Kubernetes API, while vmagent scrapes usage metrics from each node.

SourceExamples of collected data
Agent (Kubernetes API)Namespaces, nodes, pods, deployments, daemonsets, replica sets, statefulsets, jobs, cronjobs, services, endpoints, persistent volumes, persistent volume claims, storage classes, resource quotas, horizontal pod autoscalers, and pod disruption budgets — plus the pod annotations configured for cost allocation
cAdvisor (via vmagent)Container CPU usage, memory usage, network receive bytes, and network transmit bytes
kubelet (via vmagent)Persistent volume used, capacity, and available bytes
dcgm-exporter (optional)GPU utilization metrics, when an NVIDIA dcgm-exporter is present
node-exporter (optional)Node CPU, memory, filesystem, disk, and network metrics for node-consolidation analysis, when a node-exporter is present

The optional exporters are enabled by default and have no effect on clusters where they aren't installed — vmagent simply finds no targets to scrape.

Upgrade the agent

Refresh the Helm repository and upgrade the release:

helm repo update
helm upgrade digiusher-k8s-agent digiusher/digiusher-k8s-agent \
  --set agent.env.digiusher_k8s_api_token=<insert_api_token> \
  --namespace digiusher-k8s

If you installed with a custom values file, include the same file on upgrade:

helm upgrade digiusher-k8s-agent digiusher/digiusher-k8s-agent \
  -f values.yaml \
  --namespace digiusher-k8s

Uninstall the agent

To remove the DigiUsher Kubernetes agent from the cluster:

helm uninstall digiusher-k8s-agent --namespace digiusher-k8s

If you no longer need the namespace and any remaining resources in it, remove the namespace separately:

kubectl delete namespace digiusher-k8s

Deleting the namespace removes all resources inside it

Only delete the digiusher-k8s namespace if it is dedicated to the DigiUsher agent.

Troubleshooting

IssueWhat to Check
Helm cannot find the chartRun helm repo add digiusher https://digiusher.github.io/helm-charts and helm repo update, then retry helm search repo digiusher.
Pods are not startingRun kubectl describe pod <pod-name> --namespace digiusher-k8s and check image pull, scheduling, persistent volume, and resource errors.
Token secret is missingConfirm the install command included --set agent.env.digiusher_k8s_api_token=<insert_api_token>.
Agent cannot send dataConfirm cluster egress allows https://app.digiusher.com/api/v3.
No Kubernetes data appears in DigiUsherConfirm both pods in digiusher-k8s are running, then wait for the first upload and processing cycle to complete.

Please contact the DigiUsher Support Team at support@digiusher.com if you have any questions or face any issues.