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 updateCreate 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>"| Parameter | Description |
|---|---|
cluster_name | Unique name for this cluster. Used to identify the cluster in multi-cluster setups. |
dashboardHostName | External 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
EOFhelm upgrade -i kubesense kubesense/kubesense --create-namespace -n kubesense -f custom-values.yamlDeploying 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.
| Parameter | Description |
|---|---|
kubecolIps | IP(s) of the KubeSense Server's kubecol endpoint. Accepts comma-separated list for HA setups. |
vmAgentIp | IP of the VictoriaMetrics agent that collects infrastructure metrics (CPU, memory, etc.). |
kubeAggregatorIp | IP 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
EOFhelm upgrade -i kubesensor kubesense/kubesensor --create-namespace -n kubesense -f custom-values.yaml