![Getdeck Beiboot Logo](https://github.com/Getdeck/beiboot/raw/main/docs/static/img/logo.png)
Getdeck Beiboot is a Kubernetes-in-Kubernetes solution. It allows managing, snapshotting, and restoring many logical Kubernetes environments running on top of one physical host cluster.
Explore the docs »
Report Bug
·
Request Feature
Table of Contents
The Problem
With complex application landscapes, running Kubernetes-based workloads locally becomes infeasible. Swiftly testing applications with different Kubernetes versions can be impossible depending on organizational policies. Spinning up a Kubernetes cluster with Terraform or Cloud providers takes to long for a convenient development workflow or CI pipelines.
The Solution
With Beiboot you only need one host Kubernetes cluster that runs the Getdeck Beiboot operator. Beiboot creates Kubernetes clusters as deployments in a matter of seconds. The operator creates several ways to connect to that cluster and makes it simple to get started working with Kubernetes.
Beiboot offers:
- to create a fresh ad-hoc Kubernetes cluster in seconds (much faster than Terraform or Cloud-provider)
- automatic management of Beiboot clusters (via lifetime, inactivity, etc.)
- shelve ("snapshot") a running Beiboot cluster with state and restore them as often as needed
- run isolated workloads within Kubernetes; cheap and with the best resource utilization
- automatic distribution of kubeconfig and tunnel connection to clients (using the Beiboot client package)
- built-in support for Gefyra
There are many use-cases running a logical ("virtual") Kubernetes cluster within a physical Kubernetes cluster. The main focus of Beiboot is the on-demand creation of Kubernetes clusters for development and testing purposes. Beiboot has potential for other scenarios, too. For example, strong workload isolation, multi-tenancy, CI, security and more.
Beiboot comes with a Kubernetes operator that handles the ad-hoc logical clusters based on the requested parameters. This includes the Kubernetes version, the way of exposing the cluster, lifetime and so on. It can also snapshop ("shelve") and restore a cluster many times.
Beiboot builds on top of the following popular open-source technologies:
k3s is the foundation for the logical Kubernetes clusters.
Docker is currently used in order to run the proxy setup for clients.
Kopf a framework to write Python-based Kubernetes operators.
Please download the latest version of beibootctl
from the GitHub release section and add it to your path.
Install the Getdeck Beiboot operator with:
beibootctl install | kubectl apply -f -
This creates the target namespace getdeck
for the operator and kubernetes extension (CRD) beiboot, beiboots, bbt
.
For more information about the installation, check out the docs.
There are multiple ways you can manage Beiboot in a Kubernetes host cluster. The clients of Beiboot create a mTLS secured connection, making the Beiboot cluster become available on localhost. That way, Beiboot feels like it would run on the developer's machiene.
The static binary beibootctl
is created for Beiboot administrators. It allows to create, delete, inspect Beiboot clusters and connect to them. Please check out the documentation.
Getdeck Beiboot comes with a Python client. You find it in this repository under client/
or on PyPI. The API offers many functions to manage Beiboot and establish a local connection to Beiboot clusters.
Important: Using Poetry is only intended for development and testing purposes of Beiboot itself. You can use it like so:
poetry run beibootctl ...
Coming soon.
Beiboot will soon be integrated with Getdeck as a new "provider", so you can use Deckfiles as origin for Beiboots.
We're currently working on releasing a desktop client for end users of Beiboot, e.g. developers and testers.
Distributed under the Apache License 2.0. See LICENSE
for more information.
If you encounter issues, please create a new issue on GitHub or talk to us on the Unikube Slack channel.
Getdeck Beiboot is sponsored by the Blueshoe GmbH. Beiboot heavily relies on the work of Rancher k3s.