An open API service indexing awesome lists of open source software.

https://github.com/getdeck/beiboot

Getdeck Beiboot is a Kubernetes-in-Kubernetes solution :rocket: It allows creating multiple logical Kubernetes environments within one :arrow_right: physical host cluster.
https://github.com/getdeck/beiboot

development hacktoberfest k3s k8s kubectl kubernetes operator python python3 testing

Last synced: about 2 months ago
JSON representation

Getdeck Beiboot is a Kubernetes-in-Kubernetes solution :rocket: It allows creating multiple logical Kubernetes environments within one :arrow_right: physical host cluster.

Awesome Lists containing this project

README

        

[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
[![Coverage Information][codecov-shield]][codecov-url]





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](https://gefyra.dev)

### 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*](https://rancher.com/docs/k3s/latest/en/) is the foundation for the logical Kubernetes clusters.

### Docker
[*Docker*](https://docker.io) is currently used in order to run the proxy setup for clients.

### Kopf Framework
[*Kopf*](https://github.com/nolar/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](https://github.com/Getdeck/beiboot/releases/latest/) and add it to your path.

### Install the operator to the Kubernetes host cluster
Install the Getdeck Beiboot operator with:
```bash
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.](https://getdeck.dev/beiboot/installation/basics/)

### 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.](https://getdeck.dev/beiboot/beibootctl/)


beibootctl demo

#### Beiboot Python client
Getdeck Beiboot comes with a Python client. You find it in this repository under `client/` or [on PyPI](https://pypi.org/project/beiboot/). 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:
```bash
poetry run beibootctl ...
```

##### API documentation
Coming soon.

#### Getdeck CLI
Beiboot will soon be integrated with [Getdeck](https://getdeck.dev/docs/deckfile-specs/#nativeconfig) as a new "provider", so
you can use _Deckfiles_ as origin for Beiboots.

#### Beiboot Desktop
We're currently working on releasing [a desktop client](https://github.com/Getdeck/beiboot-desktop) 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](https://unikubeworkspace.slack.com/).

(back to top)

## Acknowledgments
Getdeck Beiboot is sponsored by the [Blueshoe GmbH](https://blueshoe.io). Beiboot heavily relies on the work of [Rancher
k3s](https://rancher.com/docs/k3s/latest/en/).

(back to top)

[contributors-shield]: https://img.shields.io/github/contributors/Getdeck/beiboot.svg?style=for-the-badge
[contributors-url]: https://github.com/Getdeck/beiboot/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/Getdeck/beiboot.svg?style=for-the-badge
[forks-url]: https://github.com/Getdeck/beiboot/network/members
[stars-shield]: https://img.shields.io/github/stars/Getdeck/beiboot.svg?style=for-the-badge
[stars-url]: https://github.com/Getdeck/beiboot/stargazers
[issues-shield]: https://img.shields.io/github/issues/Getdeck/beiboot.svg?style=for-the-badge
[issues-url]: https://github.com/Getdeck/beiboot/issues
[license-shield]: https://img.shields.io/github/license/Getdeck/beiboot.svg?style=for-the-badge
[license-url]: https://github.com/Getdeck/beiboot/blob/master/LICENSE.txt
[codecov-shield]: https://img.shields.io/codecov/c/gh/Getdeck/beiboot?style=for-the-badge&token=QI26A1R5E9
[codecov-url]: https://codecov.io/gh/Getdeck/beiboot