Overview of GUIs for Kubernetes

Overview of GUIs for Kubernetes

For full-fledged work with the system, knowledge of command line utilities is important: in the case of Kubernetes, this is kubectl. On the other hand, well-designed, thoughtful graphical interfaces can performΠΎmost of the usual tasks and open up additional opportunities for the operation of systems.

Last year we published a translation small overview of web UI for Kubernetes, timed to coincide with the announcement of the web interface Kubernetes WebView. The author of that article and the utility itself, Henning Jacobs from Zalando, just positioned the new product as β€œkubectl for the web”. He wanted to create a tool with user-friendly capabilities for interaction in a technical support format (for example, quickly showing the problem with a web link) and for responding to incidents, searching for problems in many clusters at the same time. His offspring is developing at the present time (mainly by the efforts of the author himself).

As we serve many Kubernetes clusters of various sizes, we are also interested in the ability to provide a visual work tool to customers. When choosing a suitable interface, the following features were key for us:

  • support for differentiation of user rights (RBAC);
  • visualization of the namespace state and standard Kubernetes primitives (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • getting access to the command line inside the pod;
  • viewing logs of pods;
  • view the status of pods (describe status);
  • removing pods.

Other functions, such as viewing consumed resources (in the context of pods / controllers / namespaces), creating / editing K8s primitives, are not relevant within our workflow.

We will start the review with the classic Kubernetes Dashboard, which is our standard. Since the world does not stand still (which means that Kubernetes has more and more new GUIs), we will also talk about its current alternatives, summarizing everything in a comparative table at the end of the article.

NB: In the review, we will not repeat with those solutions that have already been considered in last article, however, for the sake of completeness, the relevant options from it (K8Dash, Octant, Kubernetes Web View) are included in the final table.

1. Kubernetes Dashboard

  • Documentation page;
  • Repository (8000+ GitHub stars);
  • License: Apache 2.0;
  • In short: β€œUniversal web interface for Kubernetes clusters. It allows users to manage and troubleshoot applications running in the cluster, as well as manage the cluster itself.”

Overview of GUIs for Kubernetes

This is a general purpose panel covered by the Kubernetes authors in the official documentation (but non-deployable default). It is designed for the needs of everyday operation and debugging of applications in a cluster. At home, we use it as a full-fledged lightweight visual tool that allows us to provide developers with the necessary and sufficient access to the cluster. Its capabilities cover all their needs that arise in the process of using the cluster (In this article we demonstrated some features of the panel). As you might guess, this means that it satisfies all of our requirements listed above.

Among the main features of Kubernetes Dashboard:

  • Navigation: view the main objects of K8s in the context of namespaces.
  • If you have administrator rights, the panel shows nodes, namespaces, and Persistent Volumes. For nodes, statistics are available on the use of memory, processor, resource allocation, metrics, status, events, etc.
  • View applications deployed in a namespace by their type (Deployment, StatefulSet, etc.), relationships between them (ReplicaSet, Horizontal Pod Autoscaler), general and personalized statistics and information.
  • View services and Ingresses, as well as their relationships with pods and endpoints.
  • View file objects and storages: Persistent Volume and Persistent Volume Claim.
  • View and edit ConfigMap and Secret.
  • View logs.
  • Command line access in containers.

A significant drawback (however, not for us) is that there is no support for multi-cluster work. The project is actively developed by the community and maintains relevant features with the release of new versions and specifications of the Kubernetes API: the latest version of the panel is v2.0.1 May 22, 2020 - Tested for compatibility with Kubernetes 1.18.

2. Lens

Overview of GUIs for Kubernetes

The project is positioned as a complete integrated development environment (IDE) for Kubernetes. Moreover, it is optimized to work with many clusters and a large number of pods running in them (tested on 25 pods).

Main features/capabilities of Lens:

  • A standalone application that does not require installation of anything inside the cluster (more precisely, Prometheus will be required to obtain all the metrics, but an existing installation can also be used for this). The β€œmain” installation is made on a personal computer running Linux, macOS or Windows.
  • Multi-cluster management (hundreds of clusters supported).
  • Visualization of the state of the cluster in real time.
  • Resource usage graphs and trends with history based on built-in Prometheus.
  • Access to the command line of containers and on cluster nodes.
  • Full support for Kubernetes RBAC.

Current release - 3.5.0 dated June 16, 2020 Originally created by Kontena, today all intellectual property has been transferred to a special organization Lakeland Labs, called "a union of cloud native geeks and technologists", which is responsible for the "preservation and availability of Kontena's Open Source software and products."

Lens is the second most popular project on GitHub from the GUI for Kubernetes category, β€œlosing” only the Kubernets Dashboard itself. All other Open Source solutions not from the CLI* category are significantly inferior in popularity.

* See about K9s in the bonus part of the review.

3. Kubernetic

Overview of GUIs for Kubernetes

This is a proprietary application that is installed on a personal computer (Linux, macOS, Windows are supported). Its authors promise a complete replacement of the command line utility, and with it - no need to remember commands and even a tenfold increase in speed.

One of the interesting features of the tool is the built-in support for Helm charts, and one of the drawbacks is the lack of application performance metrics.

Main features of Kubernetic:

  • Convenient display of the cluster status. One screen to view all related cluster objects and their dependencies; red/green readiness status for all objects; cluster status view mode with real-time status updates.
  • Quick action buttons for deleting and scaling the application.
  • Support for multi-cluster operation.
  • Simple work with namespaces.
  • Support for Helm charts and Helm repositories (including private ones). Installing and managing charts in the web interface.

The current cost of the product is a one-time payment of 30 euros for its use by one person for any number of namespaces and clusters.

4. Kubevious

  • Site;
  • Presentation;
  • Repository (~500 GitHub stars);
  • License: Apache 2.0
  • In short: "Kubevious makes Kubernetes clusters, application configuration and status viewing safe and easy to understand."

Overview of GUIs for Kubernetes

The idea of ​​the project is to create a tool designed to analyze and debug application configurations deployed in a cluster. The authors focused primarily on the implementation of these features, leaving more general things for later.

Key features and functions of Kubevious:

  • Cluster visualization in an application-centric way: related objects in the interface are grouped, lining up in a hierarchy.
  • Visual display of dependencies in configurations and cascading consequences of their changes.
  • Display of cluster configuration errors: misuse of labels, missed ports, etc. (By the way, if you are interested in this feature, pay attention to Polarisabout which we already wrote.)
  • In addition to the previous point, detection of potentially dangerous containers is available, i.e. having too much privileges (attributes hostPID, hostNetwork, hostIPC, mount docker.sock etc).
  • Advanced search system for the cluster (not only by the names of objects, but also by their properties).
  • Tools for capacity planning and resource optimization.
  • Built-in "time machine" (the ability to see previous changes in the configuration of objects).
  • RBAC management with a pivot interrelated table of Roles, RoleBindings, ServiceAccounts.
  • Works with only one cluster.

The project has a very short history (the first release took place on February 11, 2020) and it seems that there has been a period of either stabilization or slowdown in development. If previous versions were released frequently, then the latest release (v0.5 April 15, 2020) has lagged behind the initial pace of development. This is probably due to the small number of contributors: there are only 4 of them in the history of the repository, and all the actual work is done by one person.

5. Kubewise

  • Project page;
  • License: proprietary (will become Open Source);
  • In short: "A simple multi-platform client for Kubernetes."

Overview of GUIs for Kubernetes

A new product from VMware, originally created as part of an internal hackathon (in June 2019). Installed on a personal computer, works on the basis of Electron (Linux, macOS and Windows supported) and requires kubectl v1.14.0 or later.

Main features of Kubewise:

  • Interface interaction with the most commonly used Kubernetes entities: nodes, namespaces, etc.
  • Support for multiple kubeconfig files for different clusters.
  • Terminal with the ability to set an environment variable KUBECONFIG.
  • Generate custom kubeconfig files for the given namespace.
  • Advanced security features (RBAC, passwords, service accounts).

So far, the project has only one release - version 1.1.0 dated November 26, 2019. Moreover, the authors planned to immediately release it as Open Source, but due to internal problems (not related to technical issues) they could not do this. As of May 2020, the authors are working on the next release and should initiate the code open process at the same time.

6. OpenShift Console

Overview of GUIs for Kubernetes

Despite the fact that this web interface is part of the OpenShift distribution (it is installed there using special operator), authors envisaged the ability to install / use it in normal (vanilla) Kubernetes installations.

OpenShift Console has been in development for a long time, so it has incorporated many features. We will mention the main ones:

  • Shared interface approach - two "perspectives" of the possibilities available in the Console: for administrators and for developers. Mode developer perspective groups objects in a form that is more understandable to developers (by applications) and focuses the interface on solving such typical tasks as deploying applications, tracking build/deploy status, and even editing code through Eclipse Che.
  • Management of workloads, network, storage, access rights.
  • Logical separation for workloads into projects and applications. In one of the latest releases - v4.3 - Appeared special project dashboard, which displays the usual data (the number and statuses of deployments, pods, etc.; resource consumption and other metrics) in a project slice.
  • Updated in real time display of the state of the cluster, changes (events) that have occurred in it; viewing logs.
  • View monitoring data based on Prometheus, Alertmanager and Grafana.
  • Management of operators represented in operatorhub.
  • Manage builds that run through Docker (from a specified repository with a Dockerfile), S2I or arbitrary external utilities.

NB: We did not add others to the comparison Kubernetes distributions (for example, the much less well-known Kubesphere): despite the fact that the GUI can be very advanced in them, it usually comes as part of the integrated stack of a large system. However, if you think that there are not enough solutions that fully function in the vanilla K8s installation, let us know in the comments.

bonus

1. Portainer on Kubernetes in Beta

  • Site;
  • Repository (~100 GitHub stars);
  • License: Zlib(?) (same for the parent project).

A project from the Portainer team, which developed the popular interface of the same name for working with Docker. Since the project is at an early stage of development (the first and only beta version came out April 16, 2020), we did not evaluate its features. However, it may be of interest to many: if this is about you, follow the development.

2. IcePanel

  • Site;
  • License: proprietary;
  • In short: "Visual Kubernetes Editor".

Overview of GUIs for Kubernetes

This young desktop application aims to visualize and manage Kubernetes resources in real time with a simple drag & drop interface. Currently supported objects are Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap and Secret. Soon they promise to add support for Helm. The main disadvantages are the closeness of the code (it is expected opening "in some way") and the lack of Linux support (so far only versions for Windows and macOS are available, although this is also most likely just a matter of time).

3.k9s

  • Site;
  • Demonstration;
  • Repository (~7700 GitHub stars);
  • License: Apache 2.0;
  • In short: "A console interface for Kubernetes that allows you to manage your cluster in style."

Overview of GUIs for Kubernetes

The utility was only in the bonus part of the review for the reason that it offers a console GUI. However, the authors literally squeezed the maximum out of the terminal, offering not only a user-friendly interface, but also 6 predefined themes, and an advanced system of keyboard shortcuts and command aliases. Their thorough approach was not limited to appearance: k9s features are pleasantly impressive: resource management, displaying the state of the cluster, displaying resources in a hierarchical representation with dependencies, viewing logs, RBAC support, extending capabilities through plugins ... All this appealed to the wide K8s community: the number The GitHub stars of the project are almost as good as the official Kubernetes Dashboard!

4. Application control panels

And at the end of the review - a separate mini-category. It included two web interfaces designed not for the comprehensive management of Kubernetes clusters, but for managing what is deployed in them.

As you know, one of the most mature and widespread tools for deploying complex applications in Kubernetes is Helm. Over the period of its existence, many packages (Helm charts) have accumulated for easy deployment many popular applications. Therefore, the appearance of appropriate visual tools that allow you to manage the life cycle of charts is quite logical.

4.1. Monocular

  • Repository (1300+ GitHub stars);
  • License: Apache 2.0;
  • In short: β€œA web application for searching and discovering Helm charts across multiple repositories. Serves as the basis for the Helm hub project."

Overview of GUIs for Kubernetes

This development from the authors of Helm is installed in Kubernetes and works within the same cluster, performing the task. However, at present, the project is almost not developed. Its main purpose is to support the existence of the Helm Hub. For other needs, the authors recommend Kubeapps (see below) or Red Hat Automation Broker (part of OpenShift, but also no longer being developed).

4.2. Kubeapps

Overview of GUIs for Kubernetes

A product from Bitnami, which is also installed in a Kubernetes cluster, but differs from Monocular in its initial focus on working with private repositories.

Key functions and features of Kubeapps:

  • View and install Helm charts from repositories.
  • Check, update, and remove Helm-based applications installed on the cluster.
  • Support for custom and private chart repositories (supports ChartMuseum and JFrog Artifactory).
  • Viewing and working with external services - from the Service Catalog and Service Brokers.
  • Publishing installed applications using the Service Catalog Bindings mechanism.
  • Support for authentication and separation of rights using RBAC.

Summary table

Below is a summary table in which we have tried to summarize and aggregate the main features of existing visual interfaces to facilitate comparison:

Overview of GUIs for Kubernetes
(Online version of the table available on Google Docs.)

Conclusion

GUIs for Kubernetes are a rather specific and young niche. However, it is developing very actively: it is already possible to find both quite mature solutions, and very young ones, which still have room to grow. They cater to a variety of applications, offering features and looks to suit almost every taste. We hope that this review will help you choose the tool that best suits your current needs.

PS

Thank you kvaps for the data on the OpenShift Console for the comparison table!

Read also on our blog:

Source: habr.com

Add a comment