Giter Club home page Giter Club logo

kubebox's People

Contributors

593769290 avatar astefanutti avatar codertao avatar dependabot[bot] avatar ensonic avatar gheinrich avatar jespersm avatar johnpoth avatar ledroide avatar liji-canva avatar lucian avatar robholland avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kubebox's Issues

Unable to view Mem/CPU/Net

I'm using 4.0 on MacOS and am unable to view resource usage. I'm met with "Resources usage metrics unavailable". There is nothing in the debug to let me know what might be going on. I am able to view resources on one of my clusters, but not any of the other ones.

Kubebox should simply work the way kubectl works

Generally Kubebox should simply work the way kubectl works. I've copied binary to kubernetes master node and ran it from there and it's asking me for credentials while kubectl works fluently.
I believe even running kubectl under the hood won't hurt.

View and select context similar to kubectl config get-contexts / use-context

Hello

Great tool. The only thing I miss is to be able to switch contexts in a way similar to how namespaces are selected. In README.md it is mentioned that there is interactive switching of contexts but I haven't found out how to do this.

It's just that I'm tired of constantly entering "kubectl config use-context" when I have to switch between clusters. I planned to write myself a script written in "dialog" to present a list of contexts and select one of them but then I found out your tool. It's great but I still miss this function in it.

If possible please add it.

Kind regards
Tom

/bin/sh: 1: Syntax error: Missing when web-ssh into any pods

If I run kubebox in kubernetes as a service, when web-ssh into a pod, it gives an error:

/bin/sh: 1: Syntax error: Missing '))'
command terminated with non-zero exit code: Error executing in Docker Container: 2
Disconnected
Type Ctrl-C to close

I'm not pretty sure if it's caused by this commit:
b795966

Unable to scroll terminal when running in iTerm

When running kubebox in a container and displaying on iTerm on apple, it is not possible to scroll back in the terminal window (R-key).
iTerm doesn't pass mouse events to curses, so mouse actions scroll the local iTerm history buffer, not the terminal session. Therefore, any output longer than the height of the screen becomes inaccessible.

kubebox crashes on pending containers

Pressing enter on a pending pod will exit kubebox with the following stacktrace:

TypeError: Cannot read property 'slice' of undefined
    at updateStatsFromCAdvisor (/kubebox/client.js:3679:151)
    at ListTable.Dashboard.pods_table.on (/kubebox/client.js:3617:21)
    at ListTable.EventEmitter._emit (/kubebox/client.js:6029:20)
    at ListTable.EventEmitter.emit (/kubebox/client.js:6052:12)
    at ListTable.List.enterSelected (/kubebox/client.js:19641:8)
    at ListTable.<anonymous> (/kubebox/client.js:19174:14)
    at ListTable.EventEmitter._emit (/kubebox/client.js:6029:20)
    at ListTable.EventEmitter.emit (/kubebox/client.js:6052:12)
    at Program.<anonymous> (/kubebox/client.js:22728:15)
    at Program.emit (events.js:160:13)
pod default/kubebox terminated (Error)

kubebox sees a terminating pod as running

Here is what I get using kubectl get pods

NAME                                        READY     STATUS        RESTARTS   AGE
my-app-debug-5fb97f97fc-pjfdg   1/1       Running       2          2d
my-app-debug-7bd446cb84-zjzvl   1/1       Terminating   0          3d

However kubebox sees it as Running :

my-app-debug-5fb97f97fc-pjfdg  Running  2d 15h
my-app-debug-7bd446cb84-zjzvl  Running  3d 4h

Search filter in namespace modal dialog

Hello!

Please add a filter to the namespace modal selection window.

Currently awfully inconvenient to choose the necessary namespace when there are more than 100...

I would be very grateful!


I was thinking of having a quick search filter in the namespaces modal. Would that work for you?

Originally posted by @astefanutti in #15 (comment)

Feature Request: `kubectl describe pod`

Thanks for an incredibly useful utility. Kubebox is now part of my daily development toolkit.

One of the most useful commands is kubectl describe pod. This command answers questions such as:

  • What image is this pod running?
  • How many restarts has the pod had?
  • What are the pod's environment variables?
  • What volumes are mounted to the pod?
  • What events have occurred in the pod's history?

All these questions are answered with one kubectl describe pod, and are critical to investigating the state of a kubernetes environment.

In my opinion, adding a Pod or Info tab to the Resources pane would be the appropriate place to display this information. This is because kubectl describe pod output is metadata about the pod, just as Memory, CPU, and Network activity are metadata about the pod.

