A logo showing the text blog.marcnuri.com
Español
Home»Pet projects»YAKC – Kubernetes Dashboard

Recent Posts

  • Fabric8 Kubernetes Client 6.5.0 is now available!
  • Eclipse JKube 1.11 is now available!
  • Fabric8 Kubernetes Client 6.4.1 is now available!
  • I bought an iPad
  • Three years at Red Hat

Categories

  • Front-end
  • Java
  • JavaScript
  • Legacy
  • Operations
  • Personal
  • Pet projects
  • Tools

Archives

  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • December 2019
  • October 2019
  • September 2019
  • July 2019
  • March 2019
  • November 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • December 2017
  • July 2017
  • December 2015
  • November 2015
  • November 2008
  • November 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007

YAKC – Kubernetes Dashboard

2020-12-05 in Pet projects / Operations tagged Frontend / Java / Kubernetes / OpenShift / Quarkus / React / YAKC by Marc Nuri | Last updated: 2021-09-26

Reactive dashboard for Kubernetes built with Quarkus and React

In the new era of cloud-native applications and Kubernetes, you’ll find new alternatives for dashboards and CLI tools every day. This is yet another Dashboard tool.

YAKC – Kubernetes Dashboard is a full-fledged reactive Kubernetes web UI, and is the base project to demonstrate what you can achieve with YAKC Kubernetes Java Client.

The project is still in a PoC phase and I highly advise against using this in any production environment. However, the project is perfectly suitable for local clusters such as Minikube and the perfect aid for cloud-native developers.

Features

Following is the list of features currently covered, you can read more about each of them in their specific section.

  • 100% Open Source
  • Supersonic and Subatomic, built with Quarkus and compiled into an ultra-fast native-image
  • 100% Reactive. Server-Sent Events, Redux, and ReactJS combo pack
  • Search across all observed resources
  • Support for OpenShift specific resources
  • Responsive, mobile-first, clean, modern user interface
  • Integrated YAML editor
  • Support for Custom Resources
  • Container Log Viewer for your Pods
  • Remote Terminal for Pod Containers
  • Security TBD

Supersonic, Subatomic Kubernetes Dashboard

I implemented the Dashboard’s back-end with Quarkus and the YAKC Quarkus extension. This enables the build of a native binary and container image with subatomic memory foot-print and supersonic performance.

A screen shot of YAKC Kubernetes Dashboard showing the CPU and Memory information for a Pod Container
A screen shot of YAKC Kubernetes Dashboard showing the CPU and Memory information for a Pod Container
An image of YAKC Kubernetes Dashboard logs showing start time in 0.037 seconds
An image of YAKC Kubernetes Dashboard logs showing start time in 0.037 seconds

In the previous screenshots you can see that, once running, the Pod container uses < 50 MiB and starts up in less than 0.04 seconds.

100% Reactive

The back-end uses the Server-Sent Events web standard to send a real-time stream of Kubernetes resource updates to the front-end. The front-end web application maintains a local state of the Kubernetes resources in a Redux store which enables the user-interface to update upon any change streamed by the back-end.

An animation showing YAKC Kubernetes Dashboard reactive updates
An animation showing YAKC Kubernetes Dashboard reactive updates

Search across all observed resources in real-time

Since the cluster state is mirrored in the local Redux state, you can search and query real-time for any of the managed cluster resources in the combined search panel.

Support for OpenShift specific resources

The dashboard detects the underlying cluster technology and presents any additional resources compatible with YAKC.

Additional resources for OpenShift clusters include Deployment Configs and Routes (as of now).

Responsive, mobile-first user interface

I wanted the user interface to be as modern and clear as possible and also to be mobile-first. I designed most interfaces to be properly rendered on mobile devices and leverage screen real-estate for devices with wider screens.

A shortcut of YaKC Kubernetes Dashboard in mobile view featuring its responsive capabilities
A shortcut of YaKC Kubernetes Dashboard in mobile view featuring its responsive capabilities
A shortcut of YaKC Kubernetes Dashboard in desktop view featuring its responsive capabilities
A shortcut of YaKC Kubernetes Dashboard in desktop view featuring its responsive capabilities
An image of YAKC Dashboard Node details page with cool dials
An image of YAKC Dashboard Node details page with cool dials

Security

TO BE DECIDED. This project is still in the PoC phase. I’m still deciding what the best approach to security would be.

How can I try it?

If you made it through here, it’s probably because you’re interested in trying out the project 🎉.

The easiest way to try it is to deploy the provided YAML configurations in your cluster. You can find out more in the specific section of the GitHub repository. Please make sure to read the YAML files and change anything you need before applying them to your cluster (you should never trust any Internet source).

Please share your experience, I’d really like to hear what you think of the project and how I can improve it.

Annex 1: List of supported resources

  • Kubernetes
    • ClusterRole
    • ClusterRoleBinding
    • ConfigMap
    • CronJob
    • CustomResourceDefinition
    • CustomResources
    • DaemonSet
    • Deployment
    • Event
    • HorizontalPodAutoscaler
    • Ingress
    • Job
    • Namespace
    • Node
    • PersistentVolume
    • PersistentVolumeClaim
    • Pod
    • ReplicaSet
    • ReplicationController
    • Role
    • Secret
    • Service
    • StatefulSet
  • OpenShift
    • DeploymentConfig
    • Route
Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Post navigation

← Trigger Kubernetes CronJob manually from Java using YAKCKubernetes Operator vs. Controller →
© 2007 - 2023 Marc Nuri