Announcement of the Kubernetes Web View web interface (and a brief overview of other web UIs for Kubernetes)

Note perev. : The author of the original material is Henning Jacobs from Zalando. He created a new web interface for working with Kubernetes, which is positioned as "kubectl for the web." Why the new Open Source project appeared and what criteria the existing solutions did not satisfy, read its article.







In this post, I look at the various open source Kubernetes web interfaces, present my requirements for a universal UI and explain why I developed Kubernetes Web View , an interface designed to make it easier to support and troubleshoot multiple clusters at once.



Use cases



At Zalando, we serve a large number of Kubernetes (900+) and cluster (100+) users. There are a couple of typical use cases where the help of a specialized web tool would be very useful:



  1. communication with colleagues in support;
  2. response to incidents and investigation of their causes.


Support



In my experience, communication within the framework of support often looks like this:



- Help, our XYZ service is unavailable!

- What do you see when you perform kubectl describe ingress ...



?




Or something similar for CRD:



- I have some kind of problem with the identification service ...

- And what kubectl describe platformcredentialsset ...



command kubectl describe platformcredentialsset ...



?




This communication usually comes down to introducing various variations of the kubectl



command to fix the problem. As a result, both sides of the conversation are forced to constantly switch between the terminal and web chat, plus they observe a different situation.



Therefore, I want the Kubernetes web frontend to allow the following:





Incident Response and Analysis



Responding to incidents in the infrastructure requires situational awareness, the ability to assess impact, and look for patterns in clusters. Some real life examples:





My standard solution in such cases is something like for i in $clusters; do kubectl ...; done



for i in $clusters; do kubectl ...; done



for i in $clusters; do kubectl ...; done



. Obviously, you can develop a tool that provides similar capabilities.



Existing Kubernetes Web Interfaces



The open source world of Kubernetes web interfaces is not too large *, so I tried to collect additional information using Twitter :







* My explanation of the limited number of web interfaces for Kubernetes: Kubernetes cloud services and vendors usually offer their own frontends, so the market for the “good” free Kubernetes UI is relatively small.



I tweeted about K8Dash , Kubernator, and Octant . Let's look at them and other existing Open Source-solutions, try to understand what they are.



K8Dash



“K8Dash is the easiest way to manage your Kubernetes cluster.”







K8Dash looks good and feels fast, but it has a number of disadvantages for the use cases listed above:





Kubernator



“Kubernator is an alternative UI for Kubernetes. Unlike the high-level Kubernetes Dashboard, it provides low-level control and an excellent overview of all objects in the cluster with the ability to create new ones, edit them and resolve conflicts. Being a fully client application (like kubectl), it does not require any backend except for the Kubernetes API server itself, and also takes into account the rules for accessing the cluster. "







This is a fairly accurate description of Kubernator . Alas, he lacks some features:





Kubernetes Dashboard



“Kubernetes Dashboard is a 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. ”







Unfortunately, Kubernetes Dashboard doesn’t help much in my incident support and response activities, because it:





Kubernetes Operational View (kube-ops-view)



“K8s Cluster Space Observer System Panel.”







Kubernetes Operational View has a completely different approach: this tool only shows cluster nodes and pods using WebGL, without any textual details of the objects. It is great for an on-line overview of cluster status (“do pods fall?”) *, But not for the cases of support and incident response described above.



* Note perev. : In this sense, you might also be interested in our grafana-statusmap plugin , which we covered in more detail in this article .



Kubernetes Resource Report (kube-resource-report)



"Gather information about resource requests from pods and Kubernetes clusters, compare them with resource consumption, and generate static HTML."







Kubernetes Resource Report generates static HTML reports on resource usage and cost distribution by teams / applications in clusters. The report is somewhat useful for supporting and responding to incidents, as it allows you to quickly find the cluster in which the application is deployed.



Note perev. : In viewing information about the distribution of resources and their cost from cloud providers, the Kubecost service and tool, which we recently published, may also be useful.



Octant



“An extensible web development platform designed to provide a better understanding of Kubernetes cluster complexity.”







Octant , created in VMware, is a new product that I learned about relatively recently. Using it, it is convenient to examine the cluster on a local machine (there are even visualizations), however, it only touches upon the problems of support and response to incidents to a limited extent. Disadvantages of Octant:





I also had problems with Octant stability with Zalando clusters: it crashed on some CRDs.



Introducing Kubernetes Web View



"Kubectl for the web."







After analyzing the available interface options for Kubernetes, I decided to create a new one: Kubernetes Web View . Indeed, in fact, I just need all the power of kubectl



on the web, namely:





Outside of the non-goals solved by Kubernetes Web View, there are:





How does Kubernetes Web View help support and respond to incidents?



Support









Cluster Search in Kubernetes Web View



Incident response









Kubernetes Web View: a list of pods with a Pending status in all clusters



If you want to try Kubernetes Web View, I recommend that you familiarize yourself with the documentation or look at the live demo version .



Of course, the interface could have been better, but for now Kubernetes Web View is a tool for "advanced users" who do not shy away from manually manipulating URL paths if necessary. If you have comments / additions / wishes, please contact me on Twitter !



This article is a brief account of the premises that led to the creation of Kubernetes Web View. Others will follow! ( Note transl .: They should be expected in the author's blog .)



PS from translator



Read also in our blog:






All Articles