• Stars
    star
    798
  • Rank 57,078 (Top 2 %)
  • Language
    TypeScript
  • License
    Apache License 2.0
  • Created about 1 year ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

k'exp - Kubernetes Explorer

k'exp - Kubernetes Explorer

Understand Kubernetes - the visual way. Not yet another attempt to manage production clusters in the browser.

k'exp is for:

  • Learning and exploring Kubernetes capabilities
  • Application development (object graph presets for every app)
  • Controller and operator development (dynamic object graphs)
  • [coming soon] Postman-like client and request builder for Kubernetes API

k'exp can reflect the state of your cluster in real-time:

k'exp in action

k'exp can also give you a quick overview of "related" objects:

k'exp in action

...as well as show object-specific insights:

k'exp in action

In the wild

You can try k'exp at every Kubernetes Playground on iximiuz Labs. Some tutorials also use k'exp to visualize Kubernetes objects and their relationships:

You can also find a few short demos on YouTube.

Installation

Grab the latest release from GitHub:

GOOS=linux
GOARCH=amd64

curl -Ls https://github.com/iximiuz/kexp/releases/latest/download/kexp_${GOOS}_${GOARCH}.tar.gz | tar xvz

sudo mv kexp /usr/local/bin

At the moment, the only system kexp is actively tested on is Linux amd64, but builds for Darwin amd64/arm64 and Linux arm64 are also available.

Usage

It's a statically linked Go binary with an embedded UI. If you already have kubectl configured to access your cluster(s), you can run kexp too - it uses the same KUBECONFIG discovery logic.

By default, kexp starts a server on localhost:5173:

kexp

open localhost:5173

Alternatively, you can specify a custom address:

kexp --host 0.0.0.0 --port 8090

How it works

kexp is a daemon that uses the local KUBECONFIG to access Kubernetes API. Thus, it's as powerful (and potentially destructive!) as your kubectl can get. The daemon lists Kubernetes API resources and objects, may start a bunch of watchers for the objects of interest, and even delete objects if you ask it to (via the UI). The UI is a single-page application written in TypeScript and Vue and embedded into the daemon binary.

Development

Pre-requisites:

go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest

cd ui
npm install

# Optional
kind create cluster
# ...or
minikube start

Running the dev server and the UI is easy:

# In terminal 1
make back-run-dev

# In terminal 2
make front-run-dev

After that, you can access the UI at http://localhost:5173.

Contributing

Contributions are welcome!

More Repositories

1

cdebug

cdebug - a swiss army knife of container debugging
Go
1,310
star
2

client-go-examples

Collection of mini-programs demonstrating Kubernetes client-go usage.
Go
1,012
star
3

docker-to-linux

Make bootable Linux disk image (ab)using Docker
Makefile
658
star
4

awesome-container-tinkering

List of awesome tools to tinker with containers.
582
star
5

pq

Parse and Query log files as time series
Rust
377
star
6

labctl

iximiuz Labs control - start remote microVM playgrounds from the command line.
Go
181
star
7

conman

Simplistic container manager
Go
110
star
8

flask-gevent-tutorial

How to use Flask with gevent (uWSGI and Gunicorn editions)
Python
93
star
9

simple-event-loop

Fully-functional Event Loop in 100 Lines of Python
Python
62
star
10

prometheus-playground

Prometheus Playground
Python
47
star
11

shimmy

Simplistic container runtime shim
Rust
39
star
12

ptyme

Simplest possible example of PTY usage
C
33
star
13

goimagego

goimagego - work with container images in Go (showcase)
Go
22
star
14

golife.c

Conway's Game of Life written in C and compiled to WebAssembly
C
20
star
15

envoy-playground

Container-based playground showing various capabilities of service proxy pattern.
Makefile
18
star
16

node-diskusage-ng

Get disk usage info in pure JS via OS built-in tools
JavaScript
17
star
17

wsmux

wsmux - a simple WebSocket tunnel server
Go
17
star
18

reapme

Playing with Linux processes termination in Rust
Rust
15
star
19

nim-2048

The 2048 game implementation in nim
Nim
14
star
20

producer-consumer-vis

Producer-consumer problem visualization
JavaScript
13
star
21

popen2

popen2() - bidirectional popen()
C
12
star
22

cancharts

Lightweight HTML5 canvas charts
JavaScript
11
star
23

readlines-ng

Tiny and fast async generator to read streams line by line
JavaScript
7
star
24

nom-parser-example

nom parser example
Rust
5
star
25

algorithms

Collection of different kind of algorithms
Scheme
4
star
26

todolist

A simple client-server TODO app
Go
2
star
27

multi_reader.rs

MultiReader - a composite reader implementation
Rust
2
star
28

echelon0

First echelon of logs analysis
Rust
2
star
29

js-itertools

Attempt to port Python's itertools to JavaScript
JavaScript
2
star
30

x86emu-py

Python
1
star
31

dotfiles

My dotfiles
Vim Script
1
star
32

CareersAnalyzer-web

CSS
1
star
33

node-express-ex-boilerplate

ExpressJS App Extended Boilerplate
JavaScript
1
star
34

CareersAnalyzer-grabber

Python
1
star