{"id":25606766,"url":"https://github.com/getdeck/beiboot","last_synced_at":"2025-04-13T11:50:59.885Z","repository":{"id":44122151,"uuid":"508727704","full_name":"Getdeck/beiboot","owner":"Getdeck","description":"Getdeck Beiboot is a Kubernetes-in-Kubernetes solution :rocket: It allows creating multiple logical Kubernetes environments within one :arrow_right: physical host cluster.","archived":false,"fork":false,"pushed_at":"2024-01-29T23:52:50.000Z","size":2406,"stargazers_count":26,"open_issues_count":28,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-06T09:47:10.725Z","etag":null,"topics":["development","hacktoberfest","k3s","k8s","kubectl","kubernetes","operator","python","python3","testing"],"latest_commit_sha":null,"homepage":"https://getdeck.dev/beiboot/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Getdeck.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":"FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://blueshoe.io"]}},"created_at":"2022-06-29T14:33:18.000Z","updated_at":"2024-12-10T17:54:37.000Z","dependencies_parsed_at":"2023-02-13T19:40:57.394Z","dependency_job_id":"dcd19383-1b54-4cc2-8fe5-7f2a0ffb643d","html_url":"https://github.com/Getdeck/beiboot","commit_stats":{"total_commits":121,"total_committers":4,"mean_commits":30.25,"dds":"0.36363636363636365","last_synced_commit":"56bd8aac6cd8490ba81e9b275638a4bf83da25da"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Getdeck%2Fbeiboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Getdeck%2Fbeiboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Getdeck%2Fbeiboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Getdeck%2Fbeiboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Getdeck","download_url":"https://codeload.github.com/Getdeck/beiboot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248710438,"owners_count":21149188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["development","hacktoberfest","k3s","k8s","kubectl","kubernetes","operator","python","python3","testing"],"created_at":"2025-02-21T19:16:11.001Z","updated_at":"2025-04-13T11:50:59.865Z","avatar_url":"https://github.com/Getdeck.png","language":"Python","funding_links":["https://blueshoe.io"],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![Coverage Information][codecov-shield]][codecov-url]\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Getdeck/beiboot\"\u003e\n    \u003cimg src=\"https://github.com/Getdeck/beiboot/raw/main/docs/static/img/logo.png\" alt=\"Getdeck Beiboot Logo\"/\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eGetdeck Beiboot\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    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.\n    \u003cbr /\u003e\n    \u003ca href=\"https://getdeck.dev/beiboot/\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/Getdeck/beiboot/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Getdeck/beiboot/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#what-is-hybrid-cloud-development\"\u003eWhat is hybrid cloud development?\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#kubernetes-in-kubernetes\"\u003eKubernetes-in-Kubernetes\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#built-with\"\u003eBuilt with\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#install-the-operator-to-the-kubernetes-host-cluster\"\u003eInstall the operator to the Kubernetes host cluster\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#reporting-bugs\"\u003eReporting bugs\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About the project\n**The Problem**  \nWith 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.\n\n**The Solution**  \nWith 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.\n\n### Features\nBeiboot offers:\n- to create a fresh ad-hoc Kubernetes cluster in seconds (much faster than Terraform or Cloud-provider)\n- automatic management of Beiboot clusters (via lifetime, inactivity, etc.)\n- shelve (\"snapshot\") a running Beiboot cluster with state and restore them as often as needed\n- run isolated workloads within Kubernetes; cheap and with the best resource utilization\n- automatic distribution of kubeconfig and tunnel connection to clients (using the Beiboot client package)\n- built-in support for [Gefyra](https://gefyra.dev)\n\n\n### Kubernetes-in-Kubernetes\nThere 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.   \n  \nBeiboot comes with a Kubernetes operator that handles the ad-hoc logical clusters based on the requested parameters. \nThis 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.\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/Getdeck/beiboot/raw/main/docs/static/img/beiboot-ops.png\" alt=\"Beiboot operator\"/\u003e\n\u003c/div\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e \n\n## Built with\nBeiboot builds on top of the following popular open-source technologies:\n\n### k3s\n[*k3s*](https://rancher.com/docs/k3s/latest/en/) is the foundation for the logical Kubernetes clusters. \n\n### Docker\n[*Docker*](https://docker.io) is currently used in order to run the proxy setup for clients.\n\n### Kopf Framework\n[*Kopf*](https://github.com/nolar/kopf) a framework to write Python-based Kubernetes operators.\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n### `beibootctl`\nPlease download the latest version of `beibootctl` from [the GitHub release section](https://github.com/Getdeck/beiboot/releases/latest/) and add it to your path.\n\n### Install the operator to the Kubernetes host cluster\nInstall the Getdeck Beiboot operator with:\n```bash\nbeibootctl install | kubectl apply -f -\n```\nThis creates the target namespace `getdeck` for the operator and kubernetes extension (CRD) `beiboot, beiboots, bbt`.\n\n[For more information about the installation, check out the docs.](https://getdeck.dev/beiboot/installation/basics/)\n\n\n### Usage\nThere 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,\nBeiboot feels like it would run on the developer's machiene.\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/Getdeck/beiboot/raw/main/docs/static/img/beiboot-client-connection.png\" alt=\"Beiboot client connect\"/\u003e\n\u003c/div\u003e\n\n\n#### Using `beibootctl`\nThe 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/)\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/Getdeck/beiboot/raw/main/docs/static/img/beibootctl-demo.gif\" alt=\"beibootctl demo\"/\u003e\n\u003c/div\u003e\n\n#### Beiboot Python client\nGetdeck 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.\n\n##### Using Poetry\n**Important:** Using Poetry is only intended for development and testing purposes of Beiboot itself.\nYou can use it like so:\n```bash\npoetry run beibootctl ...\n```\n\n\n##### API documentation\nComing soon.\n\n#### Getdeck CLI\nBeiboot will soon be integrated with [Getdeck](https://getdeck.dev/docs/deckfile-specs/#nativeconfig) as a new \"provider\", so\nyou can use _Deckfiles_ as origin for Beiboots.\n\n#### Beiboot Desktop\nWe're currently working on releasing [a desktop client](https://github.com/Getdeck/beiboot-desktop) for end users  of Beiboot, e.g. developers and testers.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n## License\nDistributed under the Apache License 2.0. See `LICENSE` for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Reporting bugs\nIf you encounter issues, please create a new issue on GitHub or talk to us on the\n[Unikube Slack channel](https://unikubeworkspace.slack.com/). \n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Acknowledgments\nGetdeck Beiboot is sponsored by the [Blueshoe GmbH](https://blueshoe.io). Beiboot heavily relies on the work of [Rancher\nk3s](https://rancher.com/docs/k3s/latest/en/).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[contributors-shield]: https://img.shields.io/github/contributors/Getdeck/beiboot.svg?style=for-the-badge\n[contributors-url]: https://github.com/Getdeck/beiboot/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/Getdeck/beiboot.svg?style=for-the-badge\n[forks-url]: https://github.com/Getdeck/beiboot/network/members\n[stars-shield]: https://img.shields.io/github/stars/Getdeck/beiboot.svg?style=for-the-badge\n[stars-url]: https://github.com/Getdeck/beiboot/stargazers\n[issues-shield]: https://img.shields.io/github/issues/Getdeck/beiboot.svg?style=for-the-badge\n[issues-url]: https://github.com/Getdeck/beiboot/issues\n[license-shield]: https://img.shields.io/github/license/Getdeck/beiboot.svg?style=for-the-badge\n[license-url]: https://github.com/Getdeck/beiboot/blob/master/LICENSE.txt\n[codecov-shield]: https://img.shields.io/codecov/c/gh/Getdeck/beiboot?style=for-the-badge\u0026token=QI26A1R5E9\n[codecov-url]: https://codecov.io/gh/Getdeck/beiboot\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetdeck%2Fbeiboot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetdeck%2Fbeiboot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetdeck%2Fbeiboot/lists"}