All Projects → astefanutti → Kubebox

astefanutti / Kubebox

Licence: mit
⎈❏ Terminal and Web console for Kubernetes

Programming Languages

javascript
184084 projects - #8 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to Kubebox

Wtf
The personal information dashboard for your terminal
Stars: ✭ 12,973 (+599.35%)
Mutual labels:  terminal, tui, dashboard, cui
C Sharp Console Gui Framework
A GUI framework for C# console applications
Stars: ✭ 838 (-54.82%)
Mutual labels:  terminal, console, tui, gui
Clui
Command Line User Interface (Console UI inspired by TurboVision)
Stars: ✭ 561 (-69.76%)
Mutual labels:  terminal, console, tui, gui
Goaccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
Stars: ✭ 14,096 (+659.89%)
Mutual labels:  terminal, tui, monitoring, dashboard
Devdash
🍱 Highly Configurable Terminal Dashboard for Developers and Creators
Stars: ✭ 939 (-49.38%)
Mutual labels:  terminal, tui, monitoring, dashboard
S Tui
Terminal-based CPU stress and monitoring utility
Stars: ✭ 2,825 (+52.29%)
Mutual labels:  terminal, console, tui, monitoring
Sauron Native
Truly cross platform, truly native. multiple backend GUI for rust
Stars: ✭ 587 (-68.36%)
Mutual labels:  terminal, tui, gui
Htop
htop is an interactive text-mode process viewer for Unix systems. It aims to be a better 'top'.
Stars: ✭ 5,626 (+203.29%)
Mutual labels:  terminal, console, tui
Phetch
🐭 quick lil gopher client for your terminal
Stars: ✭ 108 (-94.18%)
Mutual labels:  terminal, console, tui
Pulsemixer
CLI and curses mixer for PulseAudio
Stars: ✭ 441 (-76.23%)
Mutual labels:  terminal, console, tui
Ueberzug
ueberzug is a command line util which allows to display images in combination with X11
Stars: ✭ 711 (-61.67%)
Mutual labels:  terminal, console, tui
Vim Quickui
The missing UI extensions for Vim 8.2 (and NeoVim 0.4) !! 😎
Stars: ✭ 714 (-61.51%)
Mutual labels:  terminal, tui, gui
Termenv
Advanced ANSI style & color support for your terminal applications
Stars: ✭ 555 (-70.08%)
Mutual labels:  terminal, console, tui
Python Progressbar
Progressbar 2 - A progress bar for Python 2 and Python 3 - "pip install progressbar2"
Stars: ✭ 682 (-63.23%)
Mutual labels:  terminal, console, gui
Tui Rs
Build terminal user interfaces and dashboards using Rust
Stars: ✭ 6,081 (+227.82%)
Mutual labels:  terminal, tui, dashboard
Clrcli
CLRCLI is an event-driven library for building line-art user interfaces in C#/.Net command-line applications.
Stars: ✭ 124 (-93.32%)
Mutual labels:  console, tui, gui
Zui
⬢ Zsh User Interface library – CGI+DHTML-like rapid application development with Zsh
Stars: ✭ 95 (-94.88%)
Mutual labels:  terminal, console, tui
Nnn
n³ The unorthodox terminal file manager
Stars: ✭ 13,138 (+608.25%)
Mutual labels:  terminal, console, tui
Lazyhub
lazyhub - Terminal UI Client for GitHub using gocui.
Stars: ✭ 133 (-92.83%)
Mutual labels:  terminal, console, tui
Stig
TUI and CLI for the BitTorrent client Transmission
Stars: ✭ 360 (-80.59%)
Mutual labels:  terminal, console, tui

Kubebox ⎈❏

Terminal and Web console for Kubernetes

Features

  • ✓ Configuration from kubeconfig files (KUBECONFIG environment variable or $HOME/.kube)

  • ✓ Switch contexts interactively

  • Authentication support (bearer token, basic auth, private key / cert, OAuth, OpenID Connect, Amazon EKS, Google Kubernetes Engine, Digital Ocean)

  • ✓ Namespace selection and pods list watching

  • ✓ Container log scrolling / watching

  • ✓ Container resources usage (memory, CPU, network, file system charts) [1]

  • ✓ Container remote exec terminal

  • ✓ Cluster, namespace, pod events

  • ❏ Object configuration editor and CRUD operations

  • ❏ Cluster and nodes views / monitoring

See the Screenshots section for some examples, and follow %40kubebox 00ACEE for some updates.

Run

The following alternatives are available for you to use Kubebox, depending on your preferences and constraints:

Executable

Download the Kubebox standalone executable for your OS:

