Kubesense

Install using Helm

Deploy KubeSense using Helm for full control over configuration. KubeSense has two component groups — server (data processing, storage, UI) and sensor (eBPF data collection). You can deploy them together or separately. See Deployment Context for details.

Add Helm Repo

helm repo add kubesense https://helm.kubesense.ai
helm repo update

Create Access Token

helm upgrade -i access-token -n kubesense kubesense/access-token --set KEY_ID="<KEY>" --set KEY_SECRET="<SECRET>"

In-Cluster Deployment

Deploy both server and sensor in the same cluster:

helm upgrade -i kubesense kubesense/kubesense \
    --create-namespace \
    -n kubesense \
    --set global.cluster_name="k8s-cluster" \
    --set global.dashboardHostName="<INGRESS_HOSTNAME_FOR_UI>"
ParameterDescription
cluster_nameUnique name for this cluster. Used to identify the cluster in multi-cluster setups.
dashboardHostNameExternal hostname or Ingress DNS for the KubeSense UI.

Custom Values File

For complex deployments, use a custom-values.yaml instead of --set flags:

Example custom-values.yaml
cat << EOF > custom-values.yaml
global:
  cluster_name: k8s-cluster # cluster_name of your choice
  dashboardHostName: kubesense.example.com
  redis:
    password: custom_redis_password # {optional} if not specified will autogenerate
  clickhouse:
    password: custom_clickhouse_password # {optional} if not specified will autogenerate
  mysql:
    password: custom_mysql_password # {optional} if not specified will autogenerate
EOF
helm upgrade -i kubesense kubesense/kubesense --create-namespace -n kubesense -f custom-values.yaml

Deploying Server & Sensor Separately

Deploy Server

helm upgrade -i kubesense kubesense/kubesense-server \
    --create-namespace \
    -n kubesense \
    --set global.cluster_name="k8s-cluster" \
    --set global.dashboardHostName="kubesense.example.com"

Deploy Sensor

When deploying the sensor in a separate cluster from the server, configure the server endpoint IPs so the sensor can forward data.

Networking: See Networking & Firewall for required ports and firewall rules.

ParameterDescription
kubecolIpsIP(s) of the KubeSense Server's kubecol endpoint. Accepts comma-separated list for HA setups.
vmAgentIpIP of the VictoriaMetrics agent that collects infrastructure metrics (CPU, memory, etc.).
kubeAggregatorIpIP of the KubeSense Aggregator that processes logs and events from sensors.
helm upgrade -i kubesensor kubesense/kubesensor \
    --create-namespace \
    -n kubesense \
    --set global.cluster_name="k8s-cluster" \
    --set global.dashboardHostName="kubesense.example.com" \
    --set global.kubecolIps="{192.168.1.100}" \
    --set global.vmAgentIp="192.168.1.200" \
    --set global.kubeAggregatorIp="192.168.1.150"
Example sensor custom-values.yaml
cat << EOF > custom-values.yaml
global:
  cluster_name: k8s-cluster # cluster_name of your choice
  dashboardHostName: kubesense.example.com
  kubecolIps:
  - 10.0.0.1
  kubeAggregatorIp: <KUBEAGGREGATOR_IP> # eg. kubesense-kubeAggregator
  vmAgentIp: <VMAGENT_IP> # eg. kubesense-victoria-metrics-agent
  vmAgentHttpPort: 30060
  nodePort:
    kubecolCollector: 32133
    kubecolGrpc: 32033
    kubeAggregatorGrpcPort: 30051
    kubeAggregatorLogPort: 30052
EOF
helm upgrade -i kubesensor kubesense/kubesensor --create-namespace -n kubesense -f custom-values.yaml