Skip to content

A locally hosted Kubernetes dashboard that simplifies resource allocation, pod diagnostics, and security monitoring. With AI-powered insights, fleet-wide heatmaps, historical and real-time data analysis, it empowers teams to optimize performance and scale effortlessly.

License

Notifications You must be signed in to change notification settings

oslabs-beta/BottleNetes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

bottlenetes logo

Bottlenetes

A user-friendly platform to monitor, identify bottlenecks, and interact with your Kubernetes clusters.

Uncorking Kubernetes Bottlenecks & Insights, One Pod at a Time


βœ¨πŸ› οΈβœ¨ Tech Stack βœ¨πŸ› οΈβœ¨

Written With πŸ› οΈ

JavaScript TypeScript HTML CSS

Frontend 🎨

React React Router Vite Tailwind CSS MUI Lucide Zustand

Backend πŸ–₯️

Node.js Express.js Axios CORS

Database πŸ›’οΈ

PostgreSQL Sequelize Supabase

DevOps & Infrastructure βš™οΈ

Kubernetes Docker AWS EKS Minikube

Monitoring πŸ“Š

Prometheus PromQL Chart.js

Auth & Security πŸ”’

JWT Passport GitHub OAuth Google OAuth bcrypt

Tools & CI/CD πŸ› οΈ

GitHub Actions Shell Script Vercel Trello TS-Node Nodemon ESLint

AI πŸ€–

OpenAI API


πŸ“š Table of Contents πŸ“š


πŸ“– About this Project πŸ“–

Bottlenetes is a productivity tool that helps you monitor, identify bottlenecks, and manage your Kubernetes clusters. It provides:

  • Realtime & Historical Monitoring: View the current and past status of pods and services on your cluster.

  • Intuitive Web UI: Restart pods, view logs, adjust replicas, and configure resource requests/limitsβ€”all from your browser!

  • Latency tracking: Integrated service mesh to track latency and help identify bottlenecks in your cluster.

Why Bottlenetes?

Managing Kubernetes can be time-consuming and often requires a suite of different tools. Bottlenetes consolidates these needs into a single UI, letting you manage cluster health, resources, logs, and performance data all under one roof. Say goodbye to the days of juggling multiple dashboards! ✨


πŸŽ₯ Demo πŸŽ₯


✨ Features ✨

  • Real-time Metrics ⏱️: Monitor the CPU and memory usage of each pod in real time.
  • K8s Resource Management πŸ€–: Debug, manage, scale, and remove workloads from a convenient UI.
  • Bottlenecks Identification ⚠️: Track latency and service mesh metrics to quickly detect inefficiencies.
  • Security & Permissions πŸ”’: Manage user access for your dashboard.
  • AI Integration πŸ€–: Enjoy automatic resource allocation recommendations powered by LLMs based on historical data.
  • And More 🌱: Our feature set grows continuously based on community feedback.

πŸš€ Getting Started πŸš€

πŸ“¦ Prerequisites πŸ“¦

  1. Docker Desktop
  1. Node.js
  1. Homebrew (for macOS)

πŸ› οΈ Project Setup πŸ› οΈ

  1. Clone this repository In your terminal, run:
git clone https://github.com/oslabs-beta/BottleNetes.git
cd bottlenetes
  1. Create .env.production in the root directory
# Example fields (please update with your real values for each one)
OPENAI_API_KEY=sk-proj-123456789-...
SUPABASE_URI=postgresql://postgres.abcdefg:[email protected]:6543/postgres
SUPABASE_PASSWORD=123456789
SUPABASE_ANON_KEY=abcdefg.abcedfg.abcdefg123456789

SECRET_SESSION_KEY=abcdefg123456789

NODE_ENV=production

GITHUB_CLIENT_ID=abcdefg123456789
GITHUB_CLIENT_SECRET=abcdefg123456789
GITHUB_REDIRECT_URI=http://localhost:3000/oauth/github/callback

GOOGLE_CLIENT_ID=abcdefg123456789.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=abcdefg123456789
GOOGLE_REDIRECT_URI=http://localhost:3000/oauth/google/callback

FRONTEND_URL=http://localhost:4173/
  1. Run the Quickstart script

