Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/2-alchemists/krossboard-ui

User Interface for Krossboard - A Leading Mult-cluster, Cross-Cloud & Cross-Distribution Kubernetes Usage Accounting & Analytics. Actively tested against Amazon EKS, Microsoft AKS, Google GKE, Red Hat OpenShift, & vanilla distros.
https://github.com/2-alchemists/krossboard-ui

cloud cost-optimization kubernetes

Last synced: about 2 months ago
JSON representation

User Interface for Krossboard - A Leading Mult-cluster, Cross-Cloud & Cross-Distribution Kubernetes Usage Accounting & Analytics. Actively tested against Amazon EKS, Microsoft AKS, Google GKE, Red Hat OpenShift, & vanilla distros.

Awesome Lists containing this project

README

        

![license](https://img.shields.io/github/license/2-alchemists/krossboard-ui.svg?label=License&style=for-the-badge)
[![test-and-build]()](https://github.com/2-alchemists/krossboard-ui/actions/workflows/build.yml)
---

# Overview

`krossboard-ui` is the user interface component of [Krossboard](https://github.com/2-alchemists/krossboard).

Key features of Krossboard:

* **Multi-Kubernetes Data Collection**: Periodically collecting raw metrics related to containers, pods and nodes from several Kubernetes source clusters. By design, the data collection period is 5 minutes.
* **Powerful Analytics Processing**: Internally process raw metrics to produce insightful Kubernetes usage accounting and analytics metrics. By design, these analytics metrics are handled on a hourly-basis, for every namespace, cluster, and also globally.
* **Insightful Usage Accounting**: Periodically process usage accounting, for each cluster and cluster's namespace. In the current implementation, the accounting is handled by design for the following period: daily for the 14 last days, monthly for the 12 last months.
* **REST API**: Exposes the generated analytics data to third-party systems. For example, [Krossboard UI](https://github.com/2-alchemists/krossboard-ui) consumes this API to produce its charts and dashboards.
* **Easy to deploy**: Krossboard can be easily deployed through a virtual machine on-premises or on public clouds. In a close future, it's expected to be deployed through a Kubernetes operator. It can be set up to automatically discover and handle Kubernetes clusters backed by Amazon EKS, Google GKE, Microsoft AKS.

![krossboard-architecture-overview](krossboard-architecture-overview.png)

## Getting Started with Krossboard

* [Setup Krossboard for Multi-Cloud or Cross-Kubernetes Distributions](https://krossboard.app/docs/60_deploy-for-cross-cloud-and-on-premises-kubernetes/)
* [Setup Krossboard for Amazon EKS](https://krossboard.app/docs/50_deploy-for-amazon-eks/)
* [Setup Krossboard for Azure AKS](https://krossboard.app/docs/30_deploy-for-azure-aks/)
* [Setup Krossboard for Google GKE](https://krossboard.app/docs/20_deploy-for-google-gke/)

## Development Setup for Krossboard UI

As prerequisites, the following tools must be properly installed:

* [Node.js](https://nodejs.org/en/download/) LTS v12.16.2 - codename `Erbium` (including [npm](https://www.npmjs.com/) v6.14.4)
* [yarn](https://yarnpkg.com/lang/en/)

[Node.js][Node.js] environment can be checked with the following command line:

```sh
> node --version
v12.16.2
```

To ease with [Node.js][Node.js] installation, you can use [nvm](https://github.com/nvm-sh/nvm), a version manager for [Node.js][Node.js], designed to be installed per-user, and invoked per-shell.

Once installed, you can then configure the [Node.js][Node.js] environment this way:

```sh
> nvm install 12.16.2
Now using node v12.16.2 (npm v6.14.4)
```

### Initialization

Install all the dependencies required by the project by typing the following command line (this can take a while):

```sh
> yarn
...
✨ Done in 33.90s.
```

### Start "develop" mode

In develop mode, you'll need a backend to serve the data on port 1519. A mocked one is available by typing the following command:

```sh
> yarn start-server
```

Then launch the front with the following command:

```sh
> yarn develop
```

Open `http://localhost:1234`.

### Build project

```sh
> yarn build

```

Generated files are then available in the `dist` folder.

### Commits

The project follow [Conventional Commits](https://www.conventionalcommits.org/), a set of rules regarding how you should commit your code to bring you the great benefit.

ℹ The type of the commits are used to determine the next version of the product following semantic versionning.

For this, rules are enforced by a pre-commit hook mananaged by [husky](https://github.com/typicode/husky).

### Release

The process of releasing the product is managed by [standard-version](https://github.com/conventional-changelog/standard-version).

The tool is responsible to establish the next release version based on the commits from the previous release made, then bump this version in the `package.json` file and finally tag the repository.

ℹ The version contained in the `package.json` is the previous one (the last available one).

Perform the release is pretty straight-forward:

```sh
> yarn release
```

⚠️ For the very first release, the following command line must be exected instead:

```sh
> yarn release --first-release
```

ℹ Note that a dry mode is available to test the release process safely:

```sh
> yarn release --dry-run
```

[Node.js]: https://nodejs.org/

# Open to Contributions

We encourage feedback and always make our best to handle any issues as fast as possible.

Don't hesitate to submit a issue or make a feature request.

All contributions, including, code and documentation, are accepted under the terms of [GNU Affero General Public License](LICENSE.md).

Read the [code of conduct](CODE-OF-CONDUCT.md) to learn more about our contribution guideline.

[![StackShare](http://img.shields.io/badge/tech-stack-0690fa.svg?style=flat)](https://stackshare.io/2alchemists/krossboard)