tftsr-devops_investigation/docs/KUBERNETES-MANAGEMENT-IMPLEMENTATION-PLAN.md
Shaun Arman 4c41bdfddf
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
feat: add Kubernetes Management Implementation Plan
- 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
2026-06-07 00:44:01 -05:00

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 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):

{
  "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 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