The DevSpace Kubernetes Tool Set Explained
Tags: kubernetes, vcluster, devspace, loft
Published: 2022-06-16 16:00:58

By Daniel Thiry

At my company, Loft Labs, we are fixing the developer experience with Kubernetes. This experience is nowadays still broken as Kubernetes historically has been developed as infrastructure technology. And today, it still is an infrastructure technology whose benefits are mainly relevant for operations challenges such as scalability, reliability, or transferability.

However, due to its widespread adoption, Kubernetes is not only an ops topic anymore but [has also become a development topic](/blog/is-kubernetes-still-just-an-ops-topic/). Engineers need to develop software that runs seamlessly in Kubernetes environments (and is cloud-native at best), need to test the software in realistic environments and need to be able to deploy to Kubernetes.

All of these tasks can be real challenges for developers that deserved solutions. For this, we have decided to develop a Kubernetes tool set that helps individual developers as well as whole development teams to work with Kubernetes easily and efficiently.

Now, I want to introduce and describe the 4 tools that we have the developed in the past three years. 2 of them are open source, 2 of them are commercial and all of them solve different problems for different target groups.



## [DevSpace](https://github.com/devspace-cloud/devspace)

The first tool we developed naturally addressed the issue of how developers can interact with Kubernetes. For this, we developed the open-source tool [DevSpace](https://github.com/devspace-cloud/devspace).

#### License: Open-Source (Apache 2.0)

#### Main functionality
DevSpace allows its users to **develop software directly in a Kubernetes cluster**. Such a cluster can run in any cloud environment, private or public, as well as **in any local Kubernetes cluster**, such as [minikube](https://github.com/kubernetes/minikube), [MicroK8s](https://github.com/ubuntu/microk8s), [kind](https://github.com/kubernetes-sigs/kind)…

Since not every developer has extensive Kubernetes knowledge, DevSpace is designed in a way that it can be **configured in a versionable config file** by one experienced developer and all other team members can then use this configuration to develop in (`devspace dev`) or deploy to (`devspace deploy`) Kubernetes.

With features such as **port forwarding** and **hot reloading** with a smart code sync algorithm, the development in a real Kubernetes environment feels like developing as usual on localhost.

Over time, we have added additional supporting features, such as **image building** and a **localhost UI**.

#### Use Cases
DevSpace is the tool to **enable development teams to work with Kubernetes** irrespective of their Kubernetes knowledge. Its initial use case was mainly to allow **in-cluster development** ([supporting the idea of cloud development](https://devspace.cloud/blog/2019/12/12/cloud-development-new-standard)) and to **standardize Kubernetes workflows** in a team. However, many users are now also using DevSpace in their **CI pipelines** or to **deploy to staging environments**.



## DevSpace Cloud (Discontinued)

While DevSpace helps to establish the Kubernetes workflows and allows engineers to develop software directly in a Kubernetes, the problem of how to provide engineers with an access to Kubernetes was still unsolved, especially if local k8s environment are not feasible (e.g. due to computing resource limits, missing features,…). To solve this, we have developed DevSpace Cloud, which now has been replaced by [kiosk](https://github.com/kiosk-sh/kiosk) and [loft](https://loft.sh).

#### License: Commercial (Discontinued)

#### Main functionality
You can **connect any Kubernetes cluster** to DevSpace Cloud and this will **transform your cluster into a self-service Kubernetes platform**.

That means that you can add users to your cluster who can **create namespaces on their own as they need them**. Besides the **user management** for your cluster, DevSpace Cloud also cares for the **user isolation (multi-tenancy)** and enforces the **resource limits** that you can configure for each added user.

Since running namespaces requires computing resources which in turn cause cost, we have also introduced a **sleep mode that scales down replica sets of namespaces** that have not been used for a pre-defined time.

Overall, DevSpace Cloud provides a **SaaS-like experience for the cluster you connect**. The so-called Demo Spaces (free namespaces provided by us with DevSpace Cloud) give you a hint how the experience will be for the added users of your team.

#### Use Cases
The main use case for DevSpace Cloud was to complete the development experience with DevSpace. To be able to develop in Kubernetes and to run tests in Kubernetes, **developers need access to a Kubernetes cluster**.

Since the management of a cluster, however, is not always straightforward and results in additional effort, [sharing a cluster is the most efficient way](/blog/local-cluster-vs-remote-cluster-for-kubernetes-based-development/). With DevSpace Cloud, a **cluster could be shared** with all developers in a team and could be **centrally managed by a cluster admin**. At the same time, DevSpace Cloud ensured that **developers are isolated from each** other and could **only use the computing resources allocated** to them.

While DevSpace Cloud already provided a good developer experience, we wanted to open up the platform for further use cases, such as ML/AI experimentation and CI/CD pipelines, and to open-source a part of it. As a result, kiosk and loft have emerged, which I will describe next.



## [kiosk](https://github.com/kiosk-sh/kiosk)

With the experience from DevSpace Cloud, we have realized that multi-tenancy is an issue in Kubernetes that has not been properly addressed and that is relevant beyond the development settings. That is why we have developed [kiosk](https://github.com/kiosk-sh/kiosk).

#### License: Open-Source (Apache 2.0)

#### Main functionality
kiosk is a **multi-tenancy extension for Kubernetes**. It enables users to **separate tenants in a shared cluster** and to **provision namespaces in a self-service fashion**.

With kiosk, you can also **limit the tenants** to ensure that no tenant consumes too many resources and thus impedes others.

kiosk is designed in a way that it is **very flexible** and can be used in a wide range of scenarios **without being prescriptive**. For this, it uses a lot of Kubernetes definitions and resources. At the same time and different from DevSpace Cloud and loft, kiosk does not provide a user management.

#### Use Cases
Inspired by stories of different companies such as [Spotify’s](https://www.youtube.com/watch?v=vLrxOhZ6Wrg) and [Box’s](https://www.youtube.com/watch?v=cpIO5h7EuEE) KubeCon 2019 talks about their internal Kubernetes offering, we have realized that many companies are developing own platforms and multi-tenancy solutions for their own specialized cases.

However, we believe it would be better to have **one general, open-source solution that can be freely used and built upon**. This is why we have developed kiosk.

As a **lightweight, pluggable Kubernetes extension**, kiosk is meant to be a **building block for full Kubernetes platforms** that companies are developing for their individual needs.



## [loft](https://loft.sh)

With a flexible basis such as kiosk, we have built a next level Kubernetes platform on top of it that opens up more possibilities beyond cloud-native development and that now replaces DevSpace Cloud. This platform is called [loft](https://loft.sh).

#### License: Commercial with free tier (1 Cluster, 3 users), otherwise licensed per user (available on-premise and as hybrid SaaS)

#### Main Functionality
loft is a solution that you run on your own or that we run can run for you (hybrid-SaaS) and that allows your team to **share the Kubernetes clusters you connect** to it.

All added users can **provision their own Kubernetes namespaces on demand up to the limit** the cluster manager configures for them.

Beyond the **user isolation** based on kiosk, loft cares for the **user management** and helps you to **save cost with a sleep mode** that pauses unused namespace after a predetermined period of time.

No matter if you use the on-premise or the hybrid SaaS version of loft, you always **connect your own clusters** to it and in these connected clusters, your team's workloads will run.

We can also help you to set up and configure loft for you.

#### Use Cases
The flexibility of loft allows you to use it in various scenarios. You can use it to **develop software cloud-natively in Kubernetes** from the very beginning, e.g. with DevSpace. 

Additionally, it is possible to use it to **run machine learning or artificial intelligence experiments** with it. Developing such applications often requires testing new algorithms or other ideas with a lot of computing resources that are not available on the engineer’s machine. With loft, the developers can easily run tests in larger environments by creating a new namespace when they need it without having to set up a complicated environment first. 

Another use case is to **integrate loft into CI/CD or GitOps** processes to instantiate an application fast and easy.



## Which solution is right for you?

I hope this was helpful to understand what our different solutions are made for. They all have the common theme of making Kubernetes easier to use for all development related tasks, i.e. all tasks that are not classical operations tasks (running, monitoring, and managing an existing software).

If you are interested in cloud development or just want to streamline your Kubernetes workflows from development to deployment, you should take a closer look at [DevSpace](https://github.com/devspace-cloud/devspace), which can be used independently of or in combination with all the other tools.

If you want to solve the problem of providing engineers access to Kubernetes for developing, deploying, testing, experimenting or any other use case, you should look at [loft](https://loft.sh) and [kiosk](https://github.com/kiosk-sh/kiosk):

While kiosk is the right solution if you already have an idea for and want to develop an own platform with very special needs, loft is a solution that can be used instantly out-of-the-box. It addtionally provides an integrated user management and a sleep mode to save computing cost.

If you still don’t know where to start or if you prefer to have everything set up for you, feel free to reach out to us. We are also happy to provide you with the full Kubernetes platform setup of loft (for a flat fee in all major public clouds).

<br>
<br>

Photo by [Cesar Carlevarino Aragon](https://unsplash.com/@carlevarino?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)