Documentation

Getting Started with KubePulse

Deploy KubePulse to your Kubernetes cluster and get your first dashboard in 5 minutes.

5 min read
Beginner friendly

Quick Start

Get KubePulse running in your cluster with a single Helm command.

First dashboard in 5 minutes

Install KubePulse, wait for discovery, and access your fleet dashboard.

bash
# Add the KubePulse Helm repository
helm repo add kubepulse https://charts.kubepulse.com
helm repo update

# Install KubePulse
helm install kubepulse kubepulse/kubepulse \
  --namespace kubepulse \
  --create-namespace

# Wait for pods to be ready
kubectl wait --for=condition=ready pod -l app=kubepulse -n kubepulse --timeout=300s

# Access the dashboard
kubectl port-forward svc/kubepulse-frontend 8080:80 -n kubepulse

Prerequisites

Ensure you have the following before installing KubePulse.

Kubernetes cluster
1.24+
Helm
3.8+
kubectl
1.24+
Cluster admin access
Required

Installation

Detailed installation instructions with custom configuration options.

1. Add Helm Repository

bash
helm repo add kubepulse https://charts.kubepulse.com
helm repo update

2. Create values.yaml

yaml
# values.yaml
global:
  domain: kubepulse.internal.example.com

db:
  persistence:
    size: 100Gi
  resources:
    requests:
      memory: 4Gi
      cpu: 2

collector:
  modules:
    - kubernetes
    - prometheus
    - cost
    - hpa
    - capacity
  
ai:
  enabled: true
  provider: anthropic
  # Set ANTHROPIC_API_KEY in secrets

ingress:
  enabled: true
  className: nginx
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod

3. Install with Custom Values

bash
helm install kubepulse kubepulse/kubepulse \
  --namespace kubepulse \
  --create-namespace \
  -f values.yaml

Architecture Overview

KubePulse consists of several components that work together to provide fleet intelligence.

Frontend

React dashboard

API Server

Go REST API

DB

Analytics DB

Collector

Data ingestion

Data Retention

Default 90 days. Configurable per table type (metrics, events, costs).

High Availability

DB cluster mode available for Enterprise deployments.

Collector Modules

KubePulse supports 15 collector modules. Enable the ones you need in your values.yaml.

ModuleDescriptionDefault
kubernetesCore K8s resources, events, and metrics
prometheusPrometheus metrics ingestion
costCloud provider cost data (GCP, AWS, Azure)
datadogDatadog metrics and eventsOptional
cloudwatchAWS CloudWatch metricsOptional
stackdriverGCP Stackdriver metricsOptional
nodeNode-level resource metrics
hpaHPA configuration and history
pdbPodDisruptionBudget analysis
networkNetwork policy and traffic analysisOptional
rbacRBAC configuration collectionOptional
auditKubernetes audit log collectionOptional
spotSpot instance recommendations
capacityCapacity and headroom analysis
driftConfiguration drift detection

API Reference

KubePulse exposes a REST API for programmatic access to all data.

GET/_cache/clustersList all discovered clusters
GET/_cache/clusters/:idGet cluster details
GET/_cache/costs/summaryGet cost summary
GET/_cache/costs/breakdownGet cost breakdown by dimension
GET/_cache/recommendationsList optimization recommendations
POST/_cache/recommendations/:id/applyApply a recommendation
GET/_cache/healthFleet health metrics
GET/_cache/capacityCapacity forecast data

Example Request

bash
curl -X GET "http://localhost:8080/_cache/clusters" \
  -H "Authorization: Bearer $KUBEPULSE_TOKEN" \
  -H "Content-Type: application/json"

# Response
{
  "clusters": [
    {
      "id": "prod-us-east-1",
      "name": "prod-us-east-1",
      "provider": "gke",
      "region": "us-east1",
      "nodes": 48,
      "pods": 1247,
      "health_score": 94,
      "monthly_cost": 12450.00
    }
  ],
  "total": 4
}

Configuration Reference

Complete Helm chart values reference.

yaml
# Full configuration reference
global:
  domain: ""                    # Base domain for ingress
  imageTag: "latest"            # Container image tag
  imagePullPolicy: IfNotPresent

frontend:
  replicas: 2
  resources:
    requests:
      memory: 256Mi
      cpu: 100m
    limits:
      memory: 512Mi
      cpu: 500m

api:
  replicas: 3
  resources:
    requests:
      memory: 512Mi
      cpu: 250m
  
db:
  persistence:
    enabled: true
    size: 100Gi
    storageClass: ""            # Use default if empty
  retention:
    metrics: 90d
    events: 30d
    costs: 365d

collector:
  schedule: "*/5 * * * *"       # Run every 5 minutes
  modules: []                   # List of enabled modules

ai:
  enabled: false
  provider: anthropic           # anthropic | openai
  model: claude-3-sonnet        # Model to use
  
secrets:
  anthropicApiKey: ""           # Or use external secret
  
ingress:
  enabled: false
  className: ""
  annotations: {}
  tls: []

Ready to optimize your fleet?

Join our community or get Enterprise support for production deployments.