diff --git a/content/posts/installing-openqa-on-kubernetes-with-helm-charts/index.md b/content/posts/installing-openqa-on-kubernetes-with-helm-charts/index.md new file mode 100644 index 0000000..ee1a5d3 --- /dev/null +++ b/content/posts/installing-openqa-on-kubernetes-with-helm-charts/index.md @@ -0,0 +1,126 @@ ++++ +title = "Installing openQA on Kubernetes with Helm Charts" +date = 2025-06-04 + +[taxonomies] +categories = ["Linux"] + +[extra] +author = "Emil Miler" ++++ + +Recently, I experimented with Kubernetes by installing [openQA](https://open.qa/) using Helm Charts. This article is a simple guide on how to do the same locally on your computer, with minimal effort. + + + +You need a working cluster. There are several single-node management tools that let you run a Kubernetes cluster locally on your machine, such as [k3d](https://k3d.io/), [kind](https://kind.sigs.k8s.io/), or [minikube](https://minikube.sigs.k8s.io/). They provide a cluster entirely isolated within a container. + +I will be using minikube. + + +## Installation of Tools + +Install minikube -- or any other management tool -- along with *helm*. For example, on Void Linux: + +``` +xbps-install -S minikube kubernetes-helm +``` + +You also have to have a running container engine, such as [Podman](https://podman.io/) or [Docker](https://www.docker.com/). Configuring a container engine is outside the scope of this article. + + +## Preparing the Cluster + + + +Since I am using minikube, I can simply start it like so: + + +``` +minikube start +``` + +This might take a while during the initial setup. If you want, you can also run a web-based dashboard for better visualization and debugging. + +``` +minikube dashboard +``` + +The dashboard will open in your default browser. + + +## Downloading openQA Charts + +The official charts are available in the [openQA source code repository](https://github.com/os-autoinst/openQA), which can be cloned with the following command: + + +``` +git clone https://github.com/os-autoinst/openQA.git +``` + +If you have GitHub setup properly with SSH, you might use this instead: + +``` +git clone git@github.com:os-autoinst/openQA.git +``` + +The charts themselves are stored in `container/helm`. You can change your working directory to that location: + +``` +cd openQA/container/helm +``` + +### Chart Structure + +The `charts` folder contains several different charts: + +- `openqa` -- Parent chart. +- `webui` -- Web interface and API for openQA. +- `worker` -- openQA worker that performs the actual test execution. + +We will be working with the parent chart `openqa`. Since it references the other charts, they will be handled automatically by the parent. + + +## Installing openQA + +By default, the openQA WebUI template only exposes ports to the local network inside minikube, which makes the WebUI inaccessible from the host system. We need to add `type: NodePort` to the port specification under `spec:` in `charts/webui/templates/svc.yml`: + +``` +sed -i '/^[[:space:]]*spec:/a\ type: NodePort' charts/webui/templates/svc.yml +``` + +We then have to update dependencies and install openQA: + +``` +$ helm dependency update charts/openqa/ +$ helm install openqa charts/openqa/ +``` + +We can also list installed releases to confirm that openQA was deployed: + +``` +$ helm list +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +openqa default 1 2025-06-04 12:39:08.150021755 +0200 CEST deployed openqa-0.1.0 +``` + +The minikube dashboard also lists all running pods: + +![Minikube Dashboard, Pods](minikube-dashboard-pods.png) + + +### Accessing openQA WebUI + +Minikube provides a convenient way to list services and their exposed NodePorts: + +``` +$ minikube service openqa-webui --url +http://192.168.49.2:30765 +http://192.168.49.2:30134 +http://192.168.49.2:30333 +http://192.168.49.2:31258 +``` + +The openQA WebUI is running on port *30765*, which is now accessible directly from your browser. + +![openQA Dashboard](openqa-dashboard.png) diff --git a/content/posts/installing-openqa-on-kubernetes-with-helm-charts/minikube-dashboard-pods.png b/content/posts/installing-openqa-on-kubernetes-with-helm-charts/minikube-dashboard-pods.png new file mode 100644 index 0000000..1f9a602 Binary files /dev/null and b/content/posts/installing-openqa-on-kubernetes-with-helm-charts/minikube-dashboard-pods.png differ diff --git a/content/posts/installing-openqa-on-kubernetes-with-helm-charts/openqa-dashboard.png b/content/posts/installing-openqa-on-kubernetes-with-helm-charts/openqa-dashboard.png new file mode 100644 index 0000000..b7ad1df Binary files /dev/null and b/content/posts/installing-openqa-on-kubernetes-with-helm-charts/openqa-dashboard.png differ