Skip to content

Latest commit

 

History

History
321 lines (217 loc) · 13.2 KB

README.md

File metadata and controls

321 lines (217 loc) · 13.2 KB
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 ZSH Vercel Trello TS-Node Nodemon ESLint

AI 🤖

OpenAI


📚 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 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.

  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!

Note: We Recommended NOT using Safari for BottleNetes as secure cookies will NOT be created on HTTP by default

🌐 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. 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/.

🛠️Manual Setup🛠️

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

☁️ AWS Integration ☁️

If you want to make Bottlenetes work with your AWS EKS cluster, please follow the instructions in aws-integration-instruction.md.

🌟 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 Product Hunt