Need help with kubernator?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

smpio
474 Stars 32 Forks MIT License 415 Commits 21 Opened issues

Description

Alternative Kubernetes UI

Services available

!
?

Need anything else?

Contributors list

No Data

Kubernator   Twitter

Docker Build Status GitHub last commit GitHub commit activity the past week, 4 weeks, year GitHub closed issues GitHub closed pull requests GitHub license

Kubernator
is an alternative Kubernetes UI. In contrast to high-level Kubernetes Dashboard, it provides low-level control and clean view on all objects in a cluster with the ability to create new ones, edit and resolve conflicts. As an entirely client-side app (like
kubectl
), it doesn't require any backend except Kubernetes API server itself, and also respects cluster's access control.

TL;DR

kubectl create ns kubernator
kubectl -n kubernator run --image=smpio/kubernator --port=80 kubernator
kubectl -n kubernator expose deploy kubernator
kubectl proxy

Then open service proxy URL in your browser.

Note that exposing it as ingress won't work, because the page should be on the same domain as API server. This is totally client-side app.

kubectl proxy
should be running.

Catalog: Overview

Table of Contents

Features

Catalog

Catalog offers an intuitive interface for managing Kubernetes objects (like

Deployment
,
Service
and everything else). Objects can be created, compared, modified and removed using a powerful diff editor.

Navigation Tree

Navigation tree shows objects' kinds, grouped by namespaces, and objects themselves. All API groups are fetched, which yields a list of versions and endpoints for every group. Then for all groups and versions

Kubernator
loads resources list, and then ― list of objects for every known resource. To show the tree, objects are grouped by their namespaces. Navigation has its own actions bar, which currently consists from one action ― reload namespaces.

Catalog: Navigation Tree

Extensive Caching

Kubernator
fires a lot of API calls, that's why it actively caches their responses in browser's local storage to boost loading times in subsequent uses, e.g. API groups and Swagger schemas are reloaded only when cluster is upgraded. Resources are reloaded every time the corresponding kind or namespace is being opened. And objects are reloaded again when opened in the editor.

Multiple API Versions

Every group fetches its resources using all API versions, not only the preferred one, and then merges given resources into one list considering versions priority. It means we can access objects through different API versions. Moreover, when a new object is created, an API endpoint would be choosed automatically based on the value of

apiVersion
field in its description.

Catalog: Multiple API Versions

Tabs

Tab names reflect current object's location in the navigation tree (object.namespace → object.kind → object). New objects have green tab color, modified and not submitted objects ― red tab color. Local modifications are saved even if the tab was closed and reopened again.

Catalog: Tabs

Copying Objects

When object is being copied, all unnecessary and read-only fields are automatically stripped as described in the corresponding Swagger scheme.

Catalog: Copying Objects

Actions Bar

Available actions: open a new tab copying current object; close all tabs; reload, save or delete current object; switch currently active tab to the left/right neighbour.

Catalog: Actions Bar

Keyboard Shortcuts

Most frequent actions have associated keyboard shortcuts.

Catalog: Keyboard Shortcuts

Diff Editor

Diff editor is based on the powerful

Monaco Editor
. Cursor position, scroll position and not applied updates are saved automatically for every open tab.

Catalog: Diff Editor

RBAC Viewer

RBAC viewer shows

Roles
,
ClusterRoles
,
RoleBindings
,
ClusterRoleBindings
and relationships between them in a visually intuitive way.

Controls

Simple controls pane allows to show/hide a legend, isolated nodes and extended names.

RBAC: Overview

Graph

Graph area (built with the awesome

d3
library) shows an interactive force graph of linked nodes. The graph can be paned, dragged and zoomed. Nodes are draggable too, and links also show some additional information when hovered.

RBAC: Graph

Notifications

Every error and warning shows itself in a floating message on the right top side of the window. Errors are red and don't vanish automatically as warnings do. An example of concurrent edits of the same object:

Notifications: Overview

Getting started

There are many ways to run

Kubernator
:

Install on cluster (recommended)

After installation you will have access to Kubernator just by running

kubectl proxy
. You won't have to run anything else locally. To install, run the following commands:
kubectl create ns kubernator
kubectl -n kubernator run --image=smpio/kubernator --port=80 kubernator
kubectl -n kubernator expose deploy kubernator
kubectl proxy

Then open service proxy URL in your browser.

Note that exposing it as ingress won't work, because the page should be on the same domain as API server.

kubectl proxy
should be running.

Run in docker locally

  1. Exec

    docker run -d --name=kubernator -p 3000:80 smpio/kubernator
  2. Run

    kubectl proxy
    .
  3. Open http://localhost:3000/ in your browser.

Build and run locally

  1. Install and set up

    kubectl
  2. Clone and build

    Kubernator
    :
    yarn install && yarn build
    
  3. Run Kubernetes API server:

    kubectl proxy
    
  4. Update

    proxy
    value in
    package.json
    according to the previous command's output.
  5. Run

    Kubernator
    :
    yarn start
    

Desktop app

Coming soon.

Support

Please open an issue for support.

Please contribute using Github Flow. Create a branch, add commits, and open a pull request.

MIT License

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.