Skip to content

manusa/yakd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YAKD - Yet Another Kubernetes Dashboard

Docker Image Version (latest semver) Docker Pulls

Kubernetes Dashboard built with Quarkus and React.

Click to see a complete demo of the Dashboard

An gif screencast of YAKD Kubernetes Dashboard

Getting started

Minikube

If you just want to try out the final project, the easiest way is to try it out in Minikube.

# Enable the YAKD minikube addon 
minikube addons enable yakd
# Open Browser and navigate to deployed application
minikube service yakd-dashboard -n yakd-dashboard

In case that you're running an older Minikube version (or any other k8s cluster - needs access to node), or you want to deploy the latest released snapshot you can deploy the application using the provided Kubernetes manifests:

# Deploy the application using https://hub.docker.com/r/marcnuri/yakd SNAPSHOT
kubectl create -f https://raw.githubusercontent.com/manusa/yakd/main/docs/yakd-kubernetes-dashboard.minikube.yml
# Open Browser and navigate to deployed application
minikube service yakd

OpenShift Instruqt

You can test YAKD Kubernetes Dashboard by taking advantage of the OpenShift getting started Instruqt.

Access the Course (from Red Hat): https://developers.redhat.com/courses/openshift/getting-started

When the terminal loads, apply the provided YAKD Kubernetes Dashboard configuration:

#
# Deploy the application using https://hub.docker.com/r/marcnuri/yakd SNAPSHOT
#
$ oc create -f https://raw.githubusercontent.com/manusa/yakd/main/docs/yakc-kubernetes-dashboard.openshift-4.yml
service/yakc-quarkus-kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/yakc-kubernetes-dashboard-cluster-admin created
deployment.apps/yakc-quarkus-kubernetes-dashboard created
route.route.openshift.io/yakc-quarkus-kubernetes-dashboard created
#
# Retrieve URL for created route (should be ready once the YAKD Pod is running and ready)
#
$ echo "http://$(oc get route yakd -o jsonpath='{.spec.host}')"
http://yakd-default.crc-lgph7-master-0.crc.q1aebzewtnbc.instruqt.io

Now you can open the URL in your browser.

Build

To build the whole project (Front-end & Back-end), the easiest way is to run the Maven build with the provided profile build-frontend.

# Build project
$ mvn clean package -Pbuild-frontend

Native image

Build the application using the native property.

# On Windows first you need to run this
$ "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" && mvn clean install -Pnative
# To build (You can combine with the front-end build profiles)
$ mvn clean package -Dnative

(Windows) Install vc build tools

$ choco install -y visualstudio2017community --no-progress --package-parameters "--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.CMake.Project"

Build & Deploy to Minikube using Maven

Follow these instructions if you want to build & deploy the project into a Kubernetes Cluster, in this case Minikube.

# Provide access to Minikube's Docker daemon (allows to skip pushing the generated image)
$ eval $(minikube docker-env)
# Build and deploy project
$ mvn clean install -Pbuild-frontend,k8s
# Open Browser and navigate to deployed application
$ minikube service yakc-dashboard

This will also add a role binding for the default service account to the cluster-admin role in the default namespace. In case you are working on a different namespace you can customize this value by providing a value for the k8s.namespace project property:

# Build and deploy project to custom namespace
$ mvn clean install -Pbuild-frontend,k8s -Dk8s.namespace=custom

Development

You can work on the project with hot reload by starting both applications separately.

Back-End

The back-end application is a Quarkus application, you can start it in development mode by:

$ mvn quarkus:dev

Front-End

You can find the React client application in the src/main/frontend directory.

# Install required dependencies
$ npm install
# Start development mode
$ npm start

You can point your browser to localhost:3000.