Config.toml in gitlab runner helm chart - where does it get populated?

Hello everyone,

we are using GitLab runner on k8s installed with helm chart (quite old - still with a tiller so Helm 2 based). Currently the config.toml file has the following content (taken from k8s ConfigMap):

    concurrent = 4
    check_interval = 3
    log_level = "info"
    listen_address = ':9252'

but when I exec into gitlab runner pod I can see much more content in the config.toml file:

[session_server]
  session_timeout = 1800

[[runners]]
  name = "runner-gitlab-......."
  output_limit = 4096
  request_concurrency = 1
  ...
    [runners.kubernetes.volumes]
      [[runners.kubernetes.volumes.host_path]]
      ....

Where does the additional content get populated? I need to modify it as persistent.

Hi,

which Helm chart version are you using? You might extract its source from the tagged releases at Tags · GitLab.org / charts / GitLab Runner · GitLab and check the default values in the ConfigMap.yml.

Cheers,
Michael

Hi Michael,

it is gitlab-runner-0.16.1
Does that mean that I cannot modify the existing one and have to redeploy a new one with new values?

I have just looked at the code:

...
Update GitLab Runner version to 12.10.2
...

We use Gitlab 13 so the runner we are using is behind our main version - am I right?

Hi,

since you mentioned Helm v2, I did not want to point you directly to the latest head. Instead, the Git history hides the source of the Helm chart’s default configmap:

Looking at it, and digging deeper into the repository, I can see the values.yaml you can override.

I’m curious though where runners.kubernetes.volumes.host_path is coming from - this is not provided by the Helm chart, only discussed in MRs which are not merged (Add ability to define kubernetes volumes (!39) · Merge requests · GitLab.org / charts / GitLab Runner · GitLab). Are you maybe using a custom Docker image to deploy in the Helm chart for the runner?

Digging a bit deeper, the generation of the runner config.toml from the values.yaml seemed limiting and was addressed in Allow user to specify any runner configuration in the runner helm chart (#106) · Issues · GitLab.org / charts / GitLab Runner · GitLab and Allow user to specify any runner configuraton (!271) · Merge requests · GitLab.org / charts / GitLab Runner · GitLab - though this was 13.6 in Nov 2020, whereas 0.16.0 of the chart was released in April 2020.

That being said, chart versions 0.23.0+ allow to specify a custom config template for the runner. 0.27.0 adds a configmap override. More advanced configuration is described in the docs.

In your release, you are limited to the static value mapping between values.yaml and configmap.yaml defined by the Helm chart itself. There are workarounds discussed in the linked MRs with a custom Docker image for deployments. I would not go there though but instead upgrade the chart, and test the different versions and configuration options.

Cheers,
Michael

Hi Michael,

thanks for your help and recommendations.
We are not using a custom docker image - just the standard one:

gitlab/gitlab-runner:alpine-v12.10.2

I am still trying to understand how the runners.Kubernetes.volumes.host_path gets added to the config.toml file.- is it hardcoded in the runner binary file?