+++ 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 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-19 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 Since openQA is confined to its own network within minikube, it is not directly accessible from the host system. Below are the services running inside minikube: ``` $ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE db ClusterIP 10.103.192.20 5432/TCP 6m34s db-hl ClusterIP None 5432/TCP 6m34s kubernetes ClusterIP 10.96.0.1 443/TCP 174m openqa-webui ClusterIP 10.104.24.71 9526/TCP,9527/TCP,9528/TCP,9529/TCP 6m34s ``` First, we need to create a proxy within the minikube network: ``` minikube tunnel ``` The openQA WebUI is running at `10.104.24.71` on port `9526` and is now accessible directly from the browser. ![openQA Dashboard](openqa-dashboard.png)