Currently this is the only task I need to step outside of Kubebox for. If Kubebox supported this natively all my kubernetes interactions would be supported from within the app.

Thanks!

403 Error when opening remote shell into container

Hello, thank you very much for this very useful tool!
When I try opening a remote shell into any of my pods I get a 403 error back. I am wondering if you know why that might be?

The error I see in kubebox is:

Error: Failed to get resource /api/v1/namespaces/<xxx>/pods/<xxx>/exec?stdout=1&stdin=1&stderr=1&tty=1&container=main&command=%2Fbin%2Fsh&command=-c&comma │
│nd=TERM%3Dxterm+%24%28+%28type+getent+%3E+%2Fdev%2Fnull+2%3E%261+%26%26+getent+passwd+root+%7C+cut+-d%3A+-f7+2%3E%2Fdev%2Fnull%29+%7C%7C+echo+%2Fbin%2Fsh%29, status code: 403

On the other hand I am able to open a shell into the main container using kubectl exec -it <xx> /bin/sh.

Thanks!

Feature Request: `kubectl delete pod`

I just come to see this tool today and I have to say that, Damn, this is awesome. My thousand thanks and great for all of your efforts to building this.
And it would be great if it also have delete pod features like in vim ( dd )? Just my opinion.
Again many thanks guys. I love this.!!!

kubebox 0.6.0 segmentation fault on Linux

I updated to the last kubebox 0.6.0 version.

Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic

After I start the kubebox it crashes nearly in 10 seconds with the error:
Segmentation fault (core dumped)

It makes the soft unusable.

The strace log:

sudo strace -p 11043
strace: Process 11043 attached
strace: [ Process PID=11043 runs in x32 mode. ]
strace: [ Process PID=11043 runs in 64 bit mode. ]
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 72, NULL, 8)   = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8)   = 0
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 78, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
getpid()                                = 11043
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 72, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 78, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
getpid()                                = 11043
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8)   = 0
mmap(NULL, 290816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9e57d94000
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 69, NULL, 8)   = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 76, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8)   = 0
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\231\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\271\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 75, NULL, 8)   = 0
futex(0x7f9e57cbfa04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\270\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
futex(0x7f9e56cb9a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 1
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\274\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8)   = 0
futex(0x7f9e574bca04, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\264\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 72, NULL, 8)   = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
futex(0x7f9e564b6a04, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f9e5a22cddc, FUTEX_WAKE_PRIVATE, 1) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\246\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 70, NULL, 8)   = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_WRITE) = 0
mprotect(0x662d2804000, 503808, PROT_READ|PROT_EXEC) = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\247\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 73, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\207\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 74, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\217\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 77, NULL, 8)   = 0
epoll_pwait(3, [], 1024, 0, NULL, 8)    = 0
write(17, "\0337\33[55;1H\33[55;2H\33[47;90m\342\240\213\33[m\0338", 32) = 32
epoll_pwait(3, [], 1024, 66, NULL, 8)   = 0
write(8, "\1\0\0\0\0\0\0\0", 8)         = 8
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
+++ killed by SIGSEGV (core dumped) +++

ENOENT Error with AWS EKS

I am trying to use kubebox with AWS EKS. I updated to 0.6.0 which supports the exec auth. I have been unsuccessful in connecting due to the following error:

spawn aws-iam-authenticator ENOENT

Pasting in a token doesn't seem to work either.

Any ideas? What am I missing?

TypeError: Cannot read property 'certificatePath' of undefined

when I run kubebox in a kubernetes cluster without certificate,a error was raised:

[eval]:367
    if (this.user.certificatePath) {
                  ^

TypeError: Cannot read property 'certificatePath' of undefined
    at Context.getMasterApi ([eval]:367:19)
    at new Kubebox ([eval]:1218:55)
    at Object.1../lib/config/context ([eval]:31:1)
    at s ([eval]:1:254)
    at e ([eval]:1:425)
    at [eval]:1:443
    at Script.runInThisContext (vm.js:65:33)
    at Object.runInThisContext (vm.js:199:38)
    at Object.<anonymous> ([eval]-wrapper:6:22)
    at Module._compile (module.js:660:30)

Copy / paste and system clipboard integration improvements

  • Support copy to clipboard in Node:
  • Shortcut to copy, CTRL+C:
    • Currently bound to exiting the program on Node version
    • Should be changed to keep CTRL+C sending SIGINT in exec terminal
    • Or copy to clipboard if there is a text selection when pressing CTRL+C
    • Should be changed to CMD+C on Mac
  • Pasting doesn't work when text is selected:
    • Maybe we can listen for paste event and deselect text
  • Support copy / paste in log widget
    • Will be addressed in #17

Problem with scrolling logs on Windows 10

I don't know if it's intended but i can't scroll logs from selected pod
I see when there is new info added
but i can't scroll it up or down using these shortcuts
obraz

Im using release 0.3.2 on Windows 10, and i have info in Resources that "Resource usage metrics is unavailable"

Error when launching

When I try to run kubebox (on the Mac), I get the following error:

ReferenceError: os is not defined
    at new OpenIdConnect (/kubebox/client.js:186:7)
    at Client.set master_api [as master_api] (/kubebox/client.js:438:30)
    at new Kubebox (/kubebox/client.js:1705:27)
    at Object.1../lib/config/context (/kubebox/client.js:42:1)
    at o (/kubebox/client.js:1:327)
    at r (/kubebox/client.js:1:493)
    at Object.<anonymous> (/kubebox/client.js:1:522)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)

