Skipper is an interactive terminal tool for managing multiple kubernetes clusters.
Before you start, you will need to have python3 and pip3 installed. Then clone the repo, and run
chmod +x ./installer && ./installer
In the project directory, run
./skipper
On startup, Skipper will locate your kube-config by looking at the KUBECONFIG
environment variable. If this is empty, it will look at the default location (~/.kube/config
).
Skipper loads your kube-config in order to get information from your clusters, and will never create, modify, or delete any of your kubernetes resources.
Logs are stored in the logs/
directory. flask.log
contains output from the flask webserver, crawler.log
contains output from the crawler, and skipper.log
contains output from the frontend curses application.
Skipper usage walkthrough video: using skipper
->
or ENTER
: navigate into a resource
<-
or BACKSPACE
: navigate out of a resource
[left pane] up
and down
arrows: go up / down a list of resources
[right pane] up
and down
arrows: scroll
Cluster mode presents your kubernetes resources in the following hierarchy:
cluster -> ns -> {deployment,daemonset,statefulset,service} -> pod
Note: currently standalone pods (those not being managed by a deployment) do not show up in cluster mode.
App mode presents your kubernetes resources in the following hierarchy:
Application -> Deployable -> {deployment,daemonset,statefulset,service} -> pod
Application and Deployable are custom resource definitions specified by IBM's Multicloud Manager. If none of your clusters have the Application or Deployable crds, app mode will be disabled for you.
Anomaly mode presents a curated shortlist of pods across your clusters that are in an error state.
Query mode lets you search for resources across all your clusters. Currently query mode supports keyword search and filters. Supported filters are app
, cluster
, ns
, kind
. You can apply as many filters as you'd like in succession.
Example queries:
app:my-app
Will return all kubernetes resources that belong to the Application named my-app.
kind:pod frontend
Will return all pods with 'frontend' in the name.
cluster:iks-extremeblue ns:default
Will return all kubernetes resources that reside in the default namespace of the cluster named iks-extremeblue.
Whenever you have a resource selected and switch to app / cluster mode, Skipper will bring you to the location of the selected resource within the app / cluster hierarchy.
A high level overview of how Skipper works under the hood can be found here: skipper.pdf
- Convert run script to a python script (currently in-progress on run-py branch)
- Package Skipper as a python package and upload to the Python Package Index
- Have Skipper automatically adjust when terminal window is resized
- Add additional search bar keybinds for highlighting, copy, paste, cut
- Add infrastructure mode to see the
Node -> pod
hierarchy - Add ability to exec into containers within pods
- Add ability to open yamls / logs in preferred editor
- Script Skipper backend to allow users to run commands in terminal
- Add related resources to summary panel
Extreme Blue 2019, RTP Lab
Sponsored by Dave Lindquist and the IBM Cloud Private team
Name | School | Major | Role | |
Patricia Lu | MIT | EECS | EB Technical Intern | pjlu01@gmail.com |
Jane Hsieh | Oberlin College | CS (CSCI) | EB Technical Intern | jwhsieh98@gmail.com |
Tom Gong | UT Austin | CS / Marketing | EB Technical Intern | tom.gong@utexas.edu |
Caitlin Endyke | UMich | MBA / HCI | EB Offering Management Intern | endyke@umich.edu |
- Ross Grady (RTP EB Lab Manager)
- Shikha Srivastava
- Chris Waldon
- Ethan Swartzentruber
- Ryan Smith
- Yu Cao
- Jorge Padilla
- Kevin Myers
- Michael Elder
- Charles Quincy
- Sanjay Joshi