{"id":13483790,"url":"https://github.com/astefanutti/kubebox","last_synced_at":"2025-05-14T04:07:28.542Z","repository":{"id":38554547,"uuid":"74155531","full_name":"astefanutti/kubebox","owner":"astefanutti","description":"⎈❏ Terminal and Web console for Kubernetes","archived":false,"fork":false,"pushed_at":"2024-06-17T13:05:26.000Z","size":19242,"stargazers_count":2200,"open_issues_count":40,"forks_count":143,"subscribers_count":47,"default_branch":"master","last_synced_at":"2025-05-09T22:49:43.360Z","etag":null,"topics":["console","cui","dashboard","gui","kubernetes","monitoring","openshift","terminal","tui"],"latest_commit_sha":null,"homepage":"http://astefanutti.github.io/kubebox","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/astefanutti.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2016-11-18T18:21:27.000Z","updated_at":"2025-05-09T13:35:21.000Z","dependencies_parsed_at":"2024-01-13T12:21:53.729Z","dependency_job_id":"ac07c8e8-e2d4-4883-a186-4abb376abfb5","html_url":"https://github.com/astefanutti/kubebox","commit_stats":{"total_commits":820,"total_committers":15,"mean_commits":"54.666666666666664","dds":0.1097560975609756,"last_synced_commit":"0448a18e9e6acabba004d44fd1d0625027ba48ed"},"previous_names":["astefanutti/kubik"],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astefanutti%2Fkubebox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astefanutti%2Fkubebox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astefanutti%2Fkubebox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astefanutti%2Fkubebox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astefanutti","download_url":"https://codeload.github.com/astefanutti/kubebox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254069067,"owners_count":22009479,"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","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":["console","cui","dashboard","gui","kubernetes","monitoring","openshift","terminal","tui"],"created_at":"2024-07-31T17:01:15.311Z","updated_at":"2025-05-14T04:07:28.519Z","avatar_url":"https://github.com/astefanutti.png","language":"JavaScript","readme":"= Kubebox [small]#^⎈❏^#\nAntonin Stefanutti \u003chttps://github.com/astefanutti[@astefanutti]\u003e\n// Meta\n:description: Terminal and Web console for Kubernetes\n// Settings\n:idprefix:\n:idseparator: -\n:experimental:\n// Aliases\nifdef::env-github[]\n:note-caption: :information_source:\n:icon-check: :heavy_check_mark:\n:icon-edit: :pencil2:\nendif::[]\nifndef::env-github[]\n:icons: font\n:icon-check: icon:check[]\n:icon-edit: icon:pencil[fw]\nendif::[]\n// URIs\n:uri-kubebox-download: https://github.com/astefanutti/kubebox/releases/download/v0.10.0\n:uri-kubebox-twitter: https://twitter.com/kubebox\n:uri-kube-apiserver: https://kubernetes.io/docs/admin/kube-apiserver/\n:uri-ingress-controllers: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-controllers\n:uri-service-account: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n:uri-xterm-js: https://github.com/xtermjs/xterm.js\n:uri-cadvisor: https://github.com/google/cadvisor\n\n{description}\n\n// image::./docs/kubebox.png[kubebox, align=\"center\"]\n++++\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://astefanutti.github.io/kubebox/kubebox.png\"\u003e\n    \u003cimg align=\"center\" src=\"https://astefanutti.github.io/kubebox/kubebox.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n++++\n\n=== Features\n\n* [x] Configuration from _kubeconfig_ files (`KUBECONFIG` environment variable or `$HOME/.kube`)\n* [x] Switch contexts interactively\n* [x] \u003c\u003cauthentication,Authentication support\u003e\u003e (bearer token, basic auth, private key / cert, OAuth, OpenID Connect, Amazon EKS, Google Kubernetes Engine, Digital Ocean)\n* [x] Namespace selection and pods list watching\n* [x] Container log scrolling / watching\n* [x] Container resources usage (memory, CPU, network, file system charts) footnote:[Requires {uri-cadvisor}[cAdvisor] to be deployed as a DaemonSet. See the \u003c\u003ccAdvisor\u003e\u003e section for more details.]\n* [x] Container remote exec terminal\n* [x] Cluster, namespace, pod events\n* [ ] Object configuration editor and CRUD operations\n* [ ] Cluster and nodes views / monitoring\n\nSee the \u003c\u003cScreenshots\u003e\u003e section for some examples, and follow image:https://img.shields.io/badge/%40kubebox-00ACEE.svg?\u0026logo=twitter\u0026colorA=555\u0026logoColor=fff[link={uri-kubebox-twitter}] for some updates.\n\n== Run\n\nThe following alternatives are available for you to use Kubebox, depending on your preferences and constraints:\n\n=== Executable\n\nDownload the Kubebox standalone executable for your OS:\n\n[source,shell,subs=attributes+]\n----\n# Linux (x86_64)\n$ curl -Lo kubebox {uri-kubebox-download}/kubebox-linux \u0026\u0026 chmod +x kubebox\n# Linux (ARMv7)\n$ curl -Lo kubebox {uri-kubebox-download}/kubebox-linux-arm \u0026\u0026 chmod +x kubebox\n# OSX\n$ curl -Lo kubebox {uri-kubebox-download}/kubebox-macos \u0026\u0026 chmod +x kubebox\n# Windows\n$ curl -Lo kubebox.exe {uri-kubebox-download}/kubebox-windows.exe\n----\n\nThen run:\n\n```sh\n$ ./kubebox\n```\n\n=== Server\n\nKubebox can be served from a service hosted in your Kubernetes cluster.\nTerminal emulation is provided by {uri-xterm-js}[Xterm.js] and the communication with the Kubernetes master API is proxied by the server.\n\nTo deploy the server in your Kubernetes cluster, run:\n\n```console\n$ kubectl apply -f https://raw.github.com/astefanutti/kubebox/master/kubernetes.yaml\n```\n\nTo shut down the server and clean-up resources, run:\n\n```console\n$ kubectl delete namespace kubebox\n```\n\nFor the Ingress resource to work, the cluster must have an Ingress controller running.\nSee {uri-ingress-controllers}[Ingress controllers] for more information.\n\nAlternatively, to deploy the server in your OpenShift cluster, run:\n\n```sh\n$ oc new-app -f https://raw.github.com/astefanutti/kubebox/master/openshift.yaml\n```\n\n=== Kubectl\n\nYou can run Kubebox as an _in-cluster_ client with `kubectl`, e.g.:\n\n```sh\n$ kubectl run kubebox -it --rm --env=\"TERM=xterm\" --image=astefanutti/kubebox --restart=Never\n```\n\nIf RBAC is enabled, you'll have to use the `--serviceaccount` option and reference a service account with sufficient permissions.\n\n=== Docker\n\nYou can run Kubebox using Docker, e.g.:\n\n```sh\n$ docker run -it --rm astefanutti/kubebox\n```\n\nYou may want to mount your home directory so that Kubebox can rely on the `~/.kube/config` file, e.g.:\n\n```sh\n$ docker run -it --rm -v ~/.kube/:/home/node/.kube/:ro astefanutti/kubebox\n```\n\n=== Online\n\nKubebox is available online at https://astefanutti.github.com/kubebox.\nNote that it requires this address to match the allowed origins for CORS by the API server.\nThis can be achived with the {uri-kube-apiserver}[Kubernetes API server CLI], e.g.:\n\n```sh\n$ kube-apiserver --cors-allowed-origins .*\n```\n\n== Authentication\n\nWe try to support the various authentication strategies supported by `kubectl`, in order to provide seamless integration with your local setup. Here are the different authentication strategies we support, depending on how you're using Kubebox:\n\n[cols=\"\u003c,^,^,^\",options=\"header\"]\n|===\n||Executable|Docker|Online\n\n|OpenID Connect\n|{icon-check}\n|{icon-check}\n|{icon-check}footnote:[Custom IDP certificate authority files are not supported in Web versions.]\n\n|Amazon EKS|\n{icon-check}\n|\n|\n\n|Digital Ocean\n|{icon-check}\n|\n|\n\n|Google Kubernetes Engine|\n{icon-check}\n|\n|\n|===\n\nIf the mode you're using isn't supported, you can refresh the authentication token/certs manually and update your _kubeconfig_ file accordingly.\n\n== cAdvisor\n\nKubebox relies on {uri-cadvisor}[cAdvisor] to retrieve the resource usage metrics.\nBefore version 0.8.0, Kubebox used to access the cAdvisor endpoints, that are embedded in the _Kubelet_. However, these endpoints are being deprecated, and will eventually be removed, as discussed in https://github.com/kubernetes/kubernetes/issues/68522[kubernetes#68522].\n\nStarting version 0.8.0, Kubebox expects cAdvisor to be deployed as a https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/[DaemonSet].\nThis can be achieved with:\n\n```sh\n$ kubectl apply -f https://raw.githubusercontent.com/astefanutti/kubebox/master/cadvisor.yaml\n```\n\nIt's recommended to use the provided `cadvisor.yaml` file, that's tested to work with Kubebox.\nHowever, the DaemonSet example, from the {uri-cadvisor}[cAdvisor] project, should also work just fine.\nNote that the cAdvisor containers must run with a _privileged_ security context, so that they can access the container runtime on each node.\n\nYou can change the default `--storage_duration` and `--housekeeping_interval` options, added to the cAdvisor container arguments declared in the `cadvisor.yaml` file, to adjust the duration of the storage moving window (default to `5m0s`), and the sampling period (default to `10s`) respectively.\nYou may also have to provide the path of your cluster container runtime socket, in case it's not following the usual convention.\n\n== Hotkeys\n\n[cols=\"1v,2v\"]\n|===\n|Keybinding |Description\n\n2+^.e|General\n\n|kbd:[l], kbd:[Ctrl+l]\n|Login\n\n|kbd:[n]\n|Change current namespace\n\n|[kbd:[Shift]\\+]kbd:[←], kbd:[→] +\n[kbd:[Alt]+]kbd:[1], ..., kbd:[9]\n|Navigate screens +\n(use kbd:[Shift] or kbd:[Alt] inside exec terminal)\n\n|kbd:[Tab], kbd:[Shift+Tab]\n|Change focus within the active screen\n\n|kbd:[↑], kbd:[↓]\n|Navigate list / form / log\n\n|kbd:[PgUp], kbd:[PgDn]\n|Move one page up / down\n\n|kbd:[Enter]\n|Select item / submit form\n\n|kbd:[Esc]\n|Close modal window / cancel form\n\n|kbd:[Ctrl+z]\n|Close current screen\n\n|kbd:[q], kbd:[Ctrl+q]\n|Exit footnote:[Not available in Web versions.]\n\n2+^.e|Login\n\n|kbd:[←], kbd:[→]\n|Navigate Kube configurations\n\n2+^.e|Pods\n\n|kbd:[Enter]\n|Select pod / cycle containers\n\n|kbd:[r]\n|Remote shell into container\n\n|kbd:[m]\n|Memory usage\n\n|kbd:[c]\n|CPU usage\n\n|kbd:[t]\n|Network usage\n\n|kbd:[f]\n|File system usage\n\n|kbd:[e]\n|Pod events\n\n|kbd:[Shift+e]\n|Namespace events\n\n|kbd:[Ctrl+e]\n|Cluster events\n\n|===\n\n== FAQ\n\n* *_Resources usage metrics are unavailable!_*\n+\n** Starting version 0.8.0, Kubebox expects {uri-cadvisor}[cAdvisor] to be deployed as a DaemonSet. See the \u003c\u003ccAdvisor\u003e\u003e section for more details;\n\n** The metrics are retrieved from the REST API, of the cAdvisor pod running on the same node as the container for which the metrics are being requested. That REST API is accessed via the API server proxy, which requires proper RBAC permission, e.g.:\n+\n[source,shell]\n----\n# Permission to list the cAdvisor pods (selected using the `spec.nodeName` field selector)\n$ kubectl auth can-i list pods -n cadvisor\nyes\n# Permission to proxy the selected cAdvisor pod, to call its REST API\n$ kubectl auth can-i get pod --subresource proxy -n cadvisor\nyes\n----\n\n== Development\n\n```sh\n$ git clone https://github.com/astefanutti/kubebox.git\n$ cd kubebox\n$ npm install\n$ node index.js\n```\n\n== Screenshots\n\nCluster events:\n++++\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://astefanutti.github.io/kubebox/events.png\"\u003e\n    \u003cimg align=\"center\" src=\"https://astefanutti.github.io/kubebox/events.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n++++\n\nShell into a container:\n++++\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://astefanutti.github.io/kubebox/exec.png\"\u003e\n    \u003cimg align=\"center\" src=\"https://astefanutti.github.io/kubebox/exec.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n++++\n\nTerminal theme support:\n++++\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://astefanutti.github.io/kubebox/theme.png\"\u003e\n    \u003cimg align=\"center\" src=\"https://astefanutti.github.io/kubebox/theme.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n++++\n\nWeb browser version:\n++++\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://astefanutti.github.io/kubebox/web.png\"\u003e\n    \u003cimg align=\"center\" src=\"https://astefanutti.github.io/kubebox/web.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n++++\n","funding_links":[],"categories":["Monitoring Services","JavaScript","Tools and Libraries","HarmonyOS","🏗相关开源项目","K8S-Tools","Tools and Plugins","tui","Developer Workspaces \u0026 Productivity","Built with blessed"],"sub_categories":["[Jenkins](#jenkins)","Command Line Tools","Windows Manager","监控工具","Windows"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastefanutti%2Fkubebox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastefanutti%2Fkubebox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastefanutti%2Fkubebox/lists"}