The same happens when I use the docker image.

`GLIBCXX_3.4.20' not found (required by kubebox)

Issue with running kubebox on CentOS 7 64 bits - `GLIBCXX_3.4.20' not found (required by kubebox)

$ kubebox
kubebox: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by kubebox)

$ ll /lib64/libstdc++.so.6
lrwxrwxrwx. 1 root root 19 Aug 22 17:30 /lib64/libstdc++.so.6 -> libstdc++.so.6.0.19

$ strings /lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

Help dialog

It will be cool if there is some help dialog with commands and hotkeys by pressing F1 (for example).

OpenID Connect support (IBM Cloud)

Kubebox always wants me to enter login information, whereas it just should use the defined one.

To login into our IBM cloud environment, we need to export the KUBECONFIG environment variable pointing to a configuration which includes the following:

apiVersion: v1
clusters:
- cluster:
    certificate-authority: ...pem

The .pem file is in the same folder as the kubeconfig file. I'm guessing somehow it's not read and thus I cannot pass the login screen.

Should this work out of the box? kubectl works without any problems.

kubebox and AWS EKS

This might be related to: #7

I have not been able to login using kubebox when my terminal session is logged into AWS using the aws authenticator.

How to set the pods_table label to "Pods [selected namespace]" ?

1, When I select one pod from the poslist table, the logs windows show the real log content and change the title from "Logs" to "Logs [docker-name]".

2, But in the whole web page, I don't kown which namespace I have selected.
3, So I want to say, when I select some namespace from the namespace selecting windows.
the podlist table display all pods under the namespace, in the mean time,
I want the podlist table title change from "Pods" to "Pods [selected namespace]".

4, I have studied some code from the project , and found some code like this:

resources.setLabel(Resources {grey-fg}[${container_selected}]{/grey-fg} {red-fg}TERMINATING{/red-fg});
pod_log.setLabel(Logs {grey-fg}[${container_selected}]{/grey-fg} {red-fg}TERMINATING{/red-fg});

5, So where should I place some code like
pods_table.setLabel(Pods {grey-fg}[${current_namespace}]{/grey-fg});

5, So where should I place some code like
pods_table.setLabel(Pods {grey-fg}[${current_namespace}]{/grey-fg});

Can log terminal support display Chinese words ?

kubebox obviously is a great k8s tool for our small team.

But when I setup an environment to running kubebox,
I found in the logs terminal Chinese words all changed to ?????????.
The shell windows is OK.

would you please when you are free, task a demo test and debug where is the problem.

the demo test files list:

  1. Dockerfile
FROM docker.io/alpine:3.7

COPY test.log /
COPY run.sh / 
ENV LANG="C.UTF-8"
ENTRYPOINT ["/run.sh"]
  1. run.sh
#!/bin/sh
tail -f -n90 /test.log
  1. test.log
在Docker容器bash中输入中文

在Docker容器bash中输入中文

docker alpine版本服务中显示中文

docker alpine版本服务中显示中文

docker alpine版本服务中显示中文

解决docker容器不支持中文的问题

In browser, log terminal showing:

??Docker????bash??????????                                                                                                                                                                                                                         │
│                                                                                                                                                                                                                                                   │
│??Docker????bash??????????                                                                                                                                                                                                                         │
│                                                                                                                                                                                                                                                   │
│docker alpine??????????????????                                                                                                                                                                                                                    │
│                                                                                                                                                                                                                                                   │
│docker alpine??????????????????                                                                                                                                                                                                                    │
│                                                                                                                                                                                                                                                   │
│docker alpine??????????????????                                                                                                                                                                                                                    │
│                                                                                                                                                                                                                                                   │
│????docker????????????????????                                                                                                                                                                                                                     │

