b0bcacfdf0c9553712428b72b523df65e51096b9
===========================
Kubernetes Operational View
===========================
**This project is in pre-alpha, but it might already be useful.**
.. image:: screenshot.png
:alt: Screenshot
Goal: provide a common operational picture for multiple Kubernetes clusters.
* Render nodes and indicate their overall status ("Ready")
* Show node capacity and resource usage (CPU, memory)
* Render one "box" per CPU and fill up to sum of pod CPU requests/usage
* Render vertical bar for total memory and fill up to sum of pod memory requests/usage
* Render individual pods
* Indicate pod status by border line color (green: ready/running, yellow: pending, red: error etc)
* Show current CPU/memory usage (gathered from Heapster) by small vertical bars
* System pods ("kube-system" namespace) will be grouped together at the bottom
* Provide tooltip information for nodes and pods
* Animate pod creation and termination
What it is not:
* It's not a replacement for the `Kubernetes Dashboard`_. The Kubernetes Dashboard is a general purpose UI which allows managing applications.
* It's not a monitoring solution. Use your preferred monitoring system to alert on production issues.
* It's not a operation management tool. Kubernetes Operational View does not allow interacting with the actual cluster.
Usage
=====
You can run the app locally:
.. code-block:: bash
$ pip3 install -r requirements.txt
$ kubectl proxy &
$ (cd app && npm start &)
$ ./app.py
Now direct your browser to http://localhost:8080
You can find example Kubernetes manifests for deployment in the ``deploy`` folder.
It should be as simple as:
.. code-block:: bash
$ kubectl apply -f deploy/deployment.yaml -f deploy/service.yaml
Afterwards you can open "kube-ops-view" via the kubectl proxy:
.. code-block:: bash
$ kubectl proxy
Now direct your browser to http://localhost:8001/api/v1/proxy/namespaces/default/services/kube-ops-view/
Mock Mode
=========
You can start the app in "mock mode" to see all UI features without running any Kubernetes cluster:
.. code-block:: bash
$ pip3 install -r requirements.txt
$ (cd app && npm start &)
$ MOCK=true ./app.py
Configuration
=============
The following environment variables are supported:
``CLUSTERS``
Comma separated list of Kubernetes API server URLs. It defaults to ``http://localhost:8001/`` (default endpoint of ``kubectl proxy``).
``CREDENTIALS_DIR``
Directory to read (OAuth) credentials from --- these credentials are only used for non-localhost cluster URLs.
``DEBUG``
Set to "true" for local development to reload code changes.
``MOCK``
Set to "true" to mock Kubernetes cluster data.
Supported Browsers
==================
The UI uses WebGL and ECMAScript 6 features.
The following browsers are known to work:
* Chrome/Chromium 53.0+
* Mozilla Firefox 49.0+
See the `ECMAScript 6 Compatibility Table`_ for details on supported browser versions.
License
=======
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
.. _Kubernetes Dashboard: https://github.com/kubernetes/dashboard
.. _ECMAScript 6 Compatibility Table: https://kangax.github.io/compat-table/es6/
Description
Languages
JavaScript
60.7%
Python
34.9%
HTML
1.7%
Makefile
1.6%
Dockerfile
1.1%