Skip to content

⎈❏ Terminal and Web console for Kubernetes

License

Notifications You must be signed in to change notification settings

593769290/kubebox

 
 

Repository files navigation

Kubebox ⎈❏

%40kubebox 00ACEE

Terminal and Web console for Kubernetes

Features

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

  • ✓ Switch contexts interactively

  • ✓ Authentication support (token, username / password, private key / cert, OpenID Connect)

  • ✓ Namespace selection and pods list watching

  • ✓ Container log scrolling / watching

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

  • ✓ Container remote exec terminal

  • ❏ Object configuration editor and CRUD operations

  • ❏ Cluster and nodes views / monitoring

  • ❏ Port proxying and interactive HTTP client

  • ❏ …​

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
$ curl -Lo kubebox https://github.com/astefanutti/kubebox/releases/download/v0.4.0/kubebox-linux && chmod +x kubebox
# OSX
$ curl -Lo kubebox https://github.com/astefanutti/kubebox/releases/download/v0.4.0/kubebox-macos && chmod +x kubebox
# Windows
$ curl -Lo kubebox.exe https://github.com/astefanutti/kubebox/releases/download/v0.4.0/kubebox-windows

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:

# Make sure to replace the following fields:
# - The ingress host
# - The subject service account namespace
$ kubectl create -f https://raw.github.com/astefanutti/kubebox/master/kubernetes.yaml

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 this 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 .*

Commands

Keybinding Description

General

l, Ctrl+l

Login

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

Navigate screens
(use or Alt inside exec terminal)

,

Navigate list / form / log

Enter

Select item / submit form

Esc

Close modal window / cancel form / rewind focus

q, Ctrl+q

Exit [2]

Login

,

Navigate Kube configurations

Namespace

n

Change current namespace

r

Remote shell into container

m

Memory usage

c

CPU usage

t

Network usage

Log

g, +g

Move to top / bottom

Ctrl+u, Ctrl+d

Move one page up / down

Usage

✏️

Development

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

Terminal forever


1. Currently requires priviledged access / role.
2. Not available in Web version.

About

⎈❏ Terminal and Web console for Kubernetes

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.6%
  • Dockerfile 0.4%