Code Monkey home page Code Monkey logo

multicloud-incident-response-navigator's Introduction

Skipper

Skipper is an interactive terminal tool for managing multiple kubernetes clusters.

Installation and Setup

Before you start, you will need to have python3 and pip3 installed. Then clone the repo, and run

chmod +x ./installer && ./installer

Running Skipper

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

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.

Usage

Skipper usage walkthrough video: using skipper

navigation keybinds

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

cluster mode screenshot

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

app mode screenshot

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

anomaly mode screenshot

Anomaly mode presents a curated shortlist of pods across your clusters that are in an error state.

query mode

query mode screenshot

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.

modeswitching

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.

Architecture Overview

A high level overview of how Skipper works under the hood can be found here: skipper.pdf

Future Work

  • 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

Credits

Extreme Blue 2019, RTP Lab

Sponsored by Dave Lindquist and the IBM Cloud Private team

Interns

Name School Major Role Email
Patricia Lu MIT EECS EB Technical Intern [email protected]
Jane Hsieh Oberlin College CS (CSCI) EB Technical Intern [email protected]
Tom Gong UT Austin CS / Marketing EB Technical Intern [email protected]
Caitlin Endyke UMich MBA / HCI EB Offering Management Intern [email protected]

Mentors

  • 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

multicloud-incident-response-navigator's People

Contributors

sandygogo avatar imgbotapp avatar janeon avatar stevemar avatar pjlu01 avatar

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.