KubeBolt docs
GitHub

Connecting Clusters

Three ways to connect a cluster — kubeconfig, the KubeBolt agent, or metrics-only. The Add cluster wizard generates the exact helm command for you.

KubeBolt supports three connection types, and you can mix them freely across your fleet. The Add cluster button on the Clusters page (Connect cluster on Fleet) offers two paths: Import kubeconfig, for a cluster whose API server this backend can reach, and Install agent, a wizard that prints the final helm command with everything you selected.

Connection types

TypeHow it worksWhat you get
KubeconfigKubeBolt reads a context from the kubeconfig it was started with, or one you upload, and talks to the API server directly (in-cluster installs use their own ServiceAccount)Live resources, actions (terminal, port-forward, scale, edit…), insights, Metrics Server data. Zero install in the cluster.
AgentA lightweight agent runs in the cluster and connects outbound to KubeBolt over gRPC; with rbac.mode=reader or operator the backend reaches the API server through the agent’s tunnelLive inventory, YAML, logs and insights even when the API server isn’t reachable from KubeBolt, plus historical metrics, network flows (Hubble) and optional cost data. Actions (exec, port-forward, scale, delete, edit) need operator mode.
Metrics-onlyThe agent runs with rbac.mode=metrics: it ships metrics but carries no API proxyDashboards and history for clusters you only want telemetry from; no resource inventory through this agent

Connected clusters are stored in a persistent registry — they survive restarts, and any cluster can be renamed from the UI (admin only).

Installing the agent

The agent installs from the OCI Helm registry. For a remote cluster dialing a self-hosted backend with an ingest token:

kubectl create namespace kubebolt-system
kubectl -n kubebolt-system create secret generic kubebolt-agent-token \
  --from-literal=token=<token-from-the-wizard>

helm install kubebolt-agent \
  oci://ghcr.io/clm-cloud-solutions/kubebolt/helm/kubebolt-agent \
  --namespace kubebolt-system \
  --set backendUrl=<kubebolt-agent-host>:443 --set tls.enabled=true \
  --set auth.mode=ingest-token \
  --set auth.ingestToken.existingSecret=kubebolt-agent-token \
  --set cluster.name=<cluster-name> \
  --set rbac.mode=reader

The chart never sees the token in plain text: it reads it from the Secret you create. Tokens are issued in Administration → Agents & Ingest → Agent Tokens, or by the wizard itself. backendUrl is wherever your backend’s agent gRPC port is reachable from the cluster — see Remote clusters for exposing it. For an agent in the same cluster as the backend, the in-cluster Service (kubebolt-agent-ingest.kubebolt.svc.cluster.local:9090, no TLS) is enough. On KubeBolt Cloud, the Cloud’s Add cluster wizard fills in its own ingest endpoint.

Use the wizard-generated command instead of writing this by hand — it references the Secret with your ingest token, sets the cluster name, and carries every option you toggled (RBAC mode, metrics source, Hubble, OpenCost, TLS).

Use the Helm chart. The raw manifests checked in under deploy/agent/ pin the legacy agent 0.2.2 and are kept only for reference; if you need plain manifests (air-gapped, GitOps), render them from the chart with helm template.

RBAC mode

--set rbac.mode= picks the agent ServiceAccount’s permission tier. Three values, from narrowest to widest:

ModeScopeWhat it enables
metricskubelet stats + pods list/watch + namespaces getMetrics and Hubble flows only; no apiserver call traverses the tunnel. Implies proxy.enabled=false.
reader (default)cluster-wide get/list/watch on */*Full read-only dashboard through the agent’s tunnel; write verbs return 403. Implies proxy.enabled=true.
operatorread + write on */*Exec, scale, restart, delete and YAML edit through the dashboard. Requires auth.mode other than disabled and implies proxy.enabled=true.

Metrics sources

The wizard’s metrics-source choice maps to these chart values:

scrape.enabled and agent.promRead.enabled are mutually exclusive — one agent has one canonical source of samples. The chart fails at helm template if both are on.

Advanced options surfaced by the wizard: mTLS (CA + client Secrets), ServiceAccount annotations (IRSA / Workload Identity), tolerations, GOMEMLIMIT override, and free-form extraEnv.

Cost data (optional)

To light up the Cost tab, give the agent OpenCost data using any of the three modes described in the cost documentation — including a bundled OpenCost sub-chart (opencost.enabled=true) if you don’t already run it. The bundled OpenCost needs a Prometheus to read from; the wizard asks for its URL.

Upgrading

The agent versions independently from the backend (its own 1.x line; chart 1.4.x pairs with backend 1.10 and later, including 2.x). Upgrade with helm upgrade — avoid --reuse-values so new chart defaults apply. Which agent pairs with which backend is in Compatibility.

Next

With clusters connected, the rest of the docs describe what you can do with them: the dashboard, the insights engine, and Kobi. If a cluster refuses to connect, start at Troubleshooting.