- 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
18 KiB
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 nodescordon_node()- Mark node as unschedulableuncordon_node()- Mark node as schedulabledrain_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 configmapscreate_resource()- Create resource from YAMLedit_resource()- Edit resource via YAMLdelete_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.jsfor terminal rendering - Use
xterm-addon-web-linksfor link detection - Use
xterm-addon-fitfor 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-2orrecharts(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 clustersadd_cluster()- Add clusterremove_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()- ✅ Implementedstop_port_forward()- ✅ Implementedlist_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-openapicrate withwatchfeature - 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):
{
"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):
# For Kubernetes API watchers
k8s-openapi = { version = "0.21", features = ["watch"] }
tokio-stream = "1.0"
Architecture Updates
State Management
- Add
clustersstore (persisted) - Add
portForwardsstore (persisted) - Add
selectedContextstore (ephemeral) - Add
resourcesstore (cached, with watchers)
Backend Enhancements
- Add
ResourceCachestruct for efficient local caching - Add
ResourceWatcherfor Kubernetes API watchers - Add
EventBusfor real-time updates - Add
MetricsCollectorfor 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.mdfor each phase - Update
README.mdwith new features
Document Version: 1.0
Last Updated: 2026-06-07
Next Review: After Sprint 1 completion