A user-friendly platform to monitor, identify bottlenecks, and interact with your Kubernetes clusters.
Uncorking Kubernetes Bottlenecks & Insights, One Pod at a Time
- 📖 About this Project
- 🎥 Demo
- ✨ Features
- 🚀 Getting Started
- 📦 Prerequisites
- ⚙️ Project Setup
- 🌐 Environment Variables
- 🛠️ Manual Setup
- ☁️ AWS Integration
- 🌟 Roadmap Ahead
- 📝 Contribution Guidelines
- 🎉 Contributors
- 📄 License
- 🤝 Connect with Us
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! ✨
- 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.
- Docker Desktop
- Download Docker Desktop and install.
- Ensure it’s running in the background.
- Node.js
- Install the latest LTS version of Node.js.
- Homebrew (for macOS)
- Install Homebrew
- Clone this repository In your terminal, run:
git clone https://github.com/oslabs-beta/BottleNetes.git
cd bottlenetes
- 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/
- 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 it 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.
- 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!
Note: We Recommended NOT using Safari for BottleNetes as secure cookies will NOT be created on HTTP by default
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. This can be a string of your own choice.
- 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/.
If you prefer a manual setup or want to customize each step, please follow:
- setup-instruction.md for the initial manual setup.
- and latency-prerequisite.md for installing service mesh for latency tracking.
If you want to make Bottlenetes work with your AWS EKS cluster, please follow the instructions in aws-integration-instruction.md.
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.
We ❤️ contributions from the community! Here’s how to get involved:
-
Fork the Repo Click the "Fork" button at the top-right corner of this page.
-
Create a Feature Branch
git checkout -b feature/yourNewFeatureName
-
Implement Your Feature Add your code, tests, or documentation.
-
Commit Your Changes
git commit -m "Added [your-new-feature-description]"
-
Push to Your Branch
git push origin feature/yourNewFeatureName
-
Create a Pull Request Open a PR to the dev branch (unless otherwise specified). Our team will review and, once approved, merge it in!
- Funan Wang: GitHub | LinkedIn
- Julie Hoagland-Sorensen: GitHub | LinkedIn
- Mark (Kiet) Nghiem: GitHub | LinkedIn
- Quin Kirsten: GitHub | LinkedIn
- Zoe Xu: GitHub | LinkedIn
A huge 🎉 thank you 🎉 to all our contributors — past, present, and future! 🌻
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! 🙌