Local playground with Kuar web app

Kuar is a web based (SPA) application that contains a couple of handy features that can verify the k8gb functionality. It can resolve DNS names, simulate probe failures, can simulate a CPU-intensive workload by generating RSA key pairs, and also contains a simple API for the queue (push & pop strings).

Make sure you have all the tools mentioned in this section installed.

First, spin up two local k3s clusters:

make deploy-full-local-setup

Again, you can verify that everything is up and running by following the steps here.

Deploy the Kuar app

make deploy-kuar-app

This task will deploy Kuar into both clusters and exposes it. It also patches the installed nginx controller to serve the app even if the Host header is not provided in the request. This way you can access the application in your browser under http://localhost:80 for cluster 1 and http://localhost:81 for cluster 2.

Make sure the app on http://localhost is responding, it may take a minute for the nginx ingress controller to restart with the correct parameters.

The make target also modified the deployment of the Kuar application to use our core DNS servers. To verify that this was done, one can open the Kuar's file system browser tab and open /etc/resolv.conv. It should contain the same IP as cluster-IP assigned to k8gb-coredns service.

Together with Kuar, we also prepared the failover gslb resource for k8gb. Where the first cluster (geotag = eu) is the primary one.

Simulate failure

Before we do that, we can visit Kuar on cluster 2 and verify that hostname kuar.cloud.example.com is correctly resolved IPs corresponding to nodes in the primary cluster - which is the cluster 1. This DNS resolution will work the same way on both clusters, but we will be simulating the failure on cluster 1 soon so the web API will not respond on cluster 1.

Kuar dns resolution

Now we can open a new tab with Kuar on cluster one and simulate the readiness probe failure for the next 10 checks - http://localhost/-/readiness.

Kuar probes

Once we do that, the web API on cluster 1 will become unavailable. So we can switch to cluster 2 and run the web-based dig again. This time it should respond with IPs from cluster two. However, once the readiness probe will start succeeding again, it will switch back to cluster 1.

Kuar dns resolution again