A quickstart script is provided for your convenience, automating much of the setup process (you can also follow the manual setup instructions here).

  • Make the quickstart script executable by running in your terminal:
chmod +x QUICKSTART.sh
  • Execute the script by running:
./QUICKSTART.sh

If you are running this script for the first time, select "n" when prompted about skipping dependency installations, so everything is installed correctly.

Towards the end, you’ll be asked if you want to generate fake traffic to test latency for the demo app. Choose "y" if you want traffic logs, or "n" to skip.

  1. Access Bottlenetes

Once the script finishes, it will:

  • Install needed dependencies.
  • Spin up a local Kubernetes cluster.
  • Deploy a demo application.
  • Launch your default browser to open both the demo app and the Bottlenetes UI.

If your browser doesn’t open automatically, navigate to http://localhost:4173/ to begin using Bottlenetes!

🌐 Environment Variables 🌐

A quick overview of the fields in your .env.production file:

  • OPENAI_API_KEY For GPT-based services, if you leverage AI integrations.

  • SUPABASE_URI A PostgreSQL connection string provided by Supabase.

  • SUPABASE_PASSWORD The database password for your Supabase PostgreSQL instance.

  • SUPABASE_ANON_KEY The anon/public key from Supabase for client-side APIs.

  • SECRET_SESSION_KEY A secret key used to secure session data, cookies, tokens, etc.

  • NODE_ENV Typically set to "production" for a deployed environment.

  • GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET OAuth credentials for GitHub login and callbacks.

  • GITHUB_REDIRECT_URI URL to redirect to after successful GitHub authentication.

  • GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET OAuth credentials for Google login.

  • GOOGLE_REDIRECT_URI URL to redirect to after successful Google authentication.

  • FRONTEND_URL The URL hosting your frontend, e.g., http://localhost:4173/.

πŸ› οΈManual SetupπŸ› οΈ

If you prefer a manual setup or want to customize each step, please follow:

  • this page for the initial manual setup.
  • and this page for installing service mesh for latency tracking.

☁️ AWS Integration ☁️

If you want to make Bottlenetes work with your AWS EKS cluster, please follow the instructions in this page.

🌟 Roadmap Ahead 🌟

We’re continuously evolving Bottlenetes. Some upcoming items on our to-do list include:

  • AI-Driven Auto-scaling πŸ€–: Leverage historical resource usage to scale clusters automatically.
  • AI Agent Automation πŸ€–: AI agent to implement customized recommendations for resource allocation.
  • Deeper EKS & Istio Integration ☁️: Enhance multi-cloud and service mesh functionalities.
  • Ephemeral Pods πŸ› οΈ: Create and inspect ephemeral pods on-the-fly for enhanced debugging.
  • UI/UX Refresh 🎨: Redesign dashboards for better clarity and aesthetics.

πŸ“ Contribution Guidelines πŸ“

We ❀️ contributions from the community! Here’s how to get involved:

  1. Fork the Repo Click the "Fork" button at the top-right corner of this page.

  2. Create a Feature Branch

    git checkout -b feature/yourNewFeatureName
    
  3. Implement Your Feature Add your code, tests, or documentation.

  4. Commit Your Changes

    git commit -m "Added [your-new-feature-description]"
  5. Push to Your Branch

    git push origin feature/yourNewFeatureName
  6. Create a Pull Request Open a PR to the dev branch (unless otherwise specified). Our team will review and, once approved, merge it in!

🌱 Contributors 🌱

A huge πŸŽ‰ thank you πŸŽ‰ to all our contributors β€” past, present, and future! 🌻

πŸ“„ License πŸ“„

Distributed under the MIT License. Please see LICENSE for more information.

If you enjoy Bottlenetes, please drop us a ⭐ on GitHub, share with your dev circle, and help our community grow! πŸ™Œ

🀝 Connect with Us 🀝

LinkedIn

ProductHunt

About

A locally hosted Kubernetes dashboard that simplifies resource allocation, pod diagnostics, and security monitoring. With AI-powered insights, fleet-wide heatmaps, historical and real-time data analysis, it empowers teams to optimize performance and scale effortlessly.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published