Kind Cluster Setup is a powerful, user-friendly platform for creating, managing, and deploying applications to Kubernetes clusters using Kind (Kubernetes in Docker). It features a modern React-based web interface, comprehensive template system, and robust backend API for seamless cluster and application management.
- ποΈ Web-Based Management: Modern React/Next.js interface for intuitive cluster and application management
- π§ Cluster Lifecycle Management: Create, configure, and manage multiple Kind clusters with custom resource limits
- π¦ Application Templates: Extensible template system for deploying popular applications (Airflow, MySQL, etc.)
- π One-Click Deployments: Deploy complex applications with pre-configured templates
- π Real-Time Monitoring: Live status updates, resource monitoring, and application health checks
- ποΈ Storage Management: Comprehensive storage resource management - monitor persistent volumes, storage classes, and volume claims across all clusters
- βοΈ Settings Management: Full application configuration system with user preferences, security settings, notifications, and cluster defaults
- π Port Forwarding: Built-in port forwarding for easy access to deployed applications
- π Multi-Environment Support: Support for dev, test, staging, and production environments
- π Flexible Deployment: Support for both Helm charts and raw Kubernetes manifests
- π‘οΈ Resource Management: CPU and memory limits, automatic cleanup, and resource optimization
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend β β Backend API β β Kubernetes β
β (Next.js) βββββΊβ (FastAPI) βββββΊβ (Kind) β
β β β β β β
β β’ Cluster UI β β β’ Cluster Mgmt β β β’ Kind Clusters β
β β’ App Mgmt β β β’ App Deploy β β β’ Applications β
β β’ Monitoring β β β’ Templates β β β’ Resources β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Python 3.8+ - Backend API server (3.7 reached end-of-life)
- Node.js 18+ - Frontend development and build
- Docker - Required for Kind clusters
- Kind - Kubernetes in Docker
- kubectl - Kubernetes command-line tool
- Helm (optional) - For Helm-based deployments
git clone https://github.com/meatulvimal/kind-cluster-setup.git
cd kind-cluster-setup# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -e .
# Copy environment configuration
cp .env.example .env
# Start the backend server
python -m kind_cluster_setup.api.server# Navigate to frontend directory
cd kind-setup-frontend
# Install dependencies
npm install
# Copy environment configuration
cp .env.local.example .env.local
# Start the development server
npm run dev- Frontend: http://localhost:3000
- Backend API: http://localhost:8020
- API Documentation: http://localhost:8020/docs
- Open the Web Interface: Navigate to http://localhost:3000
- Create Cluster: Click "Create Cluster" and configure your cluster settings
- Deploy Applications: Use the "Deploy App" section to deploy from templates
- Manage Applications: Monitor and manage your deployments in "Manage Apps"
- Manage Storage: Monitor storage resources, persistent volumes, and storage classes at
/manage-storage - Configure Settings: Customize application preferences, security settings, and notifications at
/settings
- Dashboard (
/) - Overview of all clusters and system status - Create Cluster (
/create-cluster) - Set up new Kind clusters with custom configurations - Deploy App (
/deploy-app) - Deploy applications using templates or custom configurations - Manage Apps (
/manage-apps) - Monitor, scale, and manage deployed applications - Storage Management (
/manage-storage) - View and manage storage resources across clusters - Settings (
/settings) - Configure user preferences, security, notifications, and system defaults - Cluster Status (
/cluster-status) - Detailed cluster monitoring and resource utilization
The template system allows you to deploy applications with pre-configured settings:
# List available templates
curl http://localhost:8020/api/templates
# Deploy Airflow with default settings
curl -X POST http://localhost:8020/api/apps/deploy \
-H "Content-Type: application/json" \
-d '{
"cluster_name": "my-cluster",
"app_name": "airflow",
"namespace": "default",
"values": {
"replicas": 1,
"version": "3.0.0"
}
}'GET /api/cluster/status- Get cluster status and health informationPOST /api/cluster/create- Create a new Kind clusterDELETE /api/cluster/{cluster_name}- Delete a clusterGET /api/templates- List available application templates
POST /api/apps/deploy- Deploy an application from templateGET /api/apps- List deployed applications across clustersDELETE /api/apps/{app_name}- Delete a deployed applicationPOST /api/apps/{app_name}/scale- Scale application replicas
GET /api/storage/overview- Get storage overview across all clustersGET /api/storage/classes- List storage classesGET /api/storage/persistent-volumes- List persistent volumesGET /api/storage/persistent-volume-claims- List persistent volume claimsGET /api/storage/metrics- Get storage utilization metricsDELETE /api/storage/persistent-volumes/{name}- Delete a persistent volume
GET /api/settings/user-preferences- Get user preferencesPUT /api/settings/user-preferences- Update user preferencesGET /api/settings/cluster-defaults- Get cluster default configurationsPUT /api/settings/cluster-defaults- Update cluster defaultsGET /api/settings/security-settings- Get security configurationPUT /api/settings/security-settings- Update security settingsPOST /api/settings/export- Export configuration backupPOST /api/settings/import- Import configuration from backup
# Create a cluster
kind-cluster-setup create-cluster my-cluster --workers 2
# Deploy an application
kind-cluster-setup deploy-app airflow --cluster my-cluster
# List clusters
kind-cluster-setup list-clusters
# Delete a cluster
kind-cluster-setup delete-cluster my-clusterThe project maintains a focused test suite with 80 comprehensive tests covering core functionality, ensuring high code quality and reliability.
# Run all tests (80 tests)
uv run pytest tests/
# Run specific test file
uv run pytest tests/test_cluster.py
# Run with coverage
uv run pytest tests/ --cov=src/kind_cluster_setupcd kind-setup-frontend
# Run Jest tests
npm run test
# Run tests in watch mode
npm run test:watch- Architecture Guide - Detailed system architecture and design decisions
- Template Development Guide - How to create custom application templates
- Contributing Guidelines - How to contribute to the project
- API Documentation - Interactive API documentation (when server is running)
- Deployment Guide - Production deployment instructions
HOST- Server host (default: 0.0.0.0)PORT- Server port (default: 8020)USE_MOCK_DATA- Use mock data for development (default: false)TASK_STORE_TYPE- Task storage type: file|memory (default: file)
NEXT_PUBLIC_API_URL- Backend API URL (default: http://localhost:8020)NEXT_PUBLIC_STATUS_POLL_INTERVAL- Status polling interval in ms (default: 5000)
Templates are located in templates/apps/ and follow a standardized structure:
templates/apps/
βββ airflow/
β βββ template.yaml # Template metadata
β βββ deployment.yaml # Kubernetes manifests
β βββ values.yaml # Default values
βββ mysql/
βββ template.yaml
βββ helm-values.yaml # Helm chart values
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and add tests
- Run tests:
npm testandpython -m pytest - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
To contribute a new application template:
- Follow the Template Development Guide
- Add your template to
templates/apps/ - Include tests and documentation
- Submit a pull request
The application features a modern, responsive web interface with comprehensive functionality:
- Dashboard: Overview of clusters and system status
- Storage Management: Monitor and manage storage resources across clusters
- Settings: Configure application preferences, security, and notifications
- Cluster Management: Create and monitor Kind clusters
- Application Management: Deploy and manage applications
For detailed UI documentation with screenshots and workflows, see docs/ui-guide.md.
Frontend not starting:
# Install dependencies (required before first run)
cd kind-setup-frontend && npm install
# Check Node.js version (requires 18+)
node --version
# Then start the development server
npm run devBackend API errors:
# Check Python version (requires 3.8+)
python --version
# Install dependencies
pip install -e .Port conflicts:
# Check if ports are in use
lsof -i :3000 # Frontend
lsof -i :8020 # BackendDocker/Kind issues:
# Verify Docker is running
docker ps
# Check Kind installation
kind versionEnsure your environment files are properly configured:
- Backend:
.env(copy from.env.example) - Frontend:
.env.local(copy from.env.local.example)
This project is licensed under the MIT License - see the LICENSE file for details.
- Kind - Kubernetes in Docker
- FastAPI - Modern Python web framework
- Next.js - React framework for production
- Radix UI - Low-level UI primitives
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Project Wiki
