QBO

QBO is the fastest and easiest k8s deployment out there. It uses https://kind.sigs.k8s.io/ node images to deploy k8s clusters everywhere. It has a web graphical interface and a Websockets API. It doesn't require virtual machines. It is written in C and runs in docker.

Stars
6
Forks
2
Open issues
0
Closed issues
1
Last commit
12 months ago
Watchers
6
Total releases
0
Total commits
40
Open PRs
0
Closed PRs
0
Repo URL
Platform
License
mit
Category
Technology
Shell
Offers premium version?
NO
Proprietary?
NO
About

"Unlocking the power of cloud computing for anyone, anywhere."

  • QBO Home (Community Edition)
  • Features
  • Download
  • Configuration
    • Registries
      • Docker
      • Gitlab

    • Images
    • MacOS
    • Linux

      • inotify
      • cgroups

  • Start QBO API
  • Web Interface

    • MAC
    • Linux

  • QBO CLI
  • Cluster Operations

    • Add Cluster
    • Stop cluster
    • Start cluster
    • Delete cluster

  • Node Operations

    • Stop Node
    • Start Node
    • Add Node
    • Delete Node
    • Get Networks
    • Get Clusters

  • kubectl configuration
  • Logs
  • Custom Kind Images
  • Nginx Ingress Controller
  • Istio
QBO Home (Community Edition)

Qbo is a metal Kubernetes distribution delivering the utmost performance by running in physical hardware with zero virtualization.

Qbo is a CNCF Certified Kubernetes Distribution https://www.cncf.io/certification/software-conformance/#logos

Compatible with Kind images https://hub.docker.com/r/kindest/node/tags

Latest QBO API Docker images: https://hub.docker.com/repository/docker/eadem/qbo-api

Watch the video

Features

○ Installation
■ Local machine

○ OS
■ Linux
■ MacOS

○ Multi cluster support
○ Cluster scaling

○ Cluster operations
■ Add cluster
■ Delete cluster
■ Stop cluster
■ Start cluster

○ Node operations
■ Add node
■ Delete node
■ Start node
■ Stop node

○ Kubernetes
■ Kubeconfig management

○ CNI
■ kindnet

○ Registry
■ Gitlab Regsitry
■ Docker Hub

■ Kind Kubernetes image support
■ Custom image support

○ Management
qbo Websockets API
qbo CLI
■ Web interface
■ Real Time logs
■ Web terminal

Download

From a Mac or Linux OS:

git clone https://git.eadem.com/alex/qbo-home.git
cd qbo-home
Configuration Registries Docker

To use default kind images you can set the follwing configuration:

cat << EOF > ~/.qbo/api.json
{
"registry_user":"kindest",
"registry_auth":"hub.docker.com",
"registry_token":"",
"registry_repo":"",
"registry_hostname":"hub.docker.com",
"registry_type":"docker"
}
EOF
Gitlab

qbo support Gitlab registries and authentication.

Sample config:

cat << EOF > ~/.qbo/api.json
{
"registry_user":"alex",
"registry_auth":"git.gitlab.com",
"registry_token":"4Xo5X241L5vmsFSpkzXX",
"registry_repo":"qbo-home",
"registry_hostname":"registry.gitlab.com",
"registry_type":"gitlab"
}
E0F

Images

You can create custom images and host them in Gitlab or Docker Hub. For more information on how to create custom images:

https://kind.sigs.k8s.io/docs/design/node-image/

MacOS

Install Docker Desktop on Mac https://docs.docker.com/desktop/install/mac-install/

QBO requires docker.raw.sock to work in MAC OS. While Docker Desktop is running, run the following cmds to fix this:

sudo rm /var/run/docker.sock
sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.raw.sock /var/run/docker.sock

Restart Docker Desktop

Optional:

Install jq in MacOS

brew install jq
Linux inotify

inotify default settings are not set to run cluster with multiple nodes, increase the resource limits as defined by fs.inotify.max_user_watches and fs.inotify.max_user_instances or you may experience too many open files errors.

sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl fs.inotify.max_user_instances=512

cgroups

Disable systemd.unified_cgroup_hierarchy=0" to run kubernetes verisons earlier than v1.24.0

Fedora

sudo grubby --update-kernel=sudo grubby --default-kernel --args="systemd.unified_cgroup_hierarchy=0"
sudo reboot

Ubuntu

sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=0 quiet splash"
sudo update-grub
sudo reboot

References:

https://kind.sigs.k8s.io/docs/user/known-issues/

Optional:

Install jq in Fedora

sudo dnf install jq
Start QBO API

Start the QBO API to create clusters using kind images and access the web UI.

./qbo start api 
Web Interface

Access the web interface via a web browser at:

MAC

http://localhost:9601/

Linux

http://172.17.0.2:9601/
or

http://localhost:9601/

QBO CLI

qbo start api                         -- start api
 -c                                   -- start clean
qbo stop api                          -- stop api api
qbo attach terminal                   -- attach api. (CTRL-p, CTL-q) to exit
qbo logs                              -- get api logs
 -f                                   -- follow logs
qbo add cluster {cluster_name ...}
 -n {number_of_nodes}
qbo delete cluster {cluster_name ... | -A}
qbo stop cluster {cluster_name ... | -A}
qbo start cluster {cluster_name ... | -A}
qbo add node {cluster_name ... }
 -n {numer_of_nodes}
qbo get network(s) {cluster_name ... | -A}
qbo get cluster(s) {cluster_name ... | -A}
qbo get image(s)
qbo version
qbo help

Cluster Operations Add Cluster

Create two new cluster dev prod cluster

qbo add cluster dev prod | jq

Create new cluster test with 5 nodes

qbo add cluster test -n 5 | jq

Stop cluster

Stop cluster test. All nodes in cluster test will be stopped

qbo stop cluster test | jq

Start cluster

Start cluster test.

qbo start cluster test | jq

Delete cluster

Delete cluster test. Cluster will be deleted. Operation is irreversible

qbo delete cluster test | jq

Delete all clusters.

qbo delete cluster -A | jq

Node Operations Stop Node

Stops node with name node-8a774663.localhost bfc61532

qbo stop node node-123 node-567 | jq

Start Node

Starts nodes bfc61532

qbo start node node-123 | jq

Add Node

Add new a new node to cluster test

qbo add node test | jq

Add new 2 new nodes to cluster test

qbo add node test -n 2 | jq

Delete Node

Scale cluster down by deleting node node-8a774663.localhost

qbo del node node-123 | jq

Get Networks

Get all cluster networks

qbo get networks -A

Get dev and prod cluster networks

qbo get network dev prod
Get Clusters

Get all clusters

qbo get clusters -A
kubectl configuration

From qbo web terminal

export KUBECONFIG=/tmp/qbo/test.conf
kubectl get nodes

In linux

export KUBECONFIG=~/.qbo/test.conf
kubectl get nodes
Logs

Follow qbo api logs

qbo logs api -f

Open logs with vi

qbo logs api
Custom Kind Images

images/README.md

Nginx Ingress Controller

Use the kind provider deploy.yaml https://github.com/kubernetes/ingress-nginx/tree/main/deploy/static/provider/kind

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
Istio

Follow the instructions as described in the official Istio site

https://istio.io/latest/docs/setup/install/istioctl/

Alternative Projects

Subscribe to Open Source Businees Newsletter

Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.

We'll never share your email with anyone else.