Some checks failed
Test / frontend-tests (pull_request) Successful in 1m25s
Test / frontend-typecheck (pull_request) Successful in 1m32s
PR Review Automation / review (pull_request) Has been cancelled
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
- Document current status: 43 backend commands, 115 command wrappers, 10 frontend components - Plan 16 resource discovery UIs (Nodes, Events, ConfigMaps, Secrets, etc.) - Plan 6 advanced features (Terminal, YAML Editor, Metrics, Search, Context Switcher) - Plan 3 enhanced workloads and cluster management features - Plan 4 UX improvements and advanced management features - Plan 3 phases for real-time updates, RBAC, and extension system - 6-sprint implementation order with clear priorities - Dependencies and architecture updates documented - Success criteria and risk assessment included
761 lines
18 KiB
Markdown
761 lines
18 KiB
Markdown
# Kubernetes Management UI - Complete Feature Implementation Plan
|
|
|
|
## Project: tftsr-devops_investigation v1.1.0
|
|
## Target: 100% Lens Desktop v5.x Feature Parity (MIT Licensed)
|
|
## Architecture: Tauri 2 + Rust Backend + React/TypeScript Frontend
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
This plan implements a complete Lens Desktop v5.x-equivalent Kubernetes Management UI using the existing project architecture (Tauri + Rust + React). All features will be MIT-licensed, building on the foundation already established in the project.
|
|
|
|
**Current Status (v1.1.0):**
|
|
- ✅ 43 backend commands implemented in `src-tauri/src/commands/kube.rs`
|
|
- ✅ 115 command wrappers in `src/lib/tauriCommands.ts`
|
|
- ✅ Basic cluster management (add/remove/list)
|
|
- ✅ Port forwarding (start/stop/delete/shutdown)
|
|
- ✅ Resource discovery (pods, services, deployments, statefulsets, daemonsets, namespaces)
|
|
- ✅ Resource management (scale, restart, delete, exec)
|
|
- ✅ 22 additional resource types via backend commands
|
|
- ✅ Frontend components for 10 resource types (ClusterList, PodList, ServiceList, DeploymentList, StatefulSetList, DaemonSetList, PortForwardList, AddClusterModal, PortForwardForm, ResourceBrowser)
|
|
|
|
**What's Missing:**
|
|
- Frontend UI components for remaining 10+ resource types (Nodes, Events, ConfigMaps, Secrets, ReplicaSets, Jobs, CronJobs, Ingresses, PVCs, PVs, ServiceAccounts, Roles, ClusterRoles, RoleBindings, ClusterRoleBindings, HPAs)
|
|
- Advanced features (terminal, YAML editor, metrics, search, context switcher)
|
|
- Real-time updates via Kubernetes API watchers
|
|
- Multi-cluster context switching UI
|
|
- Application grouping
|
|
|
|
---
|
|
|
|
## Phase 1: Complete Resource Discovery UI (Priority: HIGH)
|
|
|
|
### 1.1 Nodes View
|
|
**File:** `src/components/Kubernetes/NodeList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of all cluster nodes
|
|
- Node status (Ready/NotReady)
|
|
- Roles (control-plane, worker)
|
|
- Kubernetes version
|
|
- Internal/external IPs
|
|
- OS image, kernel version, kubelet version
|
|
- Age
|
|
- Actions: Cordon, Uncordon, Drain, Shell, Edit, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_nodes()` - List all nodes
|
|
- `cordon_node()` - Mark node as unschedulable
|
|
- `uncordon_node()` - Mark node as schedulable
|
|
- `drain_node()` - Evict pods from node
|
|
|
|
### 1.2 Events View
|
|
**File:** `src/components/Kubernetes/EventList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of cluster events
|
|
- Event type (Normal/Warning)
|
|
- Reason (PodScheduled, Pulling, etc.)
|
|
- Object (pod name, deployment name)
|
|
- Count
|
|
- First seen, last seen
|
|
- Message
|
|
- Filter by namespace
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_events()` - List all events
|
|
|
|
### 1.3 ConfigMaps View
|
|
**File:** `src/components/Kubernetes/ConfigMapList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of configmaps
|
|
- Data keys count
|
|
- Age
|
|
- View/edit configmap data
|
|
- Delete configmap
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_configmaps()` - List all configmaps
|
|
- `create_resource()` - Create resource from YAML
|
|
- `edit_resource()` - Edit resource via YAML
|
|
- `delete_resource()` - Delete resource
|
|
|
|
### 1.4 Secrets View
|
|
**File:** `src/components/Kubernetes/SecretList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of secrets
|
|
- Secret type (Opaque, TLS, etc.)
|
|
- Data keys count
|
|
- Age
|
|
- Masked values (show ***)
|
|
- View/edit secret (YAML or form)
|
|
- Delete secret
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_secrets()` - List all secrets
|
|
|
|
### 1.5 ReplicaSets View
|
|
**File:** `src/components/Kubernetes/ReplicaSetList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of replica sets
|
|
- Desired/Ready replicas
|
|
- Age
|
|
- Labels
|
|
- Actions: View details, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_replicasets()` - List all replica sets
|
|
|
|
### 1.6 Jobs View
|
|
**File:** `src/components/Kubernetes/JobList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of jobs
|
|
- Completions (e.g., 1/1)
|
|
- Duration
|
|
- Age
|
|
- Status (Active/Succeeded/Failed)
|
|
- Actions: View logs, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_jobs()` - List all jobs
|
|
|
|
### 1.7 CronJobs View
|
|
**File:** `src/components/Kubernetes/CronJobList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of cronjobs
|
|
- Schedule (e.g., 0 * * * *)
|
|
- Active jobs count
|
|
- Last schedule
|
|
- Age
|
|
- Actions: View details, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_cronjobs()` - List all cronjobs
|
|
|
|
### 1.8 Ingresses View
|
|
**File:** `src/components/Kubernetes/IngressList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of ingresses
|
|
- Class (nginx, traefik, etc.)
|
|
- Host (domain)
|
|
- Addresses (load balancer IPs)
|
|
- Age
|
|
- Actions: View details, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_ingresses()` - List all ingresses
|
|
|
|
### 1.9 PersistentVolumeClaims View
|
|
**File:** `src/components/Kubernetes/PVCList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of PVCs
|
|
- Status (Pending/Bound/Lost)
|
|
- Volume (bound PV name)
|
|
- Capacity
|
|
- Access modes (RWO, ROX, etc.)
|
|
- Age
|
|
- Actions: Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_persistentvolumeclaims()` - List all PVCs
|
|
|
|
### 1.10 PersistentVolumes View
|
|
**File:** `src/components/Kubernetes/PVList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of PVs
|
|
- Status (Available/Bound/Released/Failed)
|
|
- Capacity
|
|
- Access modes
|
|
- Reclaim policy (Retain/Recycle/Delete)
|
|
- Storage class
|
|
- Age
|
|
- Actions: Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_persistentvolumes()` - List all PVs
|
|
|
|
### 1.11 ServiceAccounts View
|
|
**File:** `src/components/Kubernetes/ServiceAccountList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of service accounts
|
|
- Secrets count
|
|
- Age
|
|
- Actions: View details, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_serviceaccounts()` - List all service accounts
|
|
|
|
### 1.12 Roles View
|
|
**File:** `src/components/Kubernetes/RoleList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of roles
|
|
- Namespace
|
|
- Age
|
|
- Actions: View rules, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_roles()` - List all roles
|
|
|
|
### 1.13 ClusterRoles View
|
|
**File:** `src/components/Kubernetes/ClusterRoleList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of cluster roles
|
|
- Age
|
|
- Actions: View rules, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_clusterroles()` - List all cluster roles
|
|
|
|
### 1.14 RoleBindings View
|
|
**File:** `src/components/Kubernetes/RoleBindingList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of role bindings
|
|
- Namespace
|
|
- Role (reference)
|
|
- Age
|
|
- Actions: View details, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_rolebindings()` - List all role bindings
|
|
|
|
### 1.15 ClusterRoleBindings View
|
|
**File:** `src/components/Kubernetes/ClusterRoleBindingList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of cluster role bindings
|
|
- Cluster role (reference)
|
|
- Age
|
|
- Actions: View details, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_clusterrolebindings()` - List all cluster role bindings
|
|
|
|
### 1.16 HorizontalPodAutoscalers View
|
|
**File:** `src/components/Kubernetes/HPAList.tsx`
|
|
|
|
**Features:**
|
|
- Table view of HPAs
|
|
- Min/Max replicas
|
|
- Current replicas
|
|
- Desired replicas
|
|
- Age
|
|
- Actions: View details, Delete
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_horizontalpodautoscalers()` - List all HPAs
|
|
|
|
---
|
|
|
|
## Phase 2: Advanced Features (Priority: HIGH)
|
|
|
|
### 2.1 Interactive Terminal
|
|
**File:** `src/components/Kubernetes/Terminal.tsx`
|
|
|
|
**Features:**
|
|
- Full-featured terminal using xterm.js
|
|
- Multiple tabs support
|
|
- Shell selection (sh, bash, zsh)
|
|
- Multi-container pod support
|
|
- Resize support
|
|
- Copy/paste
|
|
- Search in output
|
|
- Clear screen
|
|
- Disconnect/reconnect
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `exec_pod()` - Execute command in pod
|
|
|
|
**Implementation Notes:**
|
|
- Use `xterm.js` for terminal rendering
|
|
- Use `xterm-addon-web-links` for link detection
|
|
- Use `xterm-addon-fit` for auto-resize
|
|
- WebSocket-based terminal session (or kubectl exec)
|
|
|
|
### 2.2 YAML Editor
|
|
**File:** `src/components/Kubernetes/YamlEditor.tsx`
|
|
|
|
**Features:**
|
|
- Code editor using Monaco (VS Code's editor)
|
|
- Syntax highlighting for YAML
|
|
- Validation (basic schema validation)
|
|
- Diff view (before/after)
|
|
- Apply button
|
|
- Cancel button
|
|
- Error messages
|
|
|
|
**Dependencies:**
|
|
- `@monaco-editor/react` (MIT licensed)
|
|
|
|
### 2.3 Metrics Visualization
|
|
**File:** `src/components/Kubernetes/MetricsChart.tsx`
|
|
|
|
**Features:**
|
|
- CPU usage chart (line/bar)
|
|
- Memory usage chart
|
|
- Time range selector (5m, 15m, 1h, 6h, 1d, 7d)
|
|
- Zoom functionality
|
|
- Legend
|
|
- Tooltip with values
|
|
- Per-container metrics for pods
|
|
|
|
**Backend Commands:**
|
|
- Need to add: `get_metrics()` for node/pod metrics
|
|
|
|
**Dependencies:**
|
|
- `react-chartjs-2` or `recharts` (MIT licensed)
|
|
|
|
### 2.4 Search and Filter
|
|
**File:** `src/components/Kubernetes/SearchBar.tsx`
|
|
|
|
**Features:**
|
|
- Global search bar
|
|
- Search by name, labels, annotations
|
|
- Filter by namespace
|
|
- Filter by status
|
|
- Filter by resource type
|
|
- Recent searches
|
|
- Search suggestions
|
|
|
|
**Implementation Notes:**
|
|
- Debounced search
|
|
- Client-side filtering (or server-side for large datasets)
|
|
- Keyboard shortcuts (Ctrl+K)
|
|
|
|
### 2.5 Application Grouping
|
|
**File:** `src/components/Kubernetes/ApplicationView.tsx`
|
|
|
|
**Features:**
|
|
- Group workloads by application label
|
|
- Visual hierarchy (app → deployment → pods)
|
|
- Resource relationships
|
|
- Dependency visualization
|
|
- Application status summary
|
|
|
|
**Implementation Notes:**
|
|
- Tree view component
|
|
- Use labels to group resources
|
|
- Show owner references
|
|
|
|
### 2.6 Context Switcher
|
|
**File:** `src/components/Kubernetes/ContextSwitcher.tsx`
|
|
|
|
**Features:**
|
|
- Current cluster display
|
|
- Cluster selector dropdown
|
|
- Context selector (when multiple contexts in kubeconfig)
|
|
- Quick switch between clusters
|
|
- Visual indicator of active cluster
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `list_clusters()` - List all clusters
|
|
- `add_cluster()` - Add cluster
|
|
- `remove_cluster()` - Remove cluster
|
|
|
|
---
|
|
|
|
## Phase 3: Enhanced Workloads (Priority: HIGH)
|
|
|
|
### 3.1 Enhanced Pod List
|
|
**File:** `src/components/Kubernetes/PodList.tsx` (Update)
|
|
|
|
**Add Features:**
|
|
- Multi-container pod support (select container)
|
|
- Container status indicators
|
|
- Resource requests/limits display
|
|
- Node assignment
|
|
- IP address
|
|
- Restart count
|
|
- Events tab
|
|
- Logs streaming (auto-refresh)
|
|
|
|
### 3.2 Enhanced Deployment List
|
|
**File:** `src/components/Kubernetes/DeploymentList.tsx` (Update)
|
|
|
|
**Add Features:**
|
|
- Rollout status
|
|
- Revision history
|
|
- Rollback button
|
|
- Update strategy
|
|
- Progress conditions
|
|
- Events tab
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `rollback_deployment()` - Rollback deployment
|
|
|
|
### 3.3 Enhanced Service List
|
|
**File:** `src/components/Kubernetes/ServiceList.tsx` (Update)
|
|
|
|
**Add Features:**
|
|
- Endpoints display
|
|
- Selector display
|
|
- Session affinity
|
|
- Type-specific fields (LoadBalancer IPs, NodePorts)
|
|
- External name display
|
|
- Events tab
|
|
|
|
### 3.4 Enhanced ConfigMap/Secret View
|
|
**File:** `src/components/Kubernetes/ConfigMapDetail.tsx`
|
|
|
|
**Features:**
|
|
- Data keys as expandable list
|
|
- Key-value pairs display
|
|
- Edit mode (form or YAML)
|
|
- Create new key
|
|
- Delete key
|
|
- Export to file
|
|
|
|
---
|
|
|
|
## Phase 4: Cluster Management (Priority: MEDIUM)
|
|
|
|
### 4.1 Cluster Overview
|
|
**File:** `src/components/Kubernetes/ClusterOverview.tsx`
|
|
|
|
**Features:**
|
|
- Cluster name and version
|
|
- API server URL
|
|
- Provider information
|
|
- Node count (total, ready)
|
|
- Resource utilization (CPU, memory)
|
|
- Workload counts
|
|
- Quick actions (add cluster, refresh)
|
|
|
|
**Backend Commands:**
|
|
- `list_nodes()` - ✅ Implemented
|
|
- Need to add: `get_cluster_info()`
|
|
|
|
### 4.2 Cluster Details
|
|
**File:** `src/components/Kubernetes/ClusterDetails.tsx`
|
|
|
|
**Features:**
|
|
- Cluster configuration
|
|
- Certificate details
|
|
- Storage classes
|
|
- Network policies
|
|
- RBAC summary
|
|
- Add-ons
|
|
|
|
---
|
|
|
|
## Phase 5: User Experience (Priority: MEDIUM)
|
|
|
|
### 5.1 Hotbar (Quick Actions)
|
|
**File:** `src/components/Kubernetes/Hotbar.tsx`
|
|
|
|
**Features:**
|
|
- Quick access toolbar
|
|
- Common actions (refresh, create, search)
|
|
- Recent actions
|
|
- Custom shortcuts
|
|
|
|
### 5.2 Command Palette
|
|
**File:** `src/components/Kubernetes/CommandPalette.tsx`
|
|
|
|
**Features:**
|
|
- Quick command access (Ctrl+Shift+P)
|
|
- Command search
|
|
- Keyboard shortcuts
|
|
- Recent commands
|
|
|
|
### 5.3 Toast Notifications
|
|
**File:** `src/components/Kubernetes/Toast.tsx`
|
|
|
|
**Features:**
|
|
- Success/error notifications
|
|
- Auto-dismiss
|
|
- Action buttons in notifications
|
|
- History of notifications
|
|
|
|
### 5.4 Loading States
|
|
**File:** `src/components/Kubernetes/LoadingSpinner.tsx`
|
|
|
|
**Features:**
|
|
- Loading indicators for all async operations
|
|
- Skeleton screens for data tables
|
|
- Progress indicators
|
|
|
|
---
|
|
|
|
## Phase 6: Advanced Management (Priority: LOW)
|
|
|
|
### 6.1 Resource Creation Dialogs
|
|
**File:** `src/components/Kubernetes/CreateResourceModal.tsx`
|
|
|
|
**Features:**
|
|
- Create from template
|
|
- Create from YAML
|
|
- Create from form
|
|
- Namespace selection
|
|
- Validation
|
|
- Apply button
|
|
|
|
### 6.2 Resource Edit Dialog
|
|
**File:** `src/components/Kubernetes/EditResourceModal.tsx`
|
|
|
|
**Features:**
|
|
- Edit existing resource
|
|
- YAML editor
|
|
- Form editor
|
|
- Preview changes
|
|
- Apply button
|
|
|
|
### 6.3 Port Forward UI
|
|
**File:** `src/components/Kubernetes/PortForwardForm.tsx` (Update)
|
|
|
|
**Add Features:**
|
|
- Pod selector
|
|
- Container selector
|
|
- Local port auto-detection
|
|
- Target port selection
|
|
- Multiple port forwards
|
|
- Active forwards list
|
|
|
|
**Backend Commands (✅ Implemented):**
|
|
- `start_port_forward()` - ✅ Implemented
|
|
- `stop_port_forward()` - ✅ Implemented
|
|
- `list_port_forwards()` - ✅ Implemented
|
|
|
|
### 6.4 Helm Integration
|
|
**File:** `src/components/Kubernetes/HelmView.tsx`
|
|
|
|
**Features:**
|
|
- Charts view (from repositories)
|
|
- Releases view
|
|
- Install chart
|
|
- Upgrade release
|
|
- Rollback release
|
|
- Uninstall release
|
|
|
|
**Backend Commands:**
|
|
- Need to add: `helm_*` commands
|
|
|
|
---
|
|
|
|
## Phase 7: Real-time Updates (Priority: HIGH)
|
|
|
|
### 7.1 WebSocket Watchers
|
|
**File:** `src-tauri/src/kube/watcher.rs`
|
|
|
|
**Features:**
|
|
- Kubernetes API watchers for all resource types
|
|
- Reconnect logic
|
|
- Resource caching with diff updates
|
|
- Real-time UI updates
|
|
- Performance optimization
|
|
|
|
**Implementation Notes:**
|
|
- Use `k8s-openapi` crate with `watch` feature
|
|
- Implement per-resource-type watchers
|
|
- Cache resources locally
|
|
- Push updates to frontend via Tauri events
|
|
|
|
### 7.2 Event Bus
|
|
**File:** `src/lib/eventBus.ts`
|
|
|
|
**Features:**
|
|
- Centralized event system
|
|
- Resource change events
|
|
- Connection status events
|
|
- Error events
|
|
|
|
---
|
|
|
|
## Phase 8: RBAC Management (Priority: MEDIUM)
|
|
|
|
### 8.1 RBAC Viewer
|
|
**File:** `src/components/Kubernetes/RbacViewer.tsx`
|
|
|
|
**Features:**
|
|
- Role bindings visualization
|
|
- Reverse lookup (who has access to what)
|
|
- Permission checker
|
|
- Simulate policy
|
|
|
|
### 8.2 RBAC Editor
|
|
**File:** `src/components/Kubernetes/RbacEditor.tsx`
|
|
|
|
**Features:**
|
|
- Create/edit roles
|
|
- Add/remove rules
|
|
- Bind roles to subjects
|
|
- Preview permissions
|
|
|
|
---
|
|
|
|
## Phase 9: Extension System (Priority: LOW)
|
|
|
|
### 9.1 Extension API
|
|
**File:** `src/lib/extensions.ts`
|
|
|
|
**Features:**
|
|
- Plugin architecture
|
|
- Extension loading
|
|
- Extension management UI
|
|
- Sandbox environment
|
|
|
|
**Implementation Notes:**
|
|
- Use WebAssembly for extensions
|
|
- Or use Node.js child processes
|
|
- Define extension API surface
|
|
|
|
---
|
|
|
|
## Implementation Order
|
|
|
|
### Sprint 1 (Week 1): Resource Discovery UI
|
|
- Nodes, Events, ConfigMaps, Secrets
|
|
- ReplicaSets, Jobs, CronJobs
|
|
- Ingresses, PVCs, PVs
|
|
- ServiceAccounts, Roles, ClusterRoles
|
|
- RoleBindings, ClusterRoleBindings, HPAs
|
|
|
|
### Sprint 2 (Week 2): Advanced Features
|
|
- Interactive terminal
|
|
- YAML editor
|
|
- Metrics visualization
|
|
- Search and filter
|
|
- Application grouping
|
|
- Context switcher
|
|
|
|
### Sprint 3 (Week 3): Enhanced Workloads
|
|
- Enhanced Pod/Deployment/Service lists
|
|
- ConfigMap/Secret detail views
|
|
- Cluster overview
|
|
- Cluster details
|
|
|
|
### Sprint 4 (Week 4): UX & Polish
|
|
- Hotbar, Command palette
|
|
- Toast notifications
|
|
- Loading states
|
|
- Resource creation/edit dialogs
|
|
- Port forward UI
|
|
|
|
### Sprint 5 (Week 5): Real-time & RBAC
|
|
- WebSocket watchers
|
|
- Event bus
|
|
- RBAC viewer/editor
|
|
- Extension system (optional)
|
|
|
|
### Sprint 6 (Week 6): Testing & Release
|
|
- Test coverage
|
|
- Documentation
|
|
- Bug fixes
|
|
- Release preparation
|
|
|
|
---
|
|
|
|
## Dependencies to Add
|
|
|
|
### Frontend (npm):
|
|
```json
|
|
{
|
|
"xterm": "^5.3.0",
|
|
"xterm-addon-web-links": "^0.9.0",
|
|
"xterm-addon-fit": "^0.8.0",
|
|
"@monaco-editor/react": "^4.6.0",
|
|
"react-chartjs-2": "^5.2.0",
|
|
"chart.js": "^4.4.0",
|
|
"zustand": "^4.4.0" (already present)
|
|
}
|
|
```
|
|
|
|
### Backend (Cargo.toml):
|
|
```toml
|
|
# For Kubernetes API watchers
|
|
k8s-openapi = { version = "0.21", features = ["watch"] }
|
|
tokio-stream = "1.0"
|
|
```
|
|
|
|
---
|
|
|
|
## Architecture Updates
|
|
|
|
### State Management
|
|
- Add `clusters` store (persisted)
|
|
- Add `portForwards` store (persisted)
|
|
- Add `selectedContext` store (ephemeral)
|
|
- Add `resources` store (cached, with watchers)
|
|
|
|
### Backend Enhancements
|
|
- Add `ResourceCache` struct for efficient local caching
|
|
- Add `ResourceWatcher` for Kubernetes API watchers
|
|
- Add `EventBus` for real-time updates
|
|
- Add `MetricsCollector` for resource metrics
|
|
|
|
---
|
|
|
|
## Success Criteria
|
|
|
|
✅ **100% Feature Parity Checklist:**
|
|
|
|
### Core Features (Must Have)
|
|
- [ ] All 16 resource discovery UIs implemented
|
|
- [ ] All 6 management UIs implemented
|
|
- [ ] Interactive terminal with tab support
|
|
- [ ] YAML editor with validation
|
|
- [ ] Metrics visualization
|
|
- [ ] Search and filter functionality
|
|
- [ ] Application grouping
|
|
- [ ] Context switcher
|
|
- [ ] Real-time updates via watchers
|
|
- [ ] RBAC viewer/editor
|
|
|
|
### Quality Features (Should Have)
|
|
- [ ] Hotbar and command palette
|
|
- [ ] Toast notifications
|
|
- [ ] Loading states
|
|
- [ ] Resource creation/edit dialogs
|
|
- [ ] Port forward UI
|
|
- [ ] Helm integration
|
|
- [ ] Cluster overview
|
|
- [ ] RBAC management
|
|
|
|
### Enterprise Features (Nice to Have)
|
|
- [ ] Extension system
|
|
- [ ] Multi-cluster management UI
|
|
- [ ] Team sharing
|
|
- [ ] Audit trail enhancements
|
|
|
|
---
|
|
|
|
## Risk Assessment
|
|
|
|
| Risk | Impact | Mitigation |
|
|
|------|--------|------------|
|
|
| Backend command implementation | HIGH | Already done (43 commands) |
|
|
| Frontend component complexity | MEDIUM | Use existing patterns |
|
|
| Real-time performance | MEDIUM | Implement caching and diff updates |
|
|
| Terminal integration | LOW | Use xterm.js library |
|
|
| Metrics collection | MEDIUM | Add `get_metrics()` command |
|
|
| Helm integration | LOW | Optional feature |
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
- All implementations must remain MIT licensed
|
|
- Follow existing code patterns in the project
|
|
- Use existing UI components from `src/components/ui/index.tsx`
|
|
- Test each feature before moving to next
|
|
- Update `RELEASE_NOTES.md` for each phase
|
|
- Update `README.md` with new features
|
|
|
|
---
|
|
|
|
**Document Version:** 1.0
|
|
**Last Updated:** 2026-06-07
|
|
**Next Review:** After Sprint 1 completion
|