A modern Kubernetes monitoring solution with an intelligent agent that collects cluster data and a beautiful React dashboard for real-time visualization.
- Smart Discovery: Automatically discovers all namespaces and resources
- Resource Monitoring: Tracks pods, deployments, and services in real-time
- Performance Metrics: Collects CPU and memory usage data
- gRPC Communication: Fast, efficient data transmission to dashboard
- Kubernetes Native: Runs as a pod with proper RBAC permissions
- Real-time Updates: Live data refresh every 30 seconds
- Cluster Overview: High-level statistics and resource counts
- Namespace Explorer: Interactive drill-down into namespaces and resources
- Performance Charts: Beautiful, interactive charts for metrics visualization
- Modern UI: Dark theme with Material-UI components
- Responsive Design: Works perfectly on desktop and mobile
βββββββββββββββββββ gRPC βββββββββββββββββββ HTTP βββββββββββββββββββ
β Kubernetes β βββββββββββΊ β KubeFleet β βββββββββββΊ β React β
β Agent β β Dashboard β β Frontend β
β β β Server β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Go (>=1.24)
- Node.js (>=18)
- protoc (Protocol Buffers compiler)
- Docker (for container builds)
- Kubernetes cluster (for deployment)
- metrics-server (for real-time CPU/memory metrics)
Note: The Kubernetes metrics-server must be installed and running in your cluster for KubeFleet to collect real-time CPU and memory metrics. If you are running a local cluster (Docker Desktop, Minikube, Kind), you may need to patch metrics-server to use
--kubelet-insecure-tls
.
-
Clone and setup:
git clone https://github.com/thekubefleet/kubefleet.git cd kubefleet go mod tidy
-
Generate protobuf code:
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative proto/agent.proto
-
Start the dashboard server:
go run ./cmd/server
-
Start the React development server:
cd dashboard npm start
-
Run the agent (in another terminal):
go run ./cmd/agent
-
Access the dashboard: http://localhost:3000
# Build containers
docker build -t kubefleet-agent:latest .
docker build -f Dockerfile.dashboard -t kubefleet-dashboard:latest .
# Deploy to Kubernetes
kubectl apply -f deploy/dashboard-deployment.yaml
kubectl apply -f deploy/agent-deployment.yaml
# Access the dashboard
kubectl port-forward svc/kubefleet-dashboard 3000:3000
kubefleet/
βββ cmd/
β βββ agent/ # Agent entrypoint
β βββ server/ # Dashboard server entrypoint
βββ internal/
β βββ k8s/ # Kubernetes API logic
β βββ metrics/ # Metrics collection
β βββ grpcclient/ # gRPC client logic
β βββ server/ # Dashboard server logic
βββ dashboard/ # React frontend
β βββ src/
β β βββ components/ # React components
β β βββ App.tsx # Main app
β βββ package.json
βββ proto/ # Protobuf definitions
βββ deploy/ # Kubernetes manifests
βββ .github/ # GitHub templates and workflows
βββ docs/ # Documentation
Agent:
KUBEFLEET_SERVER_ADDR
: gRPC server address (default: localhost:50051)
Dashboard Server:
HTTP_PORT
: HTTP server port (default: 3000)GRPC_PORT
: gRPC server port (default: 50051)
The agent requires the following permissions:
- Read access to namespaces, pods, services, and deployments
- Read access to metrics API (if available)
GET /api/data
- Get all historical dataGET /api/data/latest
- Get the latest data pointGET /api/health
- Health check endpoint
The agent sends data using the AgentReporter
service:
service AgentReporter {
rpc ReportData(AgentData) returns (ReportResponse);
}
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
- Go: Follow Effective Go
- React: Use TypeScript, functional components, and Material-UI
- Commits: Use conventional commit format
- Enhanced Metrics: Kubernetes Metrics API integration
- Prometheus Support: Direct Prometheus metrics collection
- Alerting: Built-in alerting capabilities
- Authentication: User authentication and authorization
- Multi-cluster: Support for multiple Kubernetes clusters
- Helm Chart: Official Helm chart for easy deployment
- Performance: Resource usage trends and predictions
- Custom Dashboards: User-configurable dashboard layouts
-
Agent can't connect to dashboard:
- Check the
KUBEFLEET_SERVER_ADDR
environment variable - Verify the dashboard service is running
- Check the
-
Dashboard shows no data:
- Check if the agent is running and sending data
- Verify the gRPC connection is working
- Check the dashboard server logs
-
React app not loading:
- Ensure the React development server is running on port 3001
- Check browser console for errors
- Ensure metrics-server is installed in your cluster:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
- For local clusters (Docker Desktop, Minikube, Kind), patch metrics-server to skip TLS verification:
kubectl -n kube-system patch deployment metrics-server \ --type='json' \ -p='[{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--kubelet-insecure-tls"}]' kubectl -n kube-system rollout restart deployment metrics-server
- Verify metrics-server is working:
kubectl top nodes kubectl top pods -A
This project is licensed under the MIT License - see the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Security: Security Policy
- Kubernetes client-go for Kubernetes API integration
- Material-UI for the beautiful React components
- Recharts for data visualization
- gRPC for efficient communication
Made with β€οΈ by the KubeFleet community