Monday, December 4, 2017

Introducing Kubeapps

Today we are proud and excited to announce Kubeapps, a package agnostic application dashboard for Kubernetes. We see it as a compass that helps Kubernetes users find their way in the different ways to package a Kubernetes applications as well as a boostrapping mechanism so that all the necessary add-ons can be installed in your cluster easily.


For those of you who have been long-time Helm users, the website kubeapps.com may be familiar- until now it was a Chart discovery site. We decided to build upon the success of Kubeapps and extend the experience to bring applications of all types to Kubernetes users.

Indeed, now that it is clear that Kubernetes has won the container orchestration battle, it is time to focus on applications. At Bitnami we have been packaging applications for the cloud for almost a decade now. In building Kubeapps, we keep focusing on our core strength while bringing a useful service to the community and helping our customers that are embracing Kubernetes and migrating to container-based applications.

That’s why we decided to re-launch Kubeapps, making it more generic and able to handle all sorts of Kubernetes applications instead of just Helm charts. In particular, with the growing interest in serverless-based applications, our Kubeless project makes a perfect companion to Kubeapps. So Kubeapps is now made of three components:

  • A command line interface that helps your bootstrap all the necessary Kubernetes cluster add-ons to deploy and manage your applications.
  • A community site, hub.kubeapps.com, aimed at becoming the Docker Hub of Kubernetes applications. It now has social features like starring and commenting.
  • An in-cluster application dashboard, built on Monocular, that also features the Kubeless user interface to bring in serverless capabilities to kubeapps.

From a technical standpoint, The Hub is an instance of Monocular with the added social features enabled thanks to the ability to log in to Kubeapps. The code and various microservices that it is now composed of are all available on GitHub in the Kubeapps organization. We believe that everyone in the community will enjoy starring and leaving comments on their favorite charts. In the near future, we plan to allow users to submit new applications and new application registries to Kubeapps so it can act as a true aggregator of shareable Kubernetes applications.

The command line interface is Golang binary that allows users to easily install the following add-ons into any cluster (caveat: only Minikube and GKE are tested right now, AKS is coming soon):

  • Helm/tiller (in a secure, opinionated deployment configuration)
  • Kubeless (our Kubernetes-native serverless solution)
  • Sealed Secrets (a tool to give #gitops the ability to manage secrets securely)

As new packages and operational workflows to manage Kubernetes applications emerge we envision adding the appropriate add-ons to Kubeapps so that anyone can configure their cluster to meet their specific needs. Sealed Secrets might seem a little odd in this mix, but we believe that a significant number of users will start moving to a declarative mindset and will adopt a #gitops workflow like what is described by our friends from [Weave works](https://engineering.bitnami.com/articles/secure-gitops.html ).

Each add-on is defined in a jsonnet manifest available on GitHub. These manifests are turned into full YAML manifests and embedded in the code of `kubeapps`. This gives the ability to deploy the add-ons in a declarative manner, set labels, and configure garbage collection properly. A lot of the code that is in `kubeapps` was first introduced in our work on `kubecfg` as part of the ksonnet project. Once you download the binary you have two key commands to learn:

  • `kubeapps up` (will create all the required resources to make the add-ons work)
  • `kubeapps down` (if you wish to remove everything)

Here is a snapshot of the output of `kubeapps up`:



The third command in the Kubeapps CLI is:

`kubeapps dashboard`




This will connect you to a dashboard running in your cluster. This dashboard is based on Monocular as well but has the added functionality to deploy Helm Charts directly from the web interface. It also now integrates the Kubeless UI, making the Kubeapps dashboard a one stop shop for both Helm Charts and Serverless functions. Below is a snapshot of the Kubeless UI.




This is just the beginning for Kubeapps. As our friends from CoreOS mention in their 2018 predictions, 2 out of 5 critical areas are going to be Kubernetes applications and Serverless. With Kubeapps we are very excited at Bitnami to be addressing these needs already, offering a package agnostic launchpad for Kubernetes applications. One that brings serverless functions and any type of app formats together under one roof.

Look for an improved UI, more social features to build a great application hub for Kubernetes plus the ability to support declarative management of applications. This is going to be an exciting 2018 and Kubeapps is just the beginning.