{"id":28607082,"url":"https://github.com/iwanhae/kuview","last_synced_at":"2025-07-27T20:12:02.541Z","repository":{"id":296716783,"uuid":"994231034","full_name":"iwanhae/kuview","owner":"iwanhae","description":"A browser-based, real-time Kubernetes dashboard","archived":false,"fork":false,"pushed_at":"2025-07-26T12:35:59.000Z","size":9457,"stargazers_count":103,"open_issues_count":2,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-26T14:39:52.375Z","etag":null,"topics":["go","kubernetes","monitoring","typescript","webassembly"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iwanhae.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-01T14:00:33.000Z","updated_at":"2025-07-26T12:36:03.000Z","dependencies_parsed_at":"2025-06-21T04:21:47.529Z","dependency_job_id":"32510b5e-1543-443f-8c6a-b1f6fcd996c9","html_url":"https://github.com/iwanhae/kuview","commit_stats":null,"previous_names":["iwanhae/kuview"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iwanhae/kuview","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwanhae%2Fkuview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwanhae%2Fkuview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwanhae%2Fkuview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwanhae%2Fkuview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iwanhae","download_url":"https://codeload.github.com/iwanhae/kuview/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iwanhae%2Fkuview/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267417664,"owners_count":24083839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","kubernetes","monitoring","typescript","webassembly"],"created_at":"2025-06-11T21:00:38.085Z","updated_at":"2025-07-27T20:12:02.535Z","avatar_url":"https://github.com/iwanhae.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# KuView: A browser-based, real-time Kubernetes dashboard\n\n[![KuView Demo](./sample.png)](https://youtu.be/4mpiOiLgfLE)\n\nKuView is a real-time, read-only Kubernetes dashboard that runs entirely in your web browser. It provides an immediate and comprehensive overview of your cluster's status and resource utilization, with no server-side installation or `kubectl` plugins required for its primary mode of operation.\n\n## Quick Start Guide\n\nThere are two ways to run KuView:\n\n### 1. Run KuView locally with `kubectl proxy`\n\nThis method is ideal for quick, personal use without altering your cluster. Ensure `kubectl` is configured to access your cluster.\n\n```bash\n# Download and extract the latest release\ncurl -sL https://r2.iwanhae.kr/kuview/latest.tar.gz | tar xvz\n\n# Initiate the dashboard\nkubectl proxy -w ./dist\n```\n\nNavigate to **http://127.0.0.1:8001/static** in your web browser.\n\n**That's it!**\n\n### 2. Deploy on your cluster\n\nThis method provides better performance and is suitable for team usage.\n\n```bash\n# Create a namespace for KuView\nkubectl create namespace kuview\n\n# Create a ClusterRole for read-only access\nkubectl create clusterrole kuview \\\n\t--verb=get,list,watch \\\n\t--resource=nodes,pods,pods/log,namespaces,services,persistentvolumes,persistentvolumeclaims,rolebindings.rbac.authorization.k8s.io,roles.rbac.authorization.k8s.io,clusterrolebindings.rbac.authorization.k8s.io,clusterroles.rbac.authorization.k8s.io,endpointslices.discovery.k8s.io,nodes.metrics.k8s.io,pods.metrics.k8s.io,serviceaccounts\n\n# Create a ServiceAccount for KuView\nkubectl create -n kuview serviceaccount kuview\n\n# Bind the ClusterRole to the ServiceAccount\nkubectl create -n kuview clusterrolebinding kuview \\\n\t--clusterrole=kuview \\\n\t--serviceaccount=kuview:kuview\n\n# Deploy KuView\nkubectl create -n kuview deployment kuview --image ghcr.io/iwanhae/kuview:latest --port 8001\nkubectl patch -n kuview deployments.apps kuview --patch '{\"spec\":{\"template\":{\"spec\":{\"serviceAccountName\":\"kuview\"}}}}'\n\n# Expose the service as a NodePort (optional, you can use ingress or port-forwarding instead)\nkubectl expose -n kuview deployment kuview --port 8001 --type=NodePort\n\n# Now you can access KuView at http://\u003cnode-ip\u003e:\u003cnode-port\u003e/\n```\n\n## Core Features\n\n- **Real-time Monitoring**: Observe live updates of resource states and events within your cluster.\n- **Comprehensive Resource Visualization**: Visualize relationships between resources to gain a deeper understanding of your cluster's architecture.\n- **Client-Side Operation**: Run anywhere with `kubectl` access. No cluster-side installation is required for the proxy-based approach.\n- **Secure Read-only Access**: Ensures cluster safety with strictly read-only access, preventing any modifications to your cluster state.\n- **Responsive User Interface**: Fully responsive UI for a seamless experience on desktops, tablets, and mobile devices.\n- **Modern UI/UX**: Features a clean and intuitive interface built with React for an optimal user experience.\n\n## For Development\n\nInstructions for setting up a development environment.\n\n### Wasm Development\n\nFor developing the WebAssembly-based client:\n\n1.  Run `kubectl proxy` to connect to the Kubernetes API server.\n2.  Run `npm run wasm` to build the Wasm binary.\n3.  Run `npm run dev` to start the development server for the web client.\n\n### Server-Side Development\n\nFor developing the Go-based server component:\n\n1.  Run `go run ./cmd/kuview-go/main.go` to start the backend server.\n2.  Run `npm run dev` to start the development server for the web client.\n\n### Frontend Development\n\nAll routing logic is located in `src/App.tsx`, with page components in the `src/pages` directory. For a reference on resource visualization, see `src/pages/node.tsx`.\n\n**Visualization Principles:**\n\n1.  Each visualization should be encapsulated in a \"Card\" component within the `src/components/block` directory.\n2.  All resource visualizations must be searchable. A common pattern is a two-part grid layout using the `Search` component from `src/components/block/search.tsx`. The `Node` page (`src/pages/node.tsx`) provides a good example.\n3.  On a page, visualizations should be sorted by priority. Priority is defined as follows:\n    - Potential for server failure (e.g., a pod in `CrashLoopBackOff` state).\n    - Potential for performance bottlenecks (e.g., noisy neighbors on the same node).\n    - Potential for security issues (e.g., a pod with excessive permissions).\n4.  Use the `useKuview` hook to fetch Kubernetes resource data (e.g., `const nodes = useKuview(\"v1/Node\");`).\n\n### Backend Development\n\nTo support a new resource type, you need to modify `pkg/types/const.go` that defines the resource types. The client-side is designed to adapt to these backend changes automatically.\n\n## License\n\nThis project is released under a permissive open-source license. You are free to use, modify, and distribute it.\n\n## Contributing\n\nIf you find this project useful, please consider giving it a star on GitHub. Contributions of any kind are welcome and greatly appreciated! 😉\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwanhae%2Fkuview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiwanhae%2Fkuview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiwanhae%2Fkuview/lists"}