In API direct request show normal result - https://kubebox.xxxx.com/master/api/v1/namespaces/namespace-dev/pods/alpine-cn-5c8584bd96-6klvl/log?follow=true&tailLines=10000&timestamps=true&container=alpine-cn&sinceTime=2019-04-18T08%3A21%3A19.334100106Z:

2019-04-18T08:21:19.333943583Z 在Docker容器bash中输入中文
2019-04-18T08:21:19.333950662Z 
2019-04-18T08:21:19.333954261Z 在Docker容器bash中输入中文
2019-04-18T08:21:19.333958322Z 
2019-04-18T08:21:19.333961629Z docker alpine版本服务中显示中文
2019-04-18T08:21:19.333965169Z 
2019-04-18T08:21:19.333968374Z docker alpine版本服务中显示中文
2019-04-18T08:21:19.333971711Z 
2019-04-18T08:21:19.333974847Z docker alpine版本服务中显示中文
2019-04-18T08:21:19.333978286Z 
2019-04-18T08:21:19.333981377Z 解决docker容器不支持中文的问题

Resources usage metrics unavailable

Hi, i got this error when i try to have metrics.

The error returned from the API server with last version of kubernetes:

Error: Failed to get resource /api/v1/nodes/<node-name>:4194/proxy/api/v1.2/docker/<dockerid>, status code: 503

Everything else works.

Do you know why ?

Support Google Kubernetes Engine

Currently kubebox does not support the cmd-args / cmd-path fields used with auth-provider in order to generate a token. This is the scheme used in GKE.

It would be great to support this scheme as well.

kubebox version 0.5.0 windows amd64 binary

It fails to run, see error output below:

λ kubebox-windows-v0.5.0.exe
C:\Apps\Bin\bundle.js:22988
  if (!this.program.isAlt) return;
                    ^

TypeError: Cannot read property 'isAlt' of undefined
    at Screen.leave (C:\Apps\Bin\bundle.js:22988:21)
    at Screen.destroy (C:\Apps\Bin\bundle.js:23090:8)
    at C:\Apps\Bin\bundle.js:22895:14
    at Array.forEach (<anonymous>)
    at process.on.Screen._exceptionHandler (C:\Apps\Bin\bundle.js:22894:30)
    at emitOne (events.js:116:13)
    at process.emit (events.js:211:7)
    at process._fatalException (bootstrap_node.js:391:26)

λ systeminfo
OS Name:                   Microsoft Windows 10 Enterprise
OS Version:                10.0.17763 N/A Build 17763
System Type:               x64-based PC

Bug with exec auth and env

PR #54 added support for exec auth, but it doesn't seem to support environment correctly.

KubeConfig from aws is of form:
user:
exec:
env:
- name: AWS_PROFILE
value: saml

But child_process.exec is expecting env to be of form {AWS_PROFILE: saml}.

Can probably submit a PR this week if I get the time to sit down.

Support Digital Ocean Kubernetes

DO kubernetes config uses an ExecCredential.
Any advice on how i could contribute here?

kube config

users:
- name: do-sfo2-async-do-admin
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1beta1
      args:
      - kubernetes
      - cluster
      - kubeconfig
      - exec-credential
      - --version=v1beta1
      - --context=default
      - {SOME GUID}
      command: doctl
      env: null

exec

basically the result of the exec here is TLS client auth certs.

$ doctl kubernetes cluster kubeconfig exec-credential --version=v1beta1 --context=default {THE GUID FROM ABOVE}

{
  "kind": "ExecCredential",
  "apiVersion": "client.authentication.k8s.io/v1beta1",
  "spec": {},
  "status": {
    "expirationTimestamp": "2019-07-28T17:43:57Z",
    "clientCertificateData": "-----BEGIN CERTIFICATE-----\n*****\n-----END CERTIFICATE-----\n",
    "clientKeyData": "-----BEGIN RSA PRIVATE KEY-----\n*****\n-----END RSA PRIVATE KEY-----\n"
  }
}

Authentication failed because "/" endpoint returns 403

I can query my k8s cluster using my certiticates and key :

k cluster-info
Kubernetes master is running at https://......
Grafana is running at http://......
Heapster is running at https://.....
KubeDNS is running at https://..../proxy
Kubemonitor is running at http://.....

But kubebox complains and asks me for a username/password/token.
screen_shot_2018-10-17_at_2_45_55_pm

Any workaround ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.