Running complex stateful applications becomes easy

Say hello to KubeDirector – The first project of the BlueK8s initiative is here

Eirini-Eleni Papadopoulou
© Shutterstock / doomu  

The Kuberenetes team has been keeping busy! Some months ago we got introduced to the new Kubernetes open source initiative, BlueK8s and today we have some big news for you! The first project to be released from the BlueK8s maturation chamber is Kubernetes Director or KubeDirector with the pre-alpha code being now available.

Some months ago, the Kubernetes team introduced us to BlueK8s, a Kubernetes open source initiative which will include numerous projects that help “bring enterprise-level capabilities for distributed stateful applications to Kubernetes.”

Kubernetes Director or KubeDirector is the first project released from the maturation chamber with the pre-alpha code being now available.

KubeDirector is a custom controller which simplifies and streamlines the packaging, deployment, and management of complex distributed stateful applications for Big Data and AI use cases.

According to the official blog post, KubeDirector provides the following capabilities:

  • The ability to run non-cloud native stateful applications on Kubernetes without modifying the code. In other words, it’s not necessary to decompose these existing applications to fit a microservices design pattern.
  • Native support for preserving application-specific configuration and state.
  • An application-agnostic deployment pattern, minimizing the time to onboard new stateful

SEE ALSO: Kubernetes 1.12 is out – Kubelet TLS Bootstrap goes GA

KubeDirector, unlike what you have been used to so far, does not tie a custom resource definition to a particular type of application, or contain hardcoded application-specific logic within the controller. Instead application characteristics are defined by metadata and an associated package of configuration artifacts, as you can see in the figure below.

This separation can prove to be quite handy:

  • Application experts – within or outside the organization running KubeDirector – can enable application deployment without writing “Go” code or understanding the operation of custom controllers. This includes easily making incremental changes to adopt new versions of an application or tweak the setup choices exposed to the end user.

SEE ALSO: “Kubernetes: Not only microservices, but also high performance workloads”

  • Site administrators can easily manage which application types and versions are available within an organization, without undergoing a custom controller code upgrade that could potentially disrupt operations.
  • End users can launch and reconfigure clusters using familiar K8s tools, selecting from application-specific choices provided to them by the experts.

Getting started

If you wish to understand the components of KubeDirector, clone the repository on GitHub using a command similar to:

git clone

What’s more, The KubeDirectorApp definition for the Spark 2.2.1 application is located in the file kubedirector/deploy/example_catalog/cr-app-spark221e2.json. The configuration of an application cluster is referred to as a KubeDirectorCluster resource. The KubeDirectorCluster definition for a sample Spark 2.2.1 cluster is located in the filekubedirector/deploy/example_clusters/cr-cluster-spark221.e1.yaml.

For more information on this project, please visit the blog post or GitHub repo.

Eirini-Eleni Papadopoulou
Eirini-Eleni Papadopoulou was the editor for Coming from an academic background in East Asian Studies, she decided that it was time to go back to her high-school hobby that was computer science and she dived into the development world. Other hobbies include esports and League of Legends, although she never managed to escape elo hell (yet), and she is a guest writer/analyst for competitive LoL at TGH.

Inline Feedbacks
View all comments