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

Recent Posts

  • MCP Tool Annotations: Adding Metadata and Context to Your AI Tools
  • Fabric8 Kubernetes Client 7.2 is now available!
  • Connecting to an MCP Server from JavaScript using AI SDK
  • Connecting to an MCP Server from JavaScript using LangChain.js
  • The Future of Developer Tools: Adapting to Machine-Based Developers

Categories

  • Artificial Intelligence
  • Front-end
  • Go
  • Industry and business
  • Java
  • JavaScript
  • Legacy
  • Operations
  • Personal
  • Pet projects
  • Tools

Archives

  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • August 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • March 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
  • February 2020
  • January 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
  • January 2017
  • December 2015
  • November 2015
  • December 2014
  • March 2014
  • February 2011
  • November 2008
  • June 2008
  • May 2008
  • April 2008
  • January 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 - 2025 Marc Nuri