Skip to content

Getdeck Beiboot is a Kubernetes-in-Kubernetes solution 🚀 It allows creating multiple logical Kubernetes environments within one ➡️ physical host cluster.

License

Notifications You must be signed in to change notification settings

Getdeck/beiboot

Repository files navigation

Contributors Forks Stargazers Issues MIT License Coverage Information


Getdeck Beiboot Logo

Getdeck Beiboot

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
  1. About The Project
  2. Built with
  3. Getting Started
  4. License
  5. Reporting bugs
  6. Acknowledgments

About the project

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.

Features

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

Kubernetes-in-Kubernetes

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 operator

(back to top)

Built with

Beiboot builds on top of the following popular open-source technologies:

k3s

k3s is the foundation for the logical Kubernetes clusters.

Docker

Docker is currently used in order to run the proxy setup for clients.

Kopf Framework

Kopf a framework to write Python-based Kubernetes operators.

(back to top)

Getting Started

beibootctl

Please download the latest version of beibootctl from the GitHub release section and add it to your path.

Install the operator to the Kubernetes host cluster

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.

Usage

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.

Beiboot client connect

Using beibootctl

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.

beibootctl demo

Beiboot Python client

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.

Using Poetry

Important: Using Poetry is only intended for development and testing purposes of Beiboot itself. You can use it like so:

poetry run beibootctl ...
API documentation

Coming soon.

Getdeck CLI

Beiboot will soon be integrated with Getdeck as a new "provider", so you can use Deckfiles as origin for Beiboots.

Beiboot Desktop

We're currently working on releasing a desktop client for end users of Beiboot, e.g. developers and testers.

(back to top)

License

Distributed under the Apache License 2.0. See LICENSE for more information.

(back to top)

Reporting bugs

If you encounter issues, please create a new issue on GitHub or talk to us on the Unikube Slack channel.

(back to top)

Acknowledgments

Getdeck Beiboot is sponsored by the Blueshoe GmbH. Beiboot heavily relies on the work of Rancher k3s.

(back to top)

About

Getdeck Beiboot is a Kubernetes-in-Kubernetes solution 🚀 It allows creating multiple logical Kubernetes environments within one ➡️ physical host cluster.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project