+++
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.

<!-- more -->

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   <none>        5432/TCP                              6m34s
db-hl          ClusterIP   None            <none>        5432/TCP                              6m34s
kubernetes     ClusterIP   10.96.0.1       <none>        443/TCP                               174m
openqa-webui   ClusterIP   10.104.24.71    <none>        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)
