QBO Home Edition
- Features
- Download
- Configuration
- Start QBO API
- Web Interface
- QBO CLI
- Cluster Operations
- Node Operations
- kubectl configuration
- Logs
- Custom Kind Images
- Nginx Ingress Controller
- Istio
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
○ 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
From a Mac or Linux OS:
git clone https://git.eadem.com/alex/qbo-home.git
cd qbo-home
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
qbo
supportGitlab
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
You can create custom images and host them in Gitlab or Docker Hub. For more information on how to create custom images:
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
inotify
default settings are not set to run cluster with multiple nodes, increase the resource limits as defined byfs.inotify.max_user_watches
andfs.inotify.max_user_instances
or you may experiencetoo many open files
errors.
sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl fs.inotify.max_user_instances=512
Disable
systemd.unified_cgroup_hierarchy=0"
to run kubernetes verisons earlier thanv1.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:
Optional:
Install
jq
in Fedora
sudo dnf install jq
Start the QBO API to create clusters using
kind
images and access the web UI.
./qbo start api
Access the web interface via a web browser: http://localhost:9601/
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
Create two new cluster
dev prod
cluster
qbo add cluster dev prod | jq
Create new cluster
test
with5
nodes
qbo add cluster test -n 5 | jq
Stop cluster
test
. All nodes in clustertest
will be stopped
qbo stop cluster test | jq
Start cluster
test
.
qbo start cluster test | jq
Delete cluster
test
. Cluster will be deleted. Operation is irreversible
qbo delete cluster test | jq
Delete
all
clusters.
qbo delete cluster -A | jq
Stops node with name
node-8a774663.localhost
bfc61532
qbo stop node node-123 node-567 | jq
Starts nodes
bfc61532
qbo start node node-123 | jq
Add new a new node to cluster
test
qbo add node test | jq
Add new
2
new nodes to clustertest
qbo add node test -n 2 | jq
Scale cluster down by deleting node
node-8a774663.localhost
qbo del node node-123 | jq
Get all cluster networks
qbo get networks -A
Get
dev
andprod
cluster networks
qbo get network dev prod
Get all clusters
qbo get clusters -A
From
qbo
web terminal
export KUBECONFIG=/tmp/qbo/test.conf
kubectl get nodes
In linux
export KUBECONFIG=~/.qbo/test.conf
kubectl get nodes
Follow
qbo
api logs
qbo logs api -f
Open logs with
vi
qbo logs api
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
Follow the instructions as described in the official Istio site