Skip to content

alexqbo/qbo-home

Repository files navigation

Certified Kubernetes

QBO Home Edition

QBO is the fastest and easiest k8s deployment out there. It uses Docker in Docker https://kind.sigs.k8s.io/ node images to deploy k8s clusters in seconds in MAC and Linux. 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.

See here for latest image: https://hub.docker.com/repository/docker/eadem/qbo-api

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

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: http://localhost:9601/

QBO web interface

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/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages