DirectorySecurity AdvisoriesPricing
Sign in
Directory
gitlab-runner logoHELM

gitlab-runner

Helm chart
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
## Configure namespace where the GitLab Runner deployment will be created
2
## By default, the runner deployment uses the Release namespace (.Release.Namespace)
3
## Set this value to override and deploy the runner in a different namespace
4
## This allows separation between runner management (this namespace) and job execution (runners.jobNamespace)
5
##
6
## Example: Deploy runner in "ops" namespace while jobs run in "gitlab" namespace
7
# namespace: ""
8
9
## GitLab Runner Image
10
##
11
## By default it's using registry.gitlab.com/gitlab-org/gitlab-runner:alpine-v{VERSION}
12
## where {VERSION} is taken from Chart.yaml from appVersion field
13
##
14
## ref: https://gitlab.com/gitlab-org/gitlab-runner/container_registry/29383?orderBy=NAME&sort=asc&search[]=alpine-v&search[]=
15
##
16
## Note: If you change the image to the ubuntu release
17
## don't forget to change the securityContext;
18
## these images run on different user IDs.
19
##
20
image:
21
registry: cgr.dev
22
repository: chainguard-private/gitlab-runner-fips
23
# tag: alpine-v{{.Chart.AppVersion}}
24
25
tag: 19.5.0-r1@sha256:2f85094b5b417d5c24209a6642173c06d54229d509d6245c6437f1c56acfed9f
26
## DEPRECATED: use `image.repository` instead.
27
## Kept for backward compatibility: when `image.image` is set it overrides
28
## `image.repository`, so existing overrides keep working across upgrades.
29
## Remove it from your values once you have switched to `image.repository`.
30
# image: gitlab-org/gitlab-runner
31
32
## When using GitLab Runner Helm Chart with gitlab-runner-ubi-images (https://gitlab.com/gitlab-org/ci-cd/gitlab-runner-ubi-images/container_registry)
33
## the installation fails because `dumb-init` is not packaged in the image. However, `tini` is present.
34
## This configuration will allow gitlab-runner-ubi-images users to explicitly enable the use of `tini` instead of `dumb-init`
35
useTini: false
36
## Specify a imagePullPolicy for the main runner deployment
37
## 'Always' if image.tag is 'latest', else set to 'IfNotPresent'
38
##
39
## Note: it does not apply to job containers launched by this executor.
40
## Use `pull_policy` in [runners.kubernetes] to change it.
41
##
42
## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
43
##
44
imagePullPolicy: IfNotPresent
45
## Specifying ImagePullSecrets on a Pod
46
## Kubernetes supports specifying container image registry keys on a Pod.
47
## ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
48
##
49
# imagePullSecrets:
50
# - name: "image-pull-secret"
51
52
## Timeout, in seconds, for liveness and readiness probes of a runner pod.
53
# probeTimeoutSeconds: 4
54
55
## Configure the livenessProbe. The probe runs `gitlab-runner verify` and
56
## fails when GitLab is unreachable; set enabled to false to keep an
57
## unreachable GitLab from restarting the runner pod.
58
livenessProbe: {}
59
# enabled: true
60
# initialDelaySeconds: 60
61
# periodSeconds: 60
62
# successThreshold: 1
63
# failureThreshold: 3
64
# terminationGracePeriodSeconds: 30
65
66
## Configure the readinessProbe
67
readinessProbe: {}
68
# initialDelaySeconds: 60
69
# periodSeconds: 60
70
# successThreshold: 1
71
# failureThreshold: 3
72
73
## Configure an optional startupProbe.
74
##
75
## Useful when the runner does work at boot (e.g. a deeper health check that
76
## dispatches a synthetic job) that should complete before the pod accepts
77
## traffic. While the startupProbe is running, kubelet does not run the
78
## liveness or readiness probes, so during a rolling update the new pod
79
## stays NotReady — and the old pod isn't terminated — until startupProbe
80
## passes. Specify the full Kubernetes probe spec.
81
##
82
## The example below uses the built-in `/health/ready` endpoint available
83
## since GitLab Runner 19.2, which gates readiness on the boot-time canary
84
## (opt in per runner via `[runners.experimental.boot_verify]` in the runner
85
## configuration; experimental). It is served by the
86
## metrics/debug server, so `metrics.enabled` must be set to `true` and the
87
## probe port must match `metrics.port`. You can also point the probe at any
88
## endpoint you provide yourself.
89
##
90
# startupProbe:
91
# httpGet:
92
# path: /health/ready
93
# port: 9252
94
# periodSeconds: 10
95
# failureThreshold: 30
96
startupProbe: {}
97
## How many runner pods to launch.
98
##
99
# replicas: 1
100
101
## How many old ReplicaSets for this Deployment you want to retain
102
# revisionHistoryLimit: 10
103
104
## The GitLab Server URL (with protocol) that want to register the runner against
105
## ref: https://docs.gitlab.com/runner/commands/index.html#gitlab-runner-register
106
##
107
# gitlabUrl: https://gitlab.your-domain.com/
108
109
## The Runner Token for adding new Runners to the GitLab Server. This must
110
## be retrieved from your GitLab instance. It is the token of an already registered runner.
111
## ref: (we don't have docs for that yet, but we want to use an existing token)
112
##
113
# runnerToken: ""
114
#
115
116
## Unregister all runners before termination
117
##
118
## Updating the runner's chart version or configuration will cause the runner container
119
## to be terminated and created again. This may cause your Gitlab instance to reference
120
## non-existant runners. Un-registering the runner before termination mitigates this issue.
121
## ref: https://docs.gitlab.com/runner/commands/index.html#gitlab-runner-unregister
122
##
123
## This property ensures that all the Runners present in the local config.toml are unregistered when the chart is uninstalled
124
## - If the token is prefixed with `glrt-` (meaning the runner was created in the UI or API),
125
## the unregisterRunners property deletes the runner manager, not the runner.
126
## The runner manager is identified by the runner and the machine that contains the config.toml.
127
unregisterRunners: true
128
## When stopping the runner, give it time to wait for its jobs to terminate.
129
##
130
## Updating the runner's chart version or configuration will cause the runner container
131
## to be terminated with a graceful stop request. terminationGracePeriodSeconds
132
## instructs Kubernetes to wait long enough for the runner pod to terminate gracefully.
133
## ref: https://docs.gitlab.com/runner/commands/#signals
134
terminationGracePeriodSeconds: 3600
135
## Set the certsSecretName in order to pass custom certficates for GitLab Runner to use.
136
## Provide resource name for a Kubernetes Secret Object in the same namespace,
137
## this is used to populate the /home/gitlab-runner/.gitlab-runner/certs/ directory
138
## ref: https://docs.gitlab.com/runner/configuration/tls-self-signed.html#supported-options-for-self-signed-certificates-targeting-the-gitlab-server
139
##
140
# certsSecretName:
141
142
## Configure the maximum number of concurrent jobs
143
## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
144
##
145
concurrent: 10
146
## Number of seconds until the forceful shutdown operation times out and exits the process.
147
## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
148
##
149
shutdown_timeout: 0
150
## Defines in seconds how often to check GitLab for new builds
151
## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
152
##
153
checkInterval: 3
154
## Configure GitLab Runner's logging level. Available values are: debug, info, warn, error, fatal, panic
155
## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
156
##
157
# logLevel:
158
159
## Configure GitLab Runner's logging format. Available values are: runner, text, json
160
## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
161
##
162
# logFormat:
163
164
## Configure GitLab Runner's Sentry DSN.
165
## ref https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
166
##
167
# sentryDsn:
168
169
## Configure GitLab Runner's maximum connection age for TLS keepalive connections.
170
## ref https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
171
##
172
# connectionMaxAge: "15m"
173
174
## A custom bash script that will be executed prior to the invocation of the
175
## gitlab-runner process
176
#
177
#preEntrypointScript: |
178
# echo "hello"
179
180
## Specify whether the runner should start the session server.
181
## Defaults to false
182
## ref:
183
##
184
## When sessionServer is enabled, the user can either provide a public publicIP
185
## or rely on the external IP auto discovery.
186
## When a serviceAccountName is used with the automounting to the pod disabled,
187
## we recommend the usage of the publicIP
188
sessionServer:
189
enabled: false
190
# annotations: {}
191
# labels: {}
192
# timeout: 1800
193
# internalPort: 8093
194
# externalPort: 9000
195
196
#In case sessionServer.serviceType is NodePort. If not defined, auto NodePort will be assigned.
197
# nodePort: 30093
198
199
# publicIP: ""
200
# loadBalancerSourceRanges:
201
# - 1.2.3.4/32
202
203
#Valid values: ClusterIP, Headless, NodePort, LoadBalancer
204
serviceType: LoadBalancer
205
## Specify the services external traffic policy
206
##
207
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
208
##
209
# externalTrafficPolicy:
210
211
## Specify the services internal traffic policy
212
##
213
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
214
##
215
# internalTrafficPolicy:
216
217
# if enabled, sessionServer.publicIP variable should be set to the host e.g. runner1.example.com
218
ingress:
219
enabled: false
220
className: ""
221
annotations: {}
222
tls:
223
- secretName: gitlab-runner-session-server
224
## For RBAC support:
225
rbac:
226
## Specifies whether a Role and RoleBinding should be created
227
## If this value is set to `true`, `serviceAccount.create` should also be set to either `true` or `false`
228
##
229
create: false
230
## Define the generated serviceAccountName when create is set to true
231
## It defaults to "gitlab-runner.fullname" if not provided
232
## DEPRECATED: Please use `serviceAccount.name` instead
233
generatedServiceAccountName: ""
234
## Define list of rules to be added to the rbac role permissions.
235
## Each rule supports the keys:
236
## - apiGroups: default "" (indicates the core API group) if missing or empty.
237
## - resources: default "*" if missing or empty.
238
## - verbs: default "*" if missing or empty.
239
##
240
## Read more about the recommended rules on the following link
241
##
242
## ref: https://docs.gitlab.com/runner/executors/kubernetes/index.html#configure-runner-api-permissions
243
##
244
rules: []
245
# - resources: ["events"]
246
# verbs: ["list", "watch"]
247
# - resources: ["namespaces"]
248
# verbs: ["create", "delete"]
249
# - resources: ["pods"]
250
# verbs: ["create","delete","get"]
251
# - apiGroups: [""]
252
# resources: ["pods/attach","pods/exec"]
253
# verbs: ["get","create","patch","delete"]
254
# - apiGroups: [""]
255
# resources: ["pods/log"]
256
# verbs: ["get","list"]
257
# - resources: ["secrets"]
258
# verbs: ["create","delete","get","update"]
259
# - resources: ["serviceaccounts"]
260
# verbs: ["get"]
261
# - resources: ["services"]
262
# verbs: ["create","get"]
263
264
## Run the gitlab-bastion container with the ability to deploy/manage containers of jobs
265
## cluster-wide or only within namespace
266
clusterWideAccess: false
267
## Use the following Kubernetes Service Account name if RBAC is disabled in this Helm chart (see rbac.create)
268
## DEPRECATED: Please use `serviceAccount.name` instead
269
##
270
# serviceAccountName: default
271
272
## Specify annotations for Service Accounts, useful for annotations such as eks.amazonaws.com/role-arn.
273
## Values may refer to other values as the _tpl_ function is implicitly applied. Mind the quotes when using this, e.g.
274
## serviceAccountAnnotations:
275
## eks.amazonaws.com/role-arn: "arn:aws:iam::{{ .Values.global.accountId }}:role/{{ .Values.global.iamRoleName }}"
276
##
277
## ref: https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html
278
##
279
## DEPRECATED: Please use `serviceAccount.annotations` instead
280
##
281
serviceAccountAnnotations: {}
282
## Use podSecurity Policy
283
## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/
284
podSecurityPolicy:
285
enabled: false
286
resourceNames:
287
- gitlab-runner
288
## Specify one or more imagePullSecrets used for pulling the runner image
289
##
290
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account
291
##
292
## DEPRECATED: Please use `serviceAccount.imagePullSecrets` instead
293
##
294
imagePullSecrets: []
295
## Configure ServiceAccount
296
##
297
serviceAccount:
298
## Specifies whether a ServiceAccount should be created
299
##
300
## TODO: Set default to `false`
301
# create: false
302
## The name of the ServiceAccount to use.
303
## If not set and create is `true`, a name is generated using the `gitlab-runner.fullname`` template
304
##
305
name: ""
306
## Additional custom annotations for the ServiceAccount, useful for annotations such as eks.amazonaws.com/role-arn.
307
## Values may refer other values as the _tpl_ function is implicitly applied. Mind the quotes when using this, e.g.
308
## serviceAccountAnnotations:
309
## eks.amazonaws.com/role-arn: "arn:aws:iam::{{ .Values.global.accountId }}:role/{{ .Values.global.iamRoleName }}"
310
##
311
## ref: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html
312
##
313
annotations: {}
314
## Specify one or more imagePullSecrets used for pulling the runner image
315
##
316
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account
317
##
318
imagePullSecrets: []
319
## Configure integrated Prometheus metrics exporter
320
##
321
## ref: https://docs.gitlab.com/runner/monitoring/#configuration-of-the-metrics-http-server
322
##
323
metrics:
324
enabled: false
325
## Define a name for the metrics port
326
##
327
portName: metrics
328
## Provide a port number for the integrated Prometheus metrics exporter
329
##
330
port: 9252
331
## Configure a prometheus-operator serviceMonitor to allow autodetection of
332
## the scraping target. Requires enabling the service resource below.
333
##
334
## DEPRECATED: Use podMonitor instead. ServiceMonitor requires a Service and
335
## cannot collect metrics during graceful shutdown when pods are marked NotReady.
336
##
337
serviceMonitor:
338
enabled: false
339
## Namespace where ServiceMonitor should be installed. Defaults to the
340
## same namespace where the release will be installed.
341
##
342
namespace: ""
343
## Provide additional labels to the service monitor resource
344
##
345
## labels: {}
346
## Provide annotations to the service monitor ressource
347
##
348
## annotations: {}
349
350
## Define a scrape interval (otherwise prometheus default is used)
351
##
352
## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
353
##
354
# interval: ""
355
356
## Specify the scrape protocol scheme e.g., https or http
357
##
358
# scheme: "http"
359
360
## Supply a tls configuration for the service monitor
361
##
362
## ref: https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/charts/crds/crds/crd-servicemonitors.yaml
363
##
364
# tlsConfig: {}
365
366
## The URI path where prometheus metrics can be scraped from
367
##
368
# path: "/metrics"
369
370
## A list of MetricRelabelConfigs to apply to samples before ingestion
371
##
372
## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs
373
##
374
# metricRelabelings: []
375
376
## A list of RelabelConfigs to apply to samples before scraping
377
##
378
## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
379
##
380
## relabelings: []
381
382
## Configure a prometheus-operator podMonitor to scrape metrics directly from pods.
383
##
384
## RECOMMENDED: PodMonitor is the preferred method for collecting metrics as it:
385
## - Scrapes metrics directly from pods without requiring a Service
386
## - Continues to collect metrics during graceful shutdown when pods are marked NotReady
387
## - Provides better visibility into shutdown metrics and termination behavior
388
##
389
podMonitor:
390
enabled: false
391
## Namespace where PodMonitor should be installed. Defaults to the
392
## same namespace where the release will be installed.
393
##
394
namespace: ""
395
## Provide additional labels to the pod monitor resource
396
##
397
## labels: {}
398
## Provide annotations to the pod monitor resource
399
##
400
## annotations: {}
401
402
## Define a scrape interval (otherwise prometheus default is used)
403
##
404
## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
405
##
406
# interval: ""
407
408
## Specify the scrape protocol scheme e.g., https or http
409
##
410
# scheme: "http"
411
412
## Supply a tls configuration for the pod monitor
413
##
414
## ref: https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/charts/crds/crds/crd-podmonitors.yaml
415
##
416
# tlsConfig: {}
417
418
## The URI path where prometheus metrics can be scraped from
419
##
420
# path: "/metrics"
421
422
## A list of MetricRelabelConfigs to apply to samples before ingestion
423
##
424
## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs
425
##
426
# metricRelabelings: []
427
428
## A list of RelabelConfigs to apply to samples before scraping
429
##
430
## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
431
##
432
## relabelings: []
433
434
## Configure a service resource (optional, only needed if using the deprecated
435
## ServiceMonitor instead of the recommended PodMonitor)
436
service:
437
enabled: false
438
## Provide additonal labels for the service
439
##
440
# labels: {}
441
442
## Provide additonal annotations for the service
443
##
444
# annotations: {}
445
446
## Define a specific ClusterIP if you do not want a dynamic one
447
##
448
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address
449
##
450
# clusterIP: ""
451
452
## Define a list of one or more external IPs for this service
453
##
454
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
455
##
456
# externalIPs: []
457
458
## Provide a specific loadbalancerIP e.g., of an external Loadbalancer
459
##
460
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
461
##
462
# loadBalancerIP: ""
463
464
## Provide a list of source IP ranges to have access to this service
465
##
466
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#aws-nlb-support
467
##
468
# loadBalancerSourceRanges: []
469
470
## Specify the service type e.g., ClusterIP, NodePort, LoadBalancer or ExternalName
471
##
472
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
473
##
474
type: ClusterIP
475
## Specify the services metrics nodeport if you use a service of type nodePort
476
##
477
# metrics:
478
## Specify the node port under which the prometheus metrics of the runner are made
479
## available.
480
##
481
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#nodeport
482
##
483
# nodePort: ""
484
485
## Provide a list of additional ports to be exposed by this service
486
##
487
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
488
##
489
# additionalPorts: []
490
491
## Specify the services external traffic policy
492
##
493
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
494
##
495
# externalTrafficPolicy:
496
497
## Specify the services internal traffic policy
498
##
499
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
500
##
501
# internalTrafficPolicy:
502
503
## Configuration for the Pods that the runner launches for each new job
504
##
505
runners:
506
## Configure namespace where GitLab Runner job pods will be created
507
## By default, job pods use the Release namespace (.Release.Namespace)
508
## Set this value to run jobs in a different namespace than the runner deployment
509
## This enables separation between runner management and job execution
510
##
511
## Example: Runner in "ops" namespace, jobs in "gitlab" namespace
512
# jobNamespace: ""
513
514
# runner configuration, where the multi line string is evaluated as a
515
# template so you can specify helm values inside of it.
516
#
517
# tpl: https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function
518
# runner configuration: https://docs.gitlab.com/runner/configuration/advanced-configuration.html
519
config: |
520
[[runners]]
521
[runners.kubernetes]
522
namespace = "{{ default .Release.Namespace .Values.runners.jobNamespace }}"
523
image = "alpine"
524
## Absolute path for an existing runner configuration file
525
## Can be used alongside "volumes" and "volumeMounts" to use an external config file
526
## Active if runners.config is empty or null
527
configPath: ""
528
## When set, written verbatim as the runner's config.toml and `gitlab-runner
529
## register` is skipped on boot. The supplied TOML is passed through `tpl`,
530
## so Helm values can be interpolated as usual.
531
##
532
## configOverride must be a COMPLETE config.toml: it replaces the rendered
533
## config in its entirety, so the following chart values have NO effect and
534
## must be expressed directly in the TOML (or omitted):
535
##
536
## - concurrent, checkInterval, shutdown_timeout, logLevel, logFormat,
537
## sentryDsn, connectionMaxAge
538
## - metrics.enabled / metrics.port (set `listen_address = ":<port>"`)
539
## - sessionServer.* (write [session_server] directly; placeholder
540
## substitution is also skipped)
541
## - runners.config, runners.configPath
542
## - runners.name, runners.tags, runners.locked, runners.protected,
543
## runners.runUntagged, runners.maximumTimeout, runners.executor,
544
## runners.jobNamespace
545
## - gitlabUrl (set `url = "..."` under [[runners]])
546
## - runnerRegistrationToken / runnerToken (the token lives in the TOML or
547
## is injected via extraEnv / extraEnvFromRefs / secrets)
548
##
549
## Pod-level values (extraEnv, secrets, certsSecretName, volumes, RBAC,
550
## metrics Service/PodMonitor, ...) are unaffected.
551
##
552
## On boot the entrypoint runs `gitlab-runner verify --url=` so an invalid
553
## token fails loudly instead of producing a runner that never picks up jobs.
554
##
555
# configOverride: |
556
# concurrent = 10
557
# check_interval = 3
558
# log_level = "info"
559
#
560
# [[runners]]
561
# name = "my-runner"
562
# url = "https://gitlab.example.com/"
563
# token = "glrt-xxxxxxxxxxxxxxxxxxxx"
564
# executor = "kubernetes"
565
# [runners.kubernetes]
566
# namespace = "gitlab-runner"
567
# image = "alpine"
568
569
## Which executor should be used
570
##
571
# executor: kubernetes
572
573
## Specify the name for the runner.
574
##
575
# name: ""
576
577
## The name of the secret containing runner-token and runner-registration-token
578
# secret: gitlab-runner
579
580
## Distributed runners caching
581
## ref: https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching
582
##
583
## If you want to use s3 based distributing caching:
584
## First of all you need to uncomment General settings and S3 settings sections.
585
##
586
## Create a secret 's3access' containing 'accesskey' & 'secretkey'
587
## ref: https://aws.amazon.com/blogs/security/wheres-my-secret-access-key/
588
##
589
## $ kubectl create secret generic s3access \
590
## --from-literal=accesskey="YourAccessKey" \
591
## --from-literal=secretkey="YourSecretKey"
592
## ref: https://kubernetes.io/docs/concepts/configuration/secret/
593
##
594
## If you want to use gcs based distributing caching:
595
## First of all you need to uncomment General settings and GCS settings sections.
596
##
597
## Access using credentials file:
598
## Create a secret 'google-application-credentials' containing your application credentials file.
599
## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnerscachegcs-section
600
## You could configure
601
## $ kubectl create secret generic google-application-credentials \
602
## --from-file=gcs-application-credentials-file=./path-to-your-google-application-credentials-file.json
603
## ref: https://kubernetes.io/docs/concepts/configuration/secret/
604
##
605
## Access using access-id and private-key:
606
## Create a secret 'gcsaccess' containing 'gcs-access-id' & 'gcs-private-key'.
607
## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnerscachegcs-section
608
## You could configure
609
## $ kubectl create secret generic gcsaccess \
610
## --from-literal=gcs-access-id="YourAccessID" \
611
## --from-literal=gcs-private-key="YourPrivateKey"
612
## ref: https://kubernetes.io/docs/concepts/configuration/secret/
613
##
614
## If you want to use Azure-based distributed caching:
615
## First, uncomment General settings.
616
##
617
## Create a secret 'azureaccess' containing 'azure-account-name' & 'azure-account-key'
618
## ref: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction
619
##
620
## $ kubectl create secret generic azureaccess \
621
## --from-literal=azure-account-name="YourAccountName" \
622
## --from-literal=azure-account-key="YourAccountKey"
623
## ref: https://kubernetes.io/docs/concepts/configuration/secret/
624
cache: {}
625
## S3 the name of the secret.
626
# secretName: s3access
627
## Use this line for access using gcs-access-id and gcs-private-key
628
# secretName: gcsaccess
629
## Use this line for access using google-application-credentials file
630
# secretName: google-application-credentials
631
## Use this line for access using Azure with azure-account-name and azure-account-key
632
# secretName: azureaccess
633
##
634
## When using cloud-native auth (e.g. Workload Identity) with the docker+machine
635
## executor, set this to true to prevent the chart's entrypoint from globally
636
## exporting cache credential env vars (CACHE_S3_*, GOOGLE_APPLICATION_CREDENTIALS,
637
## CACHE_GCS_*, CACHE_AZURE_*). This allows subprocesses (e.g. docker-machine)
638
## to use their own identity instead of inheriting the cache credentials.
639
##
640
## When this flag is set to true, you MUST configure cache credentials explicitly
641
## in runners.config under [runners.cache.*], for example:
642
## [runners.cache.gcs]
643
## CredentialsFile = "/secrets/gcs-application-credentials-file"
644
## BucketName = "my-cache-bucket"
645
## Otherwise the runner will not be able to access the cache.
646
##
647
## ref: https://gitlab.com/gitlab-com/gl-infra/production-engineering/-/work_items/28874
648
# disableGlobalCredentialsExport: false
649
## Specify the name of the scheduler which is used to schedule runner pods.
650
## Kubernetes supports multiple scheduler configurations.
651
## ref: https://kubernetes.io/docs/reference/scheduling
652
# schedulerName: "my-custom-scheduler"
653
654
## Configure securitycontext for the main container
655
## ref: https://kubernetes.io/docs/concepts/security/pod-security-standards/
656
##
657
securityContext:
658
allowPrivilegeEscalation: false
659
readOnlyRootFilesystem: false
660
runAsNonRoot: true
661
privileged: false
662
capabilities:
663
drop: ["ALL"]
664
## Configure update strategy for multi-replica deployments
665
## Kubernetes supports types Recreate, and RollingUpdate
666
## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
667
##
668
strategy: {}
669
# rollingUpdate:
670
# maxSurge: 1
671
# maxUnavailable: 0
672
# type: RollingUpdate
673
674
## Configure securitycontext valid for the whole pod
675
## ref: https://kubernetes.io/docs/concepts/security/pod-security-standards/
676
##
677
podSecurityContext:
678
runAsUser: 100
679
# runAsGroup: 65533
680
fsGroup: 65533
681
# supplementalGroups: [65533]
682
## Note: values for the ubuntu image:
683
# runAsUser: 999
684
# fsGroup: 999
685
686
## Configure resource requests and limits
687
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
688
##
689
resources: {}
690
# limits:
691
# memory: 256Mi
692
# cpu: 200m
693
# ephemeral-storage: 512Mi
694
# requests:
695
# memory: 128Mi
696
# cpu: 100m
697
# ephemeral-storage: 256Mi
698
699
## Affinity for pod assignment
700
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
701
##
702
affinity: {}
703
## TopologySpreadConstraints for pod assignment
704
## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/
705
##
706
topologySpreadConstraints: {}
707
# Example: The gitlab runner should be evenly spread across zones
708
# - maxSkew: 1
709
# topologyKey: zone
710
# whenUnsatisfiable: DoNotSchedule
711
# labelSelector:
712
# matchLabels:
713
# foo: bar
714
715
## RuntimeClass name for pod assignment
716
## ref: https://kubernetes.io/docs/concepts/containers/runtime-class/
717
##
718
runtimeClassName: ""
719
# Example: Once RuntimeClasses are configured for the cluster, you can specify it.
720
# runtimeClassName: myclass
721
722
## Node labels for pod assignment
723
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
724
##
725
nodeSelector: {}
726
# Example: The gitlab runner manager should not run on spot instances so you can assign
727
# them to the regular worker nodes only.
728
# node-role.kubernetes.io/worker: "true"
729
730
## List of node taints to tolerate (requires Kubernetes >= 1.6)
731
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
732
##
733
tolerations: []
734
# Example: Regular worker nodes may have a taint, thus you need to tolerate the taint
735
# when you assign the gitlab runner manager with nodeSelector or affinity to the nodes.
736
# - key: "node-role.kubernetes.io/worker"
737
# operator: "Exists"
738
739
## Configure environment variables that will be present when the registration command runs
740
## This provides further control over the registration process and the config.toml file
741
## ref: `gitlab-runner register --help`
742
## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html
743
##
744
# envVars:
745
# - name: RUNNER_EXECUTOR
746
# value: kubernetes
747
748
## Additional environment variables from key-value pairs.
749
extraEnv: {}
750
# CACHE_S3_SERVER_ADDRESS: s3.amazonaws.com
751
# CACHE_S3_BUCKET_NAME: runners-cache
752
# CACHE_S3_BUCKET_LOCATION: us-east-1
753
# CACHE_SHARED: true
754
755
## Additional environment variables from other data sources
756
extraEnvFrom: {}
757
# CACHE_S3_ACCESS_KEY:
758
# secretKeyRef:
759
# name: s3access
760
# key: accesskey
761
# CACHE_S3_SECRET_KEY:
762
# secretKeyRef:
763
# name: s3access
764
# key: secretkey
765
766
## Additional environment variables refs
767
extraEnvFromRefs: []
768
# - secretRef:
769
# name: gitlab-runner-cache-config
770
771
## list of hosts and IPs that will be injected into the pod's hosts file
772
hostAliases: []
773
# Example:
774
# - ip: "127.0.0.1"
775
# hostnames:
776
# - "foo.local"
777
# - "bar.local"
778
# - ip: "10.1.2.3"
779
# hostnames:
780
# - "foo.remote"
781
# - "bar.remote"
782
783
## Annotations to be added to deployment
784
##
785
deploymentAnnotations: {}
786
# Example:
787
# downscaler/uptime: <my_uptime_period>
788
789
## Labels to be added to deployment
790
##
791
deploymentLabels: {}
792
# Example:
793
# owner.team: <my_cool_team>
794
# owner.team: "{{ .Values.team }}"
795
# tags.{{ .Values.tag }}/env: "{{ .Values.environment }}"
796
797
## Init containers to be added to deployment
798
##
799
deploymentInitContainers: []
800
# Example
801
# - name: init-container
802
# image: busybox:latest
803
# command: ['sh', '-c', 'sleep 5']
804
805
## Lifecycle options to be added to deployment
806
##
807
deploymentLifecycle: {}
808
# Example
809
# preStop:
810
# exec:
811
# command: ["/bin/sh", "-c", "echo 'shutting down'"]
812
813
## Set hostname for runner pods
814
#hostname: my-gitlab-runner
815
816
## Annotations to be added to manager pod
817
##
818
podAnnotations: {}
819
# Example:
820
# iam.amazonaws.com/role: <my_role_arn>
821
822
## Labels to be added to manager pod
823
##
824
## Supports templating
825
podLabels: {}
826
# Example:
827
# owner.team: <my_cool_team>
828
# owner.team: "{{ .Values.team }}"
829
# tags.{{ .Values.tag }}/env: "{{ .Values.environment }}"
830
831
## PodDisruptionBudget for the runner manager Deployment. Only meaningful
832
## with multiple manager replicas.
833
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
834
##
835
# podDisruptionBudget: {}
836
# maxUnavailable: 1
837
838
## HPA support for custom metrics:
839
## This section enables runners to autoscale based on defined custom metrics.
840
## In order to use this functionality, you need to enable a custom metrics API server by
841
## implementing "custom.metrics.k8s.io" using supported third party adapter
842
## Example: https://github.com/directxman12/k8s-prometheus-adapter
843
##
844
# hpa: {}
845
# minReplicas: 1
846
# maxReplicas: 10
847
# metrics:
848
# - type: Pods
849
# pods:
850
# metricName: gitlab_runner_jobs
851
# targetAverageValue: 400m
852
853
## Configure priorityClassName for manager pod. See k8s docs for more info on how pod priority works:
854
## https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
855
priorityClassName: ""
856
## Secrets to be additionally mounted to the containers.
857
## All secrets are mounted through init-runner-secrets volume
858
## and placed as readonly at /init-secrets in the init container
859
## and finally copied to an in-memory volume runner-secrets that is
860
## mounted at /secrets.
861
secrets: []
862
# Example:
863
# - name: my-secret
864
# - name: myOtherSecret
865
# items:
866
# - key: key_one
867
# path: path_one
868
869
## Boolean to turn off the automountServiceAccountToken in the deployment
870
## ref: https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/#bound-service-account-token-volume
871
##
872
# automountServiceAccountToken: false
873
874
## Additional config files to mount in the containers in `/configmaps`.
875
##
876
## Please note that a number of keys are reserved by the runner.
877
## See https://gitlab.com/gitlab-org/charts/gitlab-runner/-/blob/main/templates/configmap.yaml
878
## for a current list.
879
configMaps: {}
880
## Labels to be added to configMaps
881
##
882
## Supports templating
883
configMapLabels: {}
884
# Example:
885
# owner.team: <my_cool_team>
886
# owner.team: "{{ .Values.team }}"
887
# tags.{{ .Values.tag }}/env: "{{ .Values.environment }}"
888
889
## Additional volumeMounts to add to the runner container
890
##
891
volumeMounts: []
892
# Example:
893
# - name: my-volume
894
# mountPath: /mount/path
895
896
## Additional volumes to add to the runner deployment
897
##
898
volumes: []
899
# Example:
900
# - name: my-volume
901
# persistentVolumeClaim:
902
# claimName: my-pvc
903
904
## Array of extra K8s manifests to deploy
905
##
906
extraObjects: []
907
# - apiVersion: external-secrets.io/v1
908
# kind: ExternalSecret
909
# metadata:
910
# name: '{{ include "gitlab-runner.secret" . }}'
911
# spec:
912
# refreshInterval: 1h
913
# secretStoreRef:
914
# kind: SecretStore
915
# name: my-secret-store
916
# target:
917
# template:
918
# data:
919
# runner-registration-token: "" # need to leave as an empty string for compatibility reasons
920
# runner-token: "{{`{{ .runnerToken }}`}}"
921
# dataFrom:
922
# - extract:
923
# key: my-secret-store-secret
924
925
## Add additional containers to the Pod, e.g. to run as sidecars.
926
##
927
## Example:
928
# - name: docker
929
# image: docker:20.10-dind
930
# securityContext:
931
# privileged: true
932
# volumeMounts:
933
# - mountPath: /var/run/
934
# name: dind-socket
935
# lifecycle:
936
# postStart:
937
# exec:
938
# command: [ "sh", "-c", "until docker info; do sleep 1; done;" ]
939
extraContainers: []
940

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.