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)
6## Example: Deploy runner in "ops" namespace while jobs run in "gitlab" namespace
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
14## ref: https://gitlab.com/gitlab-org/gitlab-runner/container_registry/29383?orderBy=NAME&sort=asc&search[]=alpine-v&search[]=
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.
22 image: scratch-images/test-tmp/gitlab-runner
23 # tag: alpine-v{{.Chart.AppVersion}}
25 tag: 19.3.1-r3@sha256:1aec2132115838609742394be8199907e43bd23b7b6de1c089cd56d24bc0688c
26## When using GitLab Runner Helm Chart with gitlab-runner-ubi-images (https://gitlab.com/gitlab-org/ci-cd/gitlab-runner-ubi-images/container_registry)
27## the installation fails because `dumb-init` is not packaged in the image. However, `tini` is present.
28## This configuration will allow gitlab-runner-ubi-images users to explicitly enable the use of `tini` instead of `dumb-init`
30## Specify a imagePullPolicy for the main runner deployment
31## 'Always' if imageTag is 'latest', else set to 'IfNotPresent'
33## Note: it does not apply to job containers launched by this executor.
34## Use `pull_policy` in [runners.kubernetes] to change it.
36## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
38imagePullPolicy: IfNotPresent
39## Specifying ImagePullSecrets on a Pod
40## Kubernetes supports specifying container image registry keys on a Pod.
41## ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
44# - name: "image-pull-secret"
46## Timeout, in seconds, for liveness and readiness probes of a runner pod.
47# probeTimeoutSeconds: 4
49## Configure the livenessProbe
51# initialDelaySeconds: 60
55# terminationGracePeriodSeconds: 30
57## Configure the readinessProbe
59# initialDelaySeconds: 60
64## Configure an optional startupProbe.
66## Useful when the runner does work at boot (e.g. a deeper health check that
67## dispatches a synthetic job) that should complete before the pod accepts
68## traffic. While the startupProbe is running, kubelet does not run the
69## liveness or readiness probes, so during a rolling update the new pod
70## stays NotReady — and the old pod isn't terminated — until startupProbe
71## passes. Specify the full Kubernetes probe spec.
73## The example below uses the built-in `/health/ready` endpoint available
74## since GitLab Runner 19.2, which gates readiness on the boot-time canary
75## (opt in per runner via `[runners.experimental.boot_verify]` in the runner
76## configuration; experimental). It is served by the
77## metrics/debug server, so `metrics.enabled` must be set to `true` and the
78## probe port must match `metrics.port`. You can also point the probe at any
79## endpoint you provide yourself.
88## How many runner pods to launch.
92## How many old ReplicaSets for this Deployment you want to retain
93# revisionHistoryLimit: 10
95## The GitLab Server URL (with protocol) that want to register the runner against
96## ref: https://docs.gitlab.com/runner/commands/index.html#gitlab-runner-register
98# gitlabUrl: https://gitlab.your-domain.com/
100## The Runner Token for adding new Runners to the GitLab Server. This must
101## be retrieved from your GitLab instance. It is the token of an already registered runner.
102## ref: (we don't have docs for that yet, but we want to use an existing token)
107## Unregister all runners before termination
109## Updating the runner's chart version or configuration will cause the runner container
110## to be terminated and created again. This may cause your Gitlab instance to reference
111## non-existant runners. Un-registering the runner before termination mitigates this issue.
112## ref: https://docs.gitlab.com/runner/commands/index.html#gitlab-runner-unregister
114## This property ensures that all the Runners present in the local config.toml are unregistered when the chart is uninstalled
115## - If the token is prefixed with `glrt-` (meaning the runner was created in the UI or API),
116## the unregisterRunners property deletes the runner manager, not the runner.
117## The runner manager is identified by the runner and the machine that contains the config.toml.
118unregisterRunners: true
119## When stopping the runner, give it time to wait for its jobs to terminate.
121## Updating the runner's chart version or configuration will cause the runner container
122## to be terminated with a graceful stop request. terminationGracePeriodSeconds
123## instructs Kubernetes to wait long enough for the runner pod to terminate gracefully.
124## ref: https://docs.gitlab.com/runner/commands/#signals
125terminationGracePeriodSeconds: 3600
126## Set the certsSecretName in order to pass custom certficates for GitLab Runner to use.
127## Provide resource name for a Kubernetes Secret Object in the same namespace,
128## this is used to populate the /home/gitlab-runner/.gitlab-runner/certs/ directory
129## ref: https://docs.gitlab.com/runner/configuration/tls-self-signed.html#supported-options-for-self-signed-certificates-targeting-the-gitlab-server
133## Configure the maximum number of concurrent jobs
134## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
137## Number of seconds until the forceful shutdown operation times out and exits the process.
138## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
141## Defines in seconds how often to check GitLab for new builds
142## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
145## Configure GitLab Runner's logging level. Available values are: debug, info, warn, error, fatal, panic
146## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
150## Configure GitLab Runner's logging format. Available values are: runner, text, json
151## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
155## Configure GitLab Runner's Sentry DSN.
156## ref https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
160## Configure GitLab Runner's maximum connection age for TLS keepalive connections.
161## ref https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section
163# connectionMaxAge: "15m"
165## A custom bash script that will be executed prior to the invocation of the
166## gitlab-runner process
168#preEntrypointScript: |
171## Specify whether the runner should start the session server.
175## When sessionServer is enabled, the user can either provide a public publicIP
176## or rely on the external IP auto discovery.
177## When a serviceAccountName is used with the automounting to the pod disabled,
178## we recommend the usage of the publicIP
186 #In case sessionServer.serviceType is NodePort. If not defined, auto NodePort will be assigned.
190 # loadBalancerSourceRanges:
193 #Valid values: ClusterIP, Headless, NodePort, LoadBalancer
194 serviceType: LoadBalancer
195 ## Specify the services external traffic policy
197 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
199 # externalTrafficPolicy:
201 ## Specify the services internal traffic policy
203 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
205 # internalTrafficPolicy:
207 # if enabled, sessionServer.publicIP variable should be set to the host e.g. runner1.example.com
213 - secretName: gitlab-runner-session-server
216 ## Specifies whether a Role and RoleBinding should be created
217 ## If this value is set to `true`, `serviceAccount.create` should also be set to either `true` or `false`
220 ## Define the generated serviceAccountName when create is set to true
221 ## It defaults to "gitlab-runner.fullname" if not provided
222 ## DEPRECATED: Please use `serviceAccount.name` instead
223 generatedServiceAccountName: ""
224 ## Define list of rules to be added to the rbac role permissions.
225 ## Each rule supports the keys:
226 ## - apiGroups: default "" (indicates the core API group) if missing or empty.
227 ## - resources: default "*" if missing or empty.
228 ## - verbs: default "*" if missing or empty.
230 ## Read more about the recommended rules on the following link
232 ## ref: https://docs.gitlab.com/runner/executors/kubernetes/index.html#configure-runner-api-permissions
235 # - resources: ["events"]
236 # verbs: ["list", "watch"]
237 # - resources: ["namespaces"]
238 # verbs: ["create", "delete"]
239 # - resources: ["pods"]
240 # verbs: ["create","delete","get"]
242 # resources: ["pods/attach","pods/exec"]
243 # verbs: ["get","create","patch","delete"]
245 # resources: ["pods/log"]
246 # verbs: ["get","list"]
247 # - resources: ["secrets"]
248 # verbs: ["create","delete","get","update"]
249 # - resources: ["serviceaccounts"]
251 # - resources: ["services"]
252 # verbs: ["create","get"]
254 ## Run the gitlab-bastion container with the ability to deploy/manage containers of jobs
255 ## cluster-wide or only within namespace
256 clusterWideAccess: false
257 ## Use the following Kubernetes Service Account name if RBAC is disabled in this Helm chart (see rbac.create)
258 ## DEPRECATED: Please use `serviceAccount.name` instead
260 # serviceAccountName: default
262 ## Specify annotations for Service Accounts, useful for annotations such as eks.amazonaws.com/role-arn.
263 ## Values may refer to other values as the _tpl_ function is implicitly applied. Mind the quotes when using this, e.g.
264 ## serviceAccountAnnotations:
265 ## eks.amazonaws.com/role-arn: "arn:aws:iam::{{ .Values.global.accountId }}:role/{{ .Values.global.iamRoleName }}"
267 ## ref: https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html
269 ## DEPRECATED: Please use `serviceAccount.annotations` instead
271 serviceAccountAnnotations: {}
272 ## Use podSecurity Policy
273 ## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/
278 ## Specify one or more imagePullSecrets used for pulling the runner image
280 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account
282 ## DEPRECATED: Please use `serviceAccount.imagePullSecrets` instead
285## Configure ServiceAccount
288 ## Specifies whether a ServiceAccount should be created
290 ## TODO: Set default to `false`
292 ## The name of the ServiceAccount to use.
293 ## If not set and create is `true`, a name is generated using the `gitlab-runner.fullname`` template
296 ## Additional custom annotations for the ServiceAccount, useful for annotations such as eks.amazonaws.com/role-arn.
297 ## Values may refer other values as the _tpl_ function is implicitly applied. Mind the quotes when using this, e.g.
298 ## serviceAccountAnnotations:
299 ## eks.amazonaws.com/role-arn: "arn:aws:iam::{{ .Values.global.accountId }}:role/{{ .Values.global.iamRoleName }}"
301 ## ref: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html
304 ## Specify one or more imagePullSecrets used for pulling the runner image
306 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account
309## Configure integrated Prometheus metrics exporter
311## ref: https://docs.gitlab.com/runner/monitoring/#configuration-of-the-metrics-http-server
315 ## Define a name for the metrics port
318 ## Provide a port number for the integrated Prometheus metrics exporter
321 ## Configure a prometheus-operator serviceMonitor to allow autodetection of
322 ## the scraping target. Requires enabling the service resource below.
324 ## DEPRECATED: Use podMonitor instead. ServiceMonitor requires a Service and
325 ## cannot collect metrics during graceful shutdown when pods are marked NotReady.
329 ## Namespace where ServiceMonitor should be installed. Defaults to the
330 ## same namespace where the release will be installed.
333 ## Provide additional labels to the service monitor resource
336 ## Provide annotations to the service monitor ressource
340 ## Define a scrape interval (otherwise prometheus default is used)
342 ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
346 ## Specify the scrape protocol scheme e.g., https or http
350 ## Supply a tls configuration for the service monitor
352 ## ref: https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/charts/crds/crds/crd-servicemonitors.yaml
356 ## The URI path where prometheus metrics can be scraped from
360 ## A list of MetricRelabelConfigs to apply to samples before ingestion
362 ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs
364 # metricRelabelings: []
366 ## A list of RelabelConfigs to apply to samples before scraping
368 ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
372 ## Configure a prometheus-operator podMonitor to scrape metrics directly from pods.
374 ## RECOMMENDED: PodMonitor is the preferred method for collecting metrics as it:
375 ## - Scrapes metrics directly from pods without requiring a Service
376 ## - Continues to collect metrics during graceful shutdown when pods are marked NotReady
377 ## - Provides better visibility into shutdown metrics and termination behavior
381 ## Namespace where PodMonitor should be installed. Defaults to the
382 ## same namespace where the release will be installed.
385 ## Provide additional labels to the pod monitor resource
388## Provide annotations to the pod monitor resource
392## Define a scrape interval (otherwise prometheus default is used)
394## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
398## Specify the scrape protocol scheme e.g., https or http
402## Supply a tls configuration for the pod monitor
404## ref: https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/charts/crds/crds/crd-podmonitors.yaml
408## The URI path where prometheus metrics can be scraped from
412## A list of MetricRelabelConfigs to apply to samples before ingestion
414## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs
416# metricRelabelings: []
418## A list of RelabelConfigs to apply to samples before scraping
420## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
424## Configure a service resource (optional, only needed if using the deprecated
425## ServiceMonitor instead of the recommended PodMonitor)
428 ## Provide additonal labels for the service
432 ## Provide additonal annotations for the service
436 ## Define a specific ClusterIP if you do not want a dynamic one
438 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address
442 ## Define a list of one or more external IPs for this service
444 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
448 ## Provide a specific loadbalancerIP e.g., of an external Loadbalancer
450 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
454 ## Provide a list of source IP ranges to have access to this service
456 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#aws-nlb-support
458 # loadBalancerSourceRanges: []
460 ## Specify the service type e.g., ClusterIP, NodePort, LoadBalancer or ExternalName
462 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
465 ## Specify the services metrics nodeport if you use a service of type nodePort
468## Specify the node port under which the prometheus metrics of the runner are made
471## ref: https://kubernetes.io/docs/concepts/services-networking/service/#nodeport
475## Provide a list of additional ports to be exposed by this service
477## ref: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
481## Specify the services external traffic policy
483## ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
485# externalTrafficPolicy:
487## Specify the services internal traffic policy
489## ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
491# internalTrafficPolicy:
493## Configuration for the Pods that the runner launches for each new job
496 ## Configure namespace where GitLab Runner job pods will be created
497 ## By default, job pods use the Release namespace (.Release.Namespace)
498 ## Set this value to run jobs in a different namespace than the runner deployment
499 ## This enables separation between runner management and job execution
501 ## Example: Runner in "ops" namespace, jobs in "gitlab" namespace
504 # runner configuration, where the multi line string is evaluated as a
505 # template so you can specify helm values inside of it.
507 # tpl: https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function
508 # runner configuration: https://docs.gitlab.com/runner/configuration/advanced-configuration.html
512 namespace = "{{ default .Release.Namespace .Values.runners.jobNamespace }}"
514 ## Absolute path for an existing runner configuration file
515 ## Can be used alongside "volumes" and "volumeMounts" to use an external config file
516 ## Active if runners.config is empty or null
518 ## When set, written verbatim as the runner's config.toml and `gitlab-runner
519 ## register` is skipped on boot. The supplied TOML is passed through `tpl`,
520 ## so Helm values can be interpolated as usual.
522 ## configOverride must be a COMPLETE config.toml: it replaces the rendered
523 ## config in its entirety, so the following chart values have NO effect and
524 ## must be expressed directly in the TOML (or omitted):
526 ## - concurrent, checkInterval, shutdown_timeout, logLevel, logFormat,
527 ## sentryDsn, connectionMaxAge
528 ## - metrics.enabled / metrics.port (set `listen_address = ":<port>"`)
529 ## - sessionServer.* (write [session_server] directly; placeholder
530 ## substitution is also skipped)
531 ## - runners.config, runners.configPath
532 ## - runners.name, runners.tags, runners.locked, runners.protected,
533 ## runners.runUntagged, runners.maximumTimeout, runners.executor,
534 ## runners.jobNamespace
535 ## - gitlabUrl (set `url = "..."` under [[runners]])
536 ## - runnerRegistrationToken / runnerToken (the token lives in the TOML or
537 ## is injected via extraEnv / extraEnvFromRefs / secrets)
539 ## Pod-level values (extraEnv, secrets, certsSecretName, volumes, RBAC,
540 ## metrics Service/PodMonitor, ...) are unaffected.
542 ## On boot the entrypoint runs `gitlab-runner verify --url=` so an invalid
543 ## token fails loudly instead of producing a runner that never picks up jobs.
552 # url = "https://gitlab.example.com/"
553 # token = "glrt-xxxxxxxxxxxxxxxxxxxx"
554 # executor = "kubernetes"
555 # [runners.kubernetes]
556 # namespace = "gitlab-runner"
559 ## Which executor should be used
561 # executor: kubernetes
563 ## Specify the name for the runner.
567 ## The name of the secret containing runner-token and runner-registration-token
568 # secret: gitlab-runner
570 ## Distributed runners caching
571 ## ref: https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching
573 ## If you want to use s3 based distributing caching:
574 ## First of all you need to uncomment General settings and S3 settings sections.
576 ## Create a secret 's3access' containing 'accesskey' & 'secretkey'
577 ## ref: https://aws.amazon.com/blogs/security/wheres-my-secret-access-key/
579 ## $ kubectl create secret generic s3access \
580 ## --from-literal=accesskey="YourAccessKey" \
581 ## --from-literal=secretkey="YourSecretKey"
582 ## ref: https://kubernetes.io/docs/concepts/configuration/secret/
584 ## If you want to use gcs based distributing caching:
585 ## First of all you need to uncomment General settings and GCS settings sections.
587 ## Access using credentials file:
588 ## Create a secret 'google-application-credentials' containing your application credentials file.
589 ## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnerscachegcs-section
590 ## You could configure
591 ## $ kubectl create secret generic google-application-credentials \
592 ## --from-file=gcs-application-credentials-file=./path-to-your-google-application-credentials-file.json
593 ## ref: https://kubernetes.io/docs/concepts/configuration/secret/
595 ## Access using access-id and private-key:
596 ## Create a secret 'gcsaccess' containing 'gcs-access-id' & 'gcs-private-key'.
597 ## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnerscachegcs-section
598 ## You could configure
599 ## $ kubectl create secret generic gcsaccess \
600 ## --from-literal=gcs-access-id="YourAccessID" \
601 ## --from-literal=gcs-private-key="YourPrivateKey"
602 ## ref: https://kubernetes.io/docs/concepts/configuration/secret/
604 ## If you want to use Azure-based distributed caching:
605 ## First, uncomment General settings.
607 ## Create a secret 'azureaccess' containing 'azure-account-name' & 'azure-account-key'
608 ## ref: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction
610 ## $ kubectl create secret generic azureaccess \
611 ## --from-literal=azure-account-name="YourAccountName" \
612 ## --from-literal=azure-account-key="YourAccountKey"
613 ## ref: https://kubernetes.io/docs/concepts/configuration/secret/
615 ## S3 the name of the secret.
616 # secretName: s3access
617 ## Use this line for access using gcs-access-id and gcs-private-key
618 # secretName: gcsaccess
619 ## Use this line for access using google-application-credentials file
620 # secretName: google-application-credentials
621 ## Use this line for access using Azure with azure-account-name and azure-account-key
622 # secretName: azureaccess
624 ## When using cloud-native auth (e.g. Workload Identity) with the docker+machine
625 ## executor, set this to true to prevent the chart's entrypoint from globally
626 ## exporting cache credential env vars (CACHE_S3_*, GOOGLE_APPLICATION_CREDENTIALS,
627 ## CACHE_GCS_*, CACHE_AZURE_*). This allows subprocesses (e.g. docker-machine)
628 ## to use their own identity instead of inheriting the cache credentials.
630 ## When this flag is set to true, you MUST configure cache credentials explicitly
631 ## in runners.config under [runners.cache.*], for example:
632 ## [runners.cache.gcs]
633 ## CredentialsFile = "/secrets/gcs-application-credentials-file"
634 ## BucketName = "my-cache-bucket"
635 ## Otherwise the runner will not be able to access the cache.
637 ## ref: https://gitlab.com/gitlab-com/gl-infra/production-engineering/-/work_items/28874
638 # disableGlobalCredentialsExport: false
639## Specify the name of the scheduler which is used to schedule runner pods.
640## Kubernetes supports multiple scheduler configurations.
641## ref: https://kubernetes.io/docs/reference/scheduling
642# schedulerName: "my-custom-scheduler"
644## Configure securitycontext for the main container
645## ref: https://kubernetes.io/docs/concepts/security/pod-security-standards/
648 allowPrivilegeEscalation: false
649 readOnlyRootFilesystem: false
654## Configure update strategy for multi-replica deployments
655## Kubernetes supports types Recreate, and RollingUpdate
656## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
664## Configure securitycontext valid for the whole pod
665## ref: https://kubernetes.io/docs/concepts/security/pod-security-standards/
671 # supplementalGroups: [65533]
672## Note: values for the ubuntu image:
676## Configure resource requests and limits
677## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
683# ephemeral-storage: 512Mi
687# ephemeral-storage: 256Mi
689## Affinity for pod assignment
690## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
693## TopologySpreadConstraints for pod assignment
694## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/
696topologySpreadConstraints: {}
697# Example: The gitlab runner should be evenly spread across zones
700# whenUnsatisfiable: DoNotSchedule
705## RuntimeClass name for pod assignment
706## ref: https://kubernetes.io/docs/concepts/containers/runtime-class/
709# Example: Once RuntimeClasses are configured for the cluster, you can specify it.
710# runtimeClassName: myclass
712## Node labels for pod assignment
713## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
716# Example: The gitlab runner manager should not run on spot instances so you can assign
717# them to the regular worker nodes only.
718# node-role.kubernetes.io/worker: "true"
720## List of node taints to tolerate (requires Kubernetes >= 1.6)
721## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
724# Example: Regular worker nodes may have a taint, thus you need to tolerate the taint
725# when you assign the gitlab runner manager with nodeSelector or affinity to the nodes.
726# - key: "node-role.kubernetes.io/worker"
729## Configure environment variables that will be present when the registration command runs
730## This provides further control over the registration process and the config.toml file
731## ref: `gitlab-runner register --help`
732## ref: https://docs.gitlab.com/runner/configuration/advanced-configuration.html
735# - name: RUNNER_EXECUTOR
738## Additional environment variables from key-value pairs.
740# CACHE_S3_SERVER_ADDRESS: s3.amazonaws.com
741# CACHE_S3_BUCKET_NAME: runners-cache
742# CACHE_S3_BUCKET_LOCATION: us-east-1
745## Additional environment variables from other data sources
747# CACHE_S3_ACCESS_KEY:
751# CACHE_S3_SECRET_KEY:
756## Additional environment variables refs
759# name: gitlab-runner-cache-config
761## list of hosts and IPs that will be injected into the pod's hosts file
773## Annotations to be added to deployment
775deploymentAnnotations: {}
777# downscaler/uptime: <my_uptime_period>
779## Labels to be added to deployment
783# owner.team: <my_cool_team>
784# owner.team: "{{ .Values.team }}"
785# tags.{{ .Values.tag }}/env: "{{ .Values.environment }}"
787## Init containers to be added to deployment
789deploymentInitContainers: []
791# - name: init-container
792# image: busybox:latest
793# command: ['sh', '-c', 'sleep 5']
795## Lifecycle options to be added to deployment
797deploymentLifecycle: {}
801# command: ["/bin/sh", "-c", "echo 'shutting down'"]
803## Set hostname for runner pods
804#hostname: my-gitlab-runner
806## Annotations to be added to manager pod
810# iam.amazonaws.com/role: <my_role_arn>
812## Labels to be added to manager pod
814## Supports templating
817# owner.team: <my_cool_team>
818# owner.team: "{{ .Values.team }}"
819# tags.{{ .Values.tag }}/env: "{{ .Values.environment }}"
821## PodDisruptionBudget for the runner manager Deployment. Only meaningful
822## with multiple manager replicas.
823## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
825# podDisruptionBudget: {}
828## HPA support for custom metrics:
829## This section enables runners to autoscale based on defined custom metrics.
830## In order to use this functionality, you need to enable a custom metrics API server by
831## implementing "custom.metrics.k8s.io" using supported third party adapter
832## Example: https://github.com/directxman12/k8s-prometheus-adapter
840# metricName: gitlab_runner_jobs
841# targetAverageValue: 400m
843## Configure priorityClassName for manager pod. See k8s docs for more info on how pod priority works:
844## https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
846## Secrets to be additionally mounted to the containers.
847## All secrets are mounted through init-runner-secrets volume
848## and placed as readonly at /init-secrets in the init container
849## and finally copied to an in-memory volume runner-secrets that is
850## mounted at /secrets.
854# - name: myOtherSecret
859## Boolean to turn off the automountServiceAccountToken in the deployment
860## ref: https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/#bound-service-account-token-volume
862# automountServiceAccountToken: false
864## Additional config files to mount in the containers in `/configmaps`.
866## Please note that a number of keys are reserved by the runner.
867## See https://gitlab.com/gitlab-org/charts/gitlab-runner/-/blob/main/templates/configmap.yaml
868## for a current list.
870## Labels to be added to configMaps
872## Supports templating
875# owner.team: <my_cool_team>
876# owner.team: "{{ .Values.team }}"
877# tags.{{ .Values.tag }}/env: "{{ .Values.environment }}"
879## Additional volumeMounts to add to the runner container
884# mountPath: /mount/path
886## Additional volumes to add to the runner deployment
891# persistentVolumeClaim:
894## Array of extra K8s manifests to deploy
897# - apiVersion: external-secrets.io/v1
898# kind: ExternalSecret
900# name: '{{ include "gitlab-runner.secret" . }}'
905# name: my-secret-store
909# runner-registration-token: "" # need to leave as an empty string for compatibility reasons
910# runner-token: "{{`{{ .runnerToken }}`}}"
913# key: my-secret-store-secret
915## Add additional containers to the Pod, e.g. to run as sidecars.
919# image: docker:20.10-dind
923# - mountPath: /var/run/
928# command: [ "sh", "-c", "until docker info; do sleep 1; done;" ]