# Linux (x86_64)
$ curl -Lo kubebox https://github.com/astefanutti/kubebox/releases/download/v0.9.0/kubebox-linux && chmod +x kubebox
# Linux (ARMv7)
$ curl -Lo kubebox https://github.com/astefanutti/kubebox/releases/download/v0.9.0/kubebox-linux-arm && chmod +x kubebox
# OSX
$ curl -Lo kubebox https://github.com/astefanutti/kubebox/releases/download/v0.9.0/kubebox-macos && chmod +x kubebox
# Windows
$ curl -Lo kubebox.exe https://github.com/astefanutti/kubebox/releases/download/v0.9.0/kubebox-windows.exe

Then run:

$ ./kubebox

Server

Kubebox can be served from a service hosted in your Kubernetes cluster. Terminal emulation is provided by Xterm.js and the communication with the Kubernetes master API is proxied by the server.

To deploy the server in your Kubernetes cluster, run:

$ kubectl apply -f https://raw.github.com/astefanutti/kubebox/master/kubernetes.yaml

To shut down the server and clean-up resources, run:

$ kubectl delete namespace kubebox

For the Ingress resource to work, the cluster must have an Ingress controller running. See Ingress controllers for more information.

Alternatively, to deploy the server in your OpenShift cluster, run:

$ oc new-app -f https://raw.github.com/astefanutti/kubebox/master/openshift.yaml

Kubectl

You can run Kubebox as an in-cluster client with kubectl, e.g.:

$ kubectl run kubebox -it --rm --env="TERM=xterm" --image=astefanutti/kubebox --restart=Never

If RBAC is enabled, you’ll have to use the --serviceaccount option and reference a service account with sufficient permissions.

Docker

You can run Kubebox using Docker, e.g.:

$ docker run -it --rm astefanutti/kubebox

You may want to mount your home directory so that Kubebox can rely on the ~/.kube/config file, e.g.:

$ docker run -it --rm -v ~/.kube/:/home/node/.kube/:ro astefanutti/kubebox

Online

Kubebox is available online at https://astefanutti.github.com/kubebox. Note that it requires this address to match the allowed origins for CORS by the API server. This can be achived with the Kubernetes API server CLI, e.g.:

$ kube-apiserver --cors-allowed-origins .*

Authentication

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

Executable Docker Online

OpenID Connect

✔️

✔️

✔️[2]

Amazon EKS

✔️

Digital Ocean

✔️

Google Kubernetes Engine

✔️

If the mode you’re using isn’t supported, you can refresh the authentication token/certs manually and update your kubeconfig file accordingly.

cAdvisor

Kubebox relies on cAdvisor to retrieve the resource usage metrics. Before 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 kubernetes#68522.

Starting version 0.8.0, Kubebox expects cAdvisor to be deployed as a DaemonSet. This can be achieved with:

$ kubectl apply -f https://raw.githubusercontent.com/astefanutti/kubebox/master/cadvisor.yaml

It’s recommended to use the provided cadvisor.yaml file, that’s tested to work with Kubebox. However, the DaemonSet example, from the cAdvisor project, should also work just fine. Note that the cAdvisor containers must run with a privileged security context, so that they can access the container runtime on each node.

You 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. You may also have to provide the path of your cluster container runtime socket, in case it’s not following the usual convention.

Hotkeys

Keybinding Description

General

l, Ctrl+l

Login

n

Change current namespace

[Shift+],
[Alt+]1, …​, 9

Navigate screens
(use Shift or Alt inside exec terminal)

Tab, Shift+Tab

Change focus within the active screen

,

Navigate list / form / log

PgUp, PgDn

Move one page up / down

Enter

Select item / submit form

Esc

Close modal window / cancel form

Ctrl+z

Close current screen

q, Ctrl+q

Exit [3]

Login

,

Navigate Kube configurations

Pods

Enter

Select pod / cycle containers

r

Remote shell into container

m

Memory usage

c

CPU usage

t

Network usage

f

File system usage

e

Pod events

Shift+e

Namespace events

Ctrl+e

Cluster events

FAQ

  • Resources usage metrics are unavailable!

    • Starting version 0.8.0, Kubebox expects cAdvisor to be deployed as a DaemonSet. See the cAdvisor section for more details;

    • 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.:

      # Permission to list the cAdvisor pods (selected using the `spec.nodeName` field selector)
      $ kubectl auth can-i list pods -n cadvisor
      yes
      # Permission to proxy the selected cAdvisor pod, to call its REST API
      $ kubectl auth can-i get pod --subresource proxy -n cadvisor
      yes

Development

$ git clone https://github.com/astefanutti/kubebox.git
$ cd kubebox
$ npm install
$ node index.js

Screenshots

Cluster events:

Shell into a container:

Terminal theme support:

Web browser version:


1. Requires cAdvisor to be deployed as a DaemonSet. See the cAdvisor section for more details.
2. Custom IDP certificate authority files are not supported in Web versions.
3. Not available in Web versions.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].