blob: 4dfadc2f041700ecd3d4a3d43333ad7bf28e585f [file] [log] [blame]
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001# Default values for jenkins.
2# This is a YAML-formatted file.
3# Declare name/value pairs to be passed into your templates.
4# name: value
5
6## Overrides for generated resource names
7# See templates/_helpers.tpl
8# -- Override the resource name prefix
9# @default -- `Chart.Name`
10nameOverride:
11# -- Override the full resource names
12# @default -- `jenkins-(release-name)` or `jenkins` if the release-name is `jenkins`
13fullnameOverride:
14# -- Override the deployment namespace
15# @default -- `Release.Namespace`
16namespaceOverride:
17
18# For FQDN resolving of the controller service. Change this value to match your existing configuration.
19# ref: https://github.com/kubernetes/dns/blob/master/docs/specification.md
20# -- Override the cluster name for FQDN resolving
21clusterZone: "cluster.local"
22
23# -- The URL of the Kubernetes API server
24kubernetesURL: "https://kubernetes.default"
25
26# -- The Jenkins credentials to access the Kubernetes API server. For the default cluster it is not needed.
27credentialsId:
28
29# -- Enables rendering of the helm.sh/chart label to the annotations
30renderHelmLabels: true
31
gio20157e82026-07-22 13:10:48 +040032# -- Configures extra labels for the agent all objects
33extraLabels: {}
34
35# -- Configures extra manifests
36extraObjects:
37
Giorgi Lekveishvili35982662024-04-05 13:05:40 +040038controller:
39 # -- Used for label app.kubernetes.io/component
40 componentName: "jenkins-controller"
41 image:
42 # -- Controller image registry
43 registry: "docker.io"
44 # -- Controller image repository
45 repository: "jenkins/jenkins"
46
gio20157e82026-07-22 13:10:48 +040047 # -- Controller image tag override; i.e., tag: "2.440.1-jdk21"
Giorgi Lekveishvili35982662024-04-05 13:05:40 +040048 tag:
49
50 # -- Controller image tag label
gio20157e82026-07-22 13:10:48 +040051 tagLabel: jdk21
Giorgi Lekveishvili35982662024-04-05 13:05:40 +040052 # -- Controller image pull policy
53 pullPolicy: "Always"
gio20157e82026-07-22 13:10:48 +040054
55 # -- Number of replicas. Max 1. Can be set to 0 for maintenance scenarios.
56 replicas: 1
57
Giorgi Lekveishvili35982662024-04-05 13:05:40 +040058 # -- Controller image pull secret
59 imagePullSecretName:
60 # -- Lifecycle specification for controller-container
61 lifecycle: {}
62 # postStart:
63 # exec:
64 # command:
65 # - "uname"
66 # - "-a"
67
68 # -- Disable use of remember me
69 disableRememberMe: false
70
71 # -- Set Number of executors
72 numExecutors: 0
73
74 # -- Sets the executor mode of the Jenkins node. Possible values are "NORMAL" or "EXCLUSIVE"
75 executorMode: "NORMAL"
76
77 # -- Append Jenkins labels to the controller
78 customJenkinsLabels: []
79
80 hostNetworking: false
81
82 # When enabling LDAP or another non-Jenkins identity source, the built-in admin account will no longer exist.
83 # If you disable the non-Jenkins identity store and instead use the Jenkins internal one,
84 # you should revert controller.admin.username to your preferred admin user:
85 admin:
Giorgi Lekveishvili35982662024-04-05 13:05:40 +040086 # -- Admin username created as a secret if `controller.admin.createSecret` is true
87 username: "admin"
88 # -- Admin password created as a secret if `controller.admin.createSecret` is true
89 # @default -- <random password>
90 password:
91
92 # -- The key in the existing admin secret containing the username
93 userKey: jenkins-admin-user
94 # -- The key in the existing admin secret containing the password
95 passwordKey: jenkins-admin-password
96
97 # The default configuration uses this secret to configure an admin user
98 # If you don't need that user or use a different security realm, then you can disable it
99 # -- Create secret for admin user
100 createSecret: true
101
102 # -- The name of an existing secret containing the admin credentials
103 existingSecret: ""
104 # -- Email address for the administrator of the Jenkins instance
105 jenkinsAdminEmail:
106
107 # This value should not be changed unless you use your custom image of jenkins or any derived from.
108 # If you want to use Cloudbees Jenkins Distribution docker, you should set jenkinsHome: "/var/cloudbees-jenkins-distribution"
109 # -- Custom Jenkins home path
110 jenkinsHome: "/var/jenkins_home"
111
112 # This value should not be changed unless you use your custom image of jenkins or any derived from.
113 # If you want to use Cloudbees Jenkins Distribution docker, you should set jenkinsRef: "/usr/share/cloudbees-jenkins-distribution/ref"
114 # -- Custom Jenkins reference path
115 jenkinsRef: "/usr/share/jenkins/ref"
116
117 # Path to the jenkins war file which is used by jenkins-plugin-cli.
118 jenkinsWar: "/usr/share/jenkins/jenkins.war"
119 # Override the default arguments passed to the war
120 # overrideArgs:
121 # - --httpPort=8080
122
123 # -- Resource allocation (Requests and Limits)
124 resources:
125 requests:
126 cpu: "50m"
127 memory: "256Mi"
128 limits:
129 cpu: "2000m"
130 memory: "4096Mi"
131
132 # Share process namespace to allow sidecar containers to interact with processes in other containers in the same pod
133 shareProcessNamespace: false
134
gio20157e82026-07-22 13:10:48 +0400135 # Service links might cause issue if running in a namespace with a large amount of services
136 # that might cause a slow startup when plugins are copied from ref to volume
137 # Set to true to keep previous behavior
138 # See https://github.com/kubernetes/kubernetes/issues/121787
139 enableServiceLinks: false
140
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400141 # Overrides the init container default values
142 # -- Resources allocation (Requests and Limits) for Init Container
143 initContainerResources: {}
144 # initContainerResources:
145 # requests:
146 # cpu: "50m"
147 # memory: "256Mi"
148 # limits:
149 # cpu: "2000m"
150 # memory: "4096Mi"
151 # -- Environment variable sources for Init Container
152 initContainerEnvFrom: []
153
154 # useful for i.e., http_proxy
155 # -- Environment variables for Init Container
156 initContainerEnv: []
157 # initContainerEnv:
158 # - name: http_proxy
159 # value: "http://192.168.64.1:3128"
160
161 # -- Environment variable sources for Jenkins Container
162 containerEnvFrom: []
163
164 # -- Environment variables for Jenkins Container
165 containerEnv: []
166 # - name: http_proxy
167 # value: "http://192.168.64.1:3128"
168
169 # Set min/max heap here if needed with "-Xms512m -Xmx512m"
170 # -- Append to `JAVA_OPTS` env var
171 javaOpts:
172 # -- Append to `JENKINS_OPTS` env var
173 jenkinsOpts:
174
175 # If you are using the ingress definitions provided by this chart via the `controller.ingress` block,
176 # the configured hostname will be the ingress hostname starting with `https://`
177 # or `http://` depending on the `tls` configuration.
178 # The Protocol can be overwritten by specifying `controller.jenkinsUrlProtocol`.
179 # -- Set protocol for Jenkins URL; `https` if `controller.ingress.tls`, `http` otherwise
180 jenkinsUrlProtocol:
181
182 # -- Set Jenkins URL if you are not using the ingress definitions provided by the chart
183 jenkinsUrl:
184
185 # If you set this prefix and use ingress controller, then you might want to set the ingress path below
186 # I.e., "/jenkins"
187 # -- Root URI Jenkins will be served on
188 jenkinsUriPrefix:
189
190 # -- Enable pod security context (must be `true` if podSecurityContextOverride, runAsUser or fsGroup are set)
191 usePodSecurityContext: true
192
193 # Note that `runAsUser`, `fsGroup`, and `securityContextCapabilities` are
194 # being deprecated and replaced by `podSecurityContextOverride`.
195 # Set runAsUser to 1000 to let Jenkins run as non-root user 'jenkins', which exists in 'jenkins/jenkins' docker image.
196 # When configuring runAsUser to a different value than 0 also set fsGroup to the same value:
197 # -- Deprecated in favor of `controller.podSecurityContextOverride`. uid that jenkins runs with.
198 runAsUser: 1000
199
200 # -- Deprecated in favor of `controller.podSecurityContextOverride`. uid that will be used for persistent volume.
201 fsGroup: 1000
202
gio20157e82026-07-22 13:10:48 +0400203 # -- Deprecated in favor of `controller.podSecurityContextOverride`. fsGroupChangePolicy for the pod security context
204 fsGroupChangePolicy: OnRootMismatch
205
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400206 # If you have PodSecurityPolicies that require dropping of capabilities as suggested by CIS K8s benchmark, put them here
207 # securityContextCapabilities:
208 # drop:
209 # - NET_RAW
210 securityContextCapabilities: {}
211
212 # In the case of mounting an ext4 filesystem, it might be desirable to use `supplementalGroups` instead of `fsGroup` in
213 # the `securityContext` block: https://github.com/kubernetes/kubernetes/issues/67014#issuecomment-589915496
214 # podSecurityContextOverride:
215 # runAsUser: 1000
216 # runAsNonRoot: true
217 # supplementalGroups: [1000]
218 # capabilities: {}
219 # -- Completely overwrites the contents of the pod security context, ignoring the values provided for `runAsUser`, `fsGroup`, and `securityContextCapabilities`
220 podSecurityContextOverride: ~
221
222 # -- Allow controlling the securityContext for the jenkins container
223 containerSecurityContext:
224 runAsUser: 1000
225 runAsGroup: 1000
226 readOnlyRootFilesystem: true
227 allowPrivilegeEscalation: false
228
gio20157e82026-07-22 13:10:48 +0400229 # -- enable or disable the controller k8s service
230 serviceEnabled: true
231
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400232 # For minikube, set this to NodePort, elsewhere uses LoadBalancer
233 # Use ClusterIP if your setup includes ingress controller
234 # -- k8s service type
235 serviceType: ClusterIP
236
237 # -- k8s service clusterIP. Only used if serviceType is ClusterIP
238 clusterIp:
239 # -- k8s service port
240 servicePort: 8080
241 # -- k8s target port
242 targetPort: 8080
243 # -- k8s node port. Only used if serviceType is NodePort
244 nodePort:
245
246 # Use Local to preserve the client source IP and avoids a second hop for LoadBalancer and NodePort type services,
247 # but risks potentially imbalanced traffic spreading.
248 serviceExternalTrafficPolicy:
249
gio20157e82026-07-22 13:10:48 +0400250 # If enabled, the controller is available through its service before its pods reports ready. Makes startup screen and
251 # auto-reload on restart feature possible.
252 publishNotReadyAddresses:
253
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400254 # -- Jenkins controller service annotations
255 serviceAnnotations: {}
256 # -- Jenkins controller custom labels for the StatefulSet
257 statefulSetLabels: {}
258 # foo: bar
259 # bar: foo
260 # -- Labels for the Jenkins controller-service
261 serviceLabels: {}
262 # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: https
263
264 # Put labels on Jenkins controller pod
265 # -- Custom Pod labels (an object with `label-key: label-value` pairs)
266 podLabels: {}
267
268 # Enable Kubernetes Startup, Liveness and Readiness Probes
269 # if Startup Probe is supported, enable it too
270 # ~ 2 minutes to allow Jenkins to restart when upgrading plugins. Set ReadinessTimeout to be shorter than LivenessTimeout.
271 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
272 # -- Enable Kubernetes Probes configuration configured in `controller.probes`
273 healthProbes: true
274
275 probes:
276 startupProbe:
277 # -- Set the failure threshold for the startup probe
278 failureThreshold: 12
279 httpGet:
280 # -- Set the Pod's HTTP path for the startup probe
281 path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
282 # -- Set the Pod's HTTP port to use for the startup probe
283 port: http
284 # -- Set the time interval between two startup probes executions in seconds
285 periodSeconds: 10
286 # -- Set the timeout for the startup probe in seconds
287 timeoutSeconds: 5
288
289 livenessProbe:
290 # -- Set the failure threshold for the liveness probe
291 failureThreshold: 5
292 httpGet:
293 # -- Set the Pod's HTTP path for the liveness probe
294 path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
295 # -- Set the Pod's HTTP port to use for the liveness probe
296 port: http
297 # -- Set the time interval between two liveness probes executions in seconds
298 periodSeconds: 10
299 # -- Set the timeout for the liveness probe in seconds
300 timeoutSeconds: 5
301
302 # If Startup Probe is not supported on your Kubernetes cluster, you might want to use "initialDelaySeconds" instead.
303 # It delays the initial liveness probe while Jenkins is starting
304 # -- Set the initial delay for the liveness probe in seconds
305 initialDelaySeconds:
306
307 readinessProbe:
308 # -- Set the failure threshold for the readiness probe
309 failureThreshold: 3
310 httpGet:
311 # -- Set the Pod's HTTP path for the liveness probe
312 path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
313 # -- Set the Pod's HTTP port to use for the readiness probe
314 port: http
315 # -- Set the time interval between two readiness probes executions in seconds
316 periodSeconds: 10
317 # -- Set the timeout for the readiness probe in seconds
318 timeoutSeconds: 5
319
320 # If Startup Probe is not supported on your Kubernetes cluster, you might want to use "initialDelaySeconds" instead.
321 # It delays the initial readiness probe while Jenkins is starting
322 # -- Set the initial delay for the readiness probe in seconds
323 initialDelaySeconds:
324
325 # PodDisruptionBudget config
326 podDisruptionBudget:
327 # ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
328
329 # -- Enable Kubernetes Pod Disruption Budget configuration
330 enabled: false
331
332 # For Kubernetes v1.5+, use 'policy/v1beta1'
333 # For Kubernetes v1.21+, use 'policy/v1'
334 # -- Policy API version
335 apiVersion: "policy/v1beta1"
336
337 annotations: {}
338 labels: {}
339 # -- Number of pods that can be unavailable. Either an absolute number or a percentage
340 maxUnavailable: "0"
341
342 # -- Create Agent listener service
343 agentListenerEnabled: true
344 # -- Listening port for agents
345 agentListenerPort: 50000
346 # -- Host port to listen for agents
347 agentListenerHostPort:
348 # -- Node port to listen for agents
349 agentListenerNodePort:
350
351 # ref: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
352 # -- Traffic Policy of for the agentListener service
353 agentListenerExternalTrafficPolicy:
354 # -- Allowed inbound IP for the agentListener service
355 agentListenerLoadBalancerSourceRanges:
gio20157e82026-07-22 13:10:48 +0400356 - 0.0.0.0/0
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400357 # -- Disabled agent protocols
358 disabledAgentProtocols:
359 - JNLP-connect
360 - JNLP2-connect
361 csrf:
362 defaultCrumbIssuer:
363 # -- Enable the default CSRF Crumb issuer
364 enabled: true
gio20157e82026-07-22 13:10:48 +0400365 # -- Enable proxy compatibility. This setting is ignored if you are not on the current LTS release and will be dropped with the next LTS.
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400366 proxyCompatability: true
367
368 # Kubernetes service type for the JNLP agent service
369 # agentListenerServiceType is the Kubernetes Service type for the JNLP agent service,
370 # either 'LoadBalancer', 'NodePort', or 'ClusterIP'
371 # Note if you set this to 'LoadBalancer', you *must* define annotations to secure it. By default,
372 # this will be an external load balancer and allowing inbound 0.0.0.0/0, a HUGE
373 # security risk: https://github.com/kubernetes/charts/issues/1341
374 # -- Defines how to expose the agentListener service
375 agentListenerServiceType: "ClusterIP"
376
377 # -- Annotations for the agentListener service
378 agentListenerServiceAnnotations: {}
379
380 # Optionally, assign an IP to the LoadBalancer agentListenerService LoadBalancer
381 # GKE users: only regional static IPs will work for Service Load balancer.
382 # -- Static IP for the agentListener LoadBalancer
383 agentListenerLoadBalancerIP:
384
385 # -- Whether legacy remoting security should be enabled
386 legacyRemotingSecurityEnabled: false
387
388 # Example of a 'LoadBalancer'-type agent listener with annotations securing it
389 # agentListenerServiceType: LoadBalancer
390 # agentListenerServiceAnnotations:
391 # service.beta.kubernetes.io/aws-load-balancer-internal: "True"
392 # service.beta.kubernetes.io/load-balancer-source-ranges: "172.0.0.0/8, 10.0.0.0/8"
393
394 # LoadBalancerSourcesRange is a list of allowed CIDR values, which are combined with ServicePort to
395 # set allowed inbound rules on the security group assigned to the controller load balancer
396 # -- Allowed inbound IP addresses
397 loadBalancerSourceRanges:
gio20157e82026-07-22 13:10:48 +0400398 - 0.0.0.0/0
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400399
400 # -- Optionally assign a known public LB IP
401 loadBalancerIP:
402
403 # Optionally configure a JMX port. This requires additional javaOpts, for example,
404 # javaOpts: >
405 # -Dcom.sun.management.jmxremote.port=4000
406 # -Dcom.sun.management.jmxremote.authenticate=false
407 # -Dcom.sun.management.jmxremote.ssl=false
408 # jmxPort: 4000
409 # -- Open a port, for JMX stats
410 jmxPort:
411
412 # -- Optionally configure other ports to expose in the controller container
413 extraPorts: []
414 # - name: BuildInfoProxy
415 # port: 9000
416 # targetPort: 9010 (Optional: Use to explicitly set targetPort if different from port)
417
418 # Plugins will be installed during Jenkins controller start
419 # -- List of Jenkins plugins to install. If you don't want to install plugins, set it to `false`
420 installPlugins:
gio20157e82026-07-22 13:10:48 +0400421 - kubernetes:4467.vf26561292824
422 - workflow-aggregator:608.v67378e9d3db_1
423 - git:5.10.1
424 - configuration-as-code:2100.vb_fd699d2a_09c
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400425
426 # If set to false, Jenkins will download the minimum required version of all dependencies.
427 # -- Download the minimum required version or latest version of all dependencies
428 installLatestPlugins: true
429
430 # -- Set to true to download the latest version of any plugin that is requested to have the latest version
431 installLatestSpecifiedPlugins: false
432
433 # -- List of plugins to install in addition to those listed in controller.installPlugins
434 additionalPlugins: []
435
436 # Without this; whenever the controller gets restarted (Evicted, etc.) it will fetch plugin updates that have the potential to cause breakage.
437 # Note that for this to work, `persistence.enabled` needs to be set to `true`
438 # -- Initialize only on first installation. Ensures plugins do not get updated inadvertently. Requires `persistence.enabled` to be set to `true`
439 initializeOnce: false
440
441 # Enable to always override the installed plugins with the values of 'controller.installPlugins' on upgrade or redeployment.
442 # -- Overwrite installed plugins on start
443 overwritePlugins: false
444
445 # Configures if plugins bundled with `controller.image` should be overwritten with the values of 'controller.installPlugins' on upgrade or redeployment.
446 # -- Overwrite plugins that are already installed in the controller image
447 overwritePluginsFromImage: true
448
449 # Configures the restrictions for naming projects. Set this key to null or empty to skip it in the default config.
450 projectNamingStrategy: standard
451
452 # Useful with ghprb plugin. The OWASP plugin is not installed by default, please update controller.installPlugins.
453 # -- Enable HTML parsing using OWASP Markup Formatter Plugin (antisamy-markup-formatter)
454 enableRawHtmlMarkupFormatter: false
455
456 # This is ignored if enableRawHtmlMarkupFormatter is true
457 # -- Yaml of the markup formatter to use
458 markupFormatter: plainText
459
460 # Used to approve a list of groovy functions in pipelines used the script-security plugin. Can be viewed under /scriptApproval
461 # -- List of groovy functions to approve
462 scriptApproval: []
463 # - "method groovy.json.JsonSlurperClassic parseText java.lang.String"
464 # - "new groovy.json.JsonSlurperClassic"
465
466 # -- Map of groovy init scripts to be executed during Jenkins controller start
467 initScripts: {}
468 # test: |-
469 # print 'adding global pipeline libraries, register properties, bootstrap jobs...'
470 # -- Name of the existing ConfigMap that contains init scripts
471 initConfigMap:
472
473 # 'name' is a name of an existing secret in the same namespace as jenkins,
474 # 'keyName' is the name of one of the keys inside the current secret.
475 # the 'name' and 'keyName' are concatenated with a '-' in between, so for example:
476 # an existing secret "secret-credentials" and a key inside it named "github-password" should be used in JCasC as ${secret-credentials-github-password}
477 # 'name' and 'keyName' must be lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-',
478 # and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc')
479 # existingSecret existing secret "secret-credentials" and a key inside it named "github-username" should be used in JCasC as ${github-username}
480 # When using existingSecret no need to specify the keyName under additionalExistingSecrets.
481 existingSecret:
482
483 # -- List of additional existing secrets to mount
484 additionalExistingSecrets: []
485 # ref: https://github.com/jenkinsci/configuration-as-code-plugin/blob/master/docs/features/secrets.adoc#kubernetes-secrets
486 # additionalExistingSecrets:
487 # - name: secret-name-1
488 # keyName: username
489 # - name: secret-name-1
490 # keyName: password
491
492 # -- List of additional secrets to create and mount
493 additionalSecrets: []
494 # ref: https://github.com/jenkinsci/configuration-as-code-plugin/blob/master/docs/features/secrets.adoc#kubernetes-secrets
495 # additionalSecrets:
496 # - name: nameOfSecret
497 # value: secretText
498
499 # Generate SecretClaim resources to create Kubernetes secrets from HashiCorp Vault using kube-vault-controller.
500 # 'name' is the name of the secret that will be created in Kubernetes. The Jenkins fullname is prepended to this value.
501 # 'path' is the fully qualified path to the secret in Vault
502 # 'type' is an optional Kubernetes secret type. The default is 'Opaque'
503 # 'renew' is an optional secret renewal time in seconds
504 # -- List of `SecretClaim` resources to create
505 secretClaims: []
506 # - name: secretName # required
507 # path: testPath # required
508 # type: kubernetes.io/tls # optional
509 # renew: 60 # optional
510
511 # -- Name of default cloud configuration.
512 cloudName: "kubernetes"
513
514 # Below is the implementation of Jenkins Configuration as Code. Add a key under configScripts for each configuration area,
515 # where each corresponds to a plugin or section of the UI. Each key (prior to | character) is just a label, and can be any value.
516 # Keys are only used to give the section a meaningful name. The only restriction is they may only contain RFC 1123 \ DNS label
517 # characters: lowercase letters, numbers, and hyphens. The keys become the name of a configuration yaml file on the controller in
518 # /var/jenkins_home/casc_configs (by default) and will be processed by the Configuration as Code Plugin. The lines after each |
519 # become the content of the configuration yaml file. The first line after this is a JCasC root element, e.g., jenkins, credentials,
520 # etc. Best reference is https://<jenkins_url>/configuration-as-code/reference. The example below creates a welcome message:
521 JCasC:
522 # -- Enables default Jenkins configuration via configuration as code plugin
523 defaultConfig: true
524
525 # If true, the init container deletes all the plugin config files and Jenkins Config as Code overwrites any existing configuration
526 # -- Whether Jenkins Config as Code should overwrite any existing configuration
527 overwriteConfiguration: false
528 # -- Remote URLs for configuration files.
529 configUrls: []
530 # - https://acme.org/jenkins.yaml
531 # -- List of Jenkins Config as Code scripts
532 configScripts: {}
533 # welcome-message: |
534 # jenkins:
535 # systemMessage: Welcome to our CI\CD server. This Jenkins is configured and managed 'as code'.
536
537 # Allows adding to the top-level security JCasC section. For legacy purposes, by default, the chart includes apiToken configurations
538 # -- Jenkins Config as Code security-section
539 security:
540 apiToken:
541 creationOfLegacyTokenEnabled: false
542 tokenGenerationOnCreationEnabled: false
543 usageStatisticsEnabled: true
544
545 # Ignored if securityRealm is defined in controller.JCasC.configScripts
546 # -- Jenkins Config as Code Security Realm-section
547 securityRealm: |-
548 local:
549 allowsSignup: false
550 enableCaptcha: false
551 users:
552 - id: "${chart-admin-username}"
553 name: "Jenkins Admin"
554 password: "${chart-admin-password}"
555
556 # Ignored if authorizationStrategy is defined in controller.JCasC.configScripts
557 # -- Jenkins Config as Code Authorization Strategy-section
558 authorizationStrategy: |-
559 loggedInUsersCanDoAnything:
560 allowAnonymousRead: false
gio20157e82026-07-22 13:10:48 +0400561
562 # -- Annotations for the JCasC ConfigMap
563 configMapAnnotations: {}
564
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400565 # -- Custom init-container specification in raw-yaml format
566 customInitContainers: []
567 # - name: custom-init
568 # image: "alpine:3"
569 # imagePullPolicy: Always
570 # command: [ "uname", "-a" ]
571
572 sidecars:
573 configAutoReload:
574 # If enabled: true, Jenkins Configuration as Code will be reloaded on-the-fly without a reboot.
575 # If false or not-specified, JCasC changes will cause a reboot and will only be applied at the subsequent start-up.
576 # Auto-reload uses the http://<jenkins_url>/reload-configuration-as-code endpoint to reapply config when changes to
577 # the configScripts are detected.
gio20157e82026-07-22 13:10:48 +0400578 # -- Enable Jenkins Config as Code auto-reload
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400579 enabled: true
580 image:
581 # -- Registry for the image that triggers the reload
582 registry: docker.io
583 # -- Repository of the image that triggers the reload
584 repository: kiwigrid/k8s-sidecar
585 # -- Tag for the image that triggers the reload
gio20157e82026-07-22 13:10:48 +0400586 tag: 2.8.1
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400587 imagePullPolicy: IfNotPresent
gio20157e82026-07-22 13:10:48 +0400588 # -- Port for sidecar health probes
589 healthPort: 8060
590 resources:
591 {}
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400592 # limits:
593 # cpu: 100m
594 # memory: 100Mi
595 # requests:
596 # cpu: 50m
597 # memory: 50Mi
gio20157e82026-07-22 13:10:48 +0400598 # -- Enables additional volume mounts for the config auto-reload container
599 additionalVolumeMounts:
600 []
601 # - name: auto-reload-config
602 # mountPath: /var/config/logger
603 # - name: auto-reload-logs
604 # mountPath: /var/log/auto_reload
605 # -- Config auto-reload logging settings
606 logging:
607 # See default settings https://github.com/kiwigrid/k8s-sidecar/blob/master/src/logger.py
608 configuration:
609 # -- Enables custom log config utilizing using the settings below.
610 override: false
611 logLevel: INFO
612 formatter: JSON
613 logToConsole: true
614 logToFile: false
615 maxBytes: 1024
616 backupCount: 3
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400617
618 # -- The scheme to use when connecting to the Jenkins configuration as code endpoint
619 scheme: http
620 # -- Skip TLS verification when connecting to the Jenkins configuration as code endpoint
621 skipTlsVerify: false
622
623 # -- How many connection-related errors to retry on
624 reqRetryConnect: 10
625 # -- How many seconds to wait before updating config-maps/secrets (sets METHOD=SLEEP on the sidecar)
626 sleepTime:
627
628 # -- Environment variable sources for the Jenkins Config as Code auto-reload container
629 envFrom: []
630 # -- Environment variables for the Jenkins Config as Code auto-reload container
gio20157e82026-07-22 13:10:48 +0400631 env: []
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400632 # - name: REQ_TIMEOUT
633 # value: "30"
634
635 # SSH port value can be set to any unused TCP port. The default, 1044, is a non-standard SSH port that has been chosen at random.
636 # This is only used to reload JCasC config from the sidecar container running in the Jenkins controller pod.
637 # This TCP port will not be open in the pod (unless you specifically configure this), so Jenkins will not be
638 # accessible via SSH from outside the pod. Note if you use non-root pod privileges (runAsUser & fsGroup),
639 # this must be > 1024:
640 sshTcpPort: 1044
641 # folder in the pod that should hold the collected dashboards:
642 folder: "/var/jenkins_home/casc_configs"
643
644 # If specified, the sidecar will search for JCasC config-maps inside this namespace.
645 # Otherwise, the namespace in which the sidecar is running will be used.
646 # It's also possible to specify ALL to search in all namespaces:
647 # searchNamespace:
648 # -- Enable container security context
649 containerSecurityContext:
650 readOnlyRootFilesystem: true
651 allowPrivilegeEscalation: false
652
653 # -- Configures additional sidecar container(s) for the Jenkins controller
654 additionalSidecarContainers: []
655 ## The example below runs the client for https://smee.io as sidecar container next to Jenkins,
656 ## that allows triggering build behind a secure firewall.
657 ## https://jenkins.io/blog/2019/01/07/webhook-firewalls/#triggering-builds-with-webhooks-behind-a-secure-firewall
658 ##
659 ## Note: To use it you should go to https://smee.io/new and update the url to the generated one.
660 # - name: smee
661 # image: docker.io/twalter/smee-client:1.0.2
662 # args: ["--port", "{{ .Values.controller.servicePort }}", "--path", "/github-webhook/", "--url", "https://smee.io/new"]
663 # resources:
664 # limits:
665 # cpu: 50m
666 # memory: 128Mi
667 # requests:
668 # cpu: 10m
669 # memory: 32Mi
670
671 # -- Name of the Kubernetes scheduler to use
672 schedulerName: ""
673
674 # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
675 # -- Node labels for pod assignment
676 nodeSelector: {}
677
678 # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature
679 # -- Toleration labels for pod assignment
680 tolerations: []
681 # -- Set TerminationGracePeriodSeconds
682 terminationGracePeriodSeconds:
683 # -- Set the termination message path
684 terminationMessagePath:
685 # -- Set the termination message policy
686 terminationMessagePolicy:
687
688 # -- Affinity settings
689 affinity: {}
690
691 # Leverage a priorityClass to ensure your pods survive resource shortages
692 # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
693 # -- The name of a `priorityClass` to apply to the controller pod
694 priorityClassName:
695
696 # -- Annotations for controller pod
697 podAnnotations: {}
698 # -- Annotations for controller StatefulSet
699 statefulSetAnnotations: {}
700
701 # ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
702 # -- Update strategy for StatefulSet
703 updateStrategy: {}
704
gio20157e82026-07-22 13:10:48 +0400705 # -- Topology spread constraints
706 topologySpreadConstraints: []
707
708 # -- DNS config for the pod
709 dnsConfig: {}
710
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400711 ingress:
gio20157e82026-07-22 13:10:48 +0400712 # -- Enables the Primary ingress
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400713 enabled: false
714
715 # Override for the default paths that map requests to the backend
gio20157e82026-07-22 13:10:48 +0400716 # -- Override for the default Primary Ingress paths
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400717 paths: []
718 # - backend:
719 # serviceName: ssl-redirect
720 # servicePort: use-annotation
721 # - backend:
722 # serviceName: >-
723 # {{ template "jenkins.fullname" . }}
724 # # Don't use string here, use only integer value!
725 # servicePort: 8080
726
gio20157e82026-07-22 13:10:48 +0400727 # -- Primary Ingress rule pathType, choices are: Exact, ImplementationSpecific, Prefix
728 pathType: ImplementationSpecific
729
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400730 # For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'
731 # For Kubernetes v1.19+, use 'networking.k8s.io/v1'
gio20157e82026-07-22 13:10:48 +0400732 # -- Primary Ingress API version
733 apiVersion: "networking.k8s.io/v1"
734 # -- Primary Ingress labels
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400735 labels: {}
gio20157e82026-07-22 13:10:48 +0400736 # -- Primary Ingress annotations
737 annotations:
738 {}
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400739 # kubernetes.io/ingress.class: nginx
740 # kubernetes.io/tls-acme: "true"
741 # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
742 # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
743 # ingressClassName: nginx
gio20157e82026-07-22 13:10:48 +0400744 # -- Primary Ingress ingressClassName
745 ingressClassName:
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400746
747 # Set this path to jenkinsUriPrefix above or use annotations to rewrite path
gio20157e82026-07-22 13:10:48 +0400748 # -- Primary Ingress path
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400749 path:
750
751 # configures the hostname e.g. jenkins.example.com
gio20157e82026-07-22 13:10:48 +0400752 # -- Primary Ingress hostname
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400753 hostName:
gio20157e82026-07-22 13:10:48 +0400754 # -- Primary Hostname to serve assets from
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400755 resourceRootUrl:
gio20157e82026-07-22 13:10:48 +0400756 # -- Primary Ingress TLS configuration
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400757 tls: []
758 # - secretName: jenkins.cluster.local
759 # hosts:
760 # - jenkins.cluster.local
761
762 # often you want to have your controller all locked down and private,
763 # but you still want to get webhooks from your SCM
764 # A secondary ingress will let you expose different urls
765 # with a different configuration
766 secondaryingress:
gio20157e82026-07-22 13:10:48 +0400767 # -- Enables the Secondary Ingress
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400768 enabled: false
769 # paths you want forwarded to the backend
770 # ex /github-webhook
gio20157e82026-07-22 13:10:48 +0400771 # -- Secondary Ingress paths
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400772 paths: []
gio20157e82026-07-22 13:10:48 +0400773 # -- Secondary Ingress rule pathType, choices are: Exact, ImplementationSpecific, Prefix
774 pathType: ImplementationSpecific
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400775 # For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'
776 # For Kubernetes v1.19+, use 'networking.k8s.io/v1'
gio20157e82026-07-22 13:10:48 +0400777 # -- Secondary Ingress API version
778 apiVersion: "networking.k8s.io/v1"
779 # -- Secondary Ingress labels
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400780 labels: {}
gio20157e82026-07-22 13:10:48 +0400781 # -- Secondary Ingress annotations
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400782 annotations: {}
783 # kubernetes.io/ingress.class: nginx
784 # kubernetes.io/tls-acme: "true"
785 # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
786 # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
gio20157e82026-07-22 13:10:48 +0400787 # -- Secondary Ingress ingressClassName
788 ingressClassName:
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400789 # configures the hostname e.g., jenkins-external.example.com
gio20157e82026-07-22 13:10:48 +0400790 # -- Secondary Ingress hostname
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400791 hostName:
gio20157e82026-07-22 13:10:48 +0400792 # -- Secondary Ingress TLS configuration
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400793 tls:
794 # - secretName: jenkins-external.example.com
795 # hosts:
796 # - jenkins-external.example.com
797
798 # If you're running on GKE and need to configure a backendconfig
799 # to finish ingress setup, use the following values.
800 # Docs: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig
801 backendconfig:
802 # -- Enables backendconfig
803 enabled: false
804 # -- backendconfig API version
805 apiVersion: "extensions/v1beta1"
806 # -- backendconfig name
807 name:
808 # -- backendconfig labels
809 labels: {}
810 # -- backendconfig annotations
811 annotations: {}
812 # -- backendconfig spec
813 spec: {}
814
815 # Openshift route
816 route:
817 # -- Enables openshift route
818 enabled: false
819 # -- Route labels
820 labels: {}
821 # -- Route annotations
822 annotations: {}
823 # -- Route path
824 path:
825
gio20157e82026-07-22 13:10:48 +0400826 # Gateway API HTTPRoute
827 httpRoute:
828 # Toggle to create an HTTPRoute resource alongside the existing ingress definition
829 enabled: false
830 apiVersion: "gateway.networking.k8s.io/v1"
831 kind: HTTPRoute
832 # specify the Gateway instance to bind the HTTPRoute to.
833 parentRefs: []
834 # - name: envoy-gateway-bundle
835 # namespace: envoy-gateway-system
836 # Reuse ingress host information if true; set to false to manage hostnames below
837 reuseIngressConfiguration: false
838 # Hostnames to use for the http route, only used if reuseIngressConfiguration is false.
839 hostnames: []
840 # Extra HTTPRoute rules that will be appended before the default backend
841 extraRules: []
842 # -- HTTPRoute annotations
843 annotations: {}
844
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400845 # -- Allows for adding entries to Pod /etc/hosts
846 hostAliases: []
847 # ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
848 # hostAliases:
849 # - ip: 192.168.50.50
850 # hostnames:
851 # - something.local
852 # - ip: 10.0.50.50
853 # hostnames:
854 # - other.local
855
856 # Expose Prometheus metrics
857 prometheus:
858 # If enabled, add the prometheus plugin to the list of plugins to install
859 # https://plugins.jenkins.io/prometheus
860
861 # -- Enables prometheus service monitor
862 enabled: false
863 # -- Additional labels to add to the service monitor object
864 serviceMonitorAdditionalLabels: {}
865 # -- Set a custom namespace where to deploy ServiceMonitor resource
866 serviceMonitorNamespace:
867 # -- How often prometheus should scrape metrics
868 scrapeInterval: 60s
869
870 # Defaults to the default endpoint used by the prometheus plugin
871 # -- The endpoint prometheus should get metrics from
872 scrapeEndpoint: /prometheus
873
874 # See here: https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
875 # The `groups` root object is added by default, add the rule entries
876 # -- Array of prometheus alerting rules
877 alertingrules: []
878 # -- Additional labels to add to the PrometheusRule object
879 alertingRulesAdditionalLabels: {}
880 # -- Set a custom namespace where to deploy PrometheusRule resource
881 prometheusRuleNamespace: ""
882
883 # RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds
884 # relabelings for a few standard Kubernetes fields. The original scrape job’s name
885 # is available via the __tmp_prometheus_job_name label.
886 # More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
887 relabelings: []
888 # MetricRelabelConfigs to apply to samples before ingestion.
889 metricRelabelings: []
890
891 googlePodMonitor:
892 # If enabled, It creates Google Managed Prometheus scraping config
893 enabled: false
894 # Set a custom namespace where to deploy PodMonitoring resource
895 # serviceMonitorNamespace: ""
896 scrapeInterval: 60s
897 # This is the default endpoint used by the prometheus plugin
898 scrapeEndpoint: /prometheus
899
900 # -- Can be used to disable rendering controller test resources when using helm template
901 testEnabled: true
902
903 httpsKeyStore:
904 # -- Enables HTTPS keystore on jenkins controller
905 enable: false
gio20157e82026-07-22 13:10:48 +0400906 # -- Name of the secret that already has SSL keystore
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400907 jenkinsHttpsJksSecretName: ""
gio20157e82026-07-22 13:10:48 +0400908 # -- Name of the key in the secret that already has SSL keystore
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400909 jenkinsHttpsJksSecretKey: "jenkins-jks-file"
910 # -- Name of the secret that contains the JKS password, if it is not in the same secret as the JKS file
911 jenkinsHttpsJksPasswordSecretName: ""
912 # -- Name of the key in the secret that contains the JKS password
913 jenkinsHttpsJksPasswordSecretKey: "https-jks-password"
914 disableSecretMount: false
915
916 # When HTTPS keystore is enabled, servicePort and targetPort will be used as HTTPS port
917 # -- HTTP Port that Jenkins should listen to along with HTTPS, it also serves as the liveness and readiness probes port.
918 httpPort: 8081
919 # -- Path of HTTPS keystore file
920 path: "/var/jenkins_keystore"
921 # -- Jenkins keystore filename which will appear under controller.httpsKeyStore.path
922 fileName: "keystore.jks"
923 # -- Jenkins keystore password
924 password: "password"
925
926 # -- Base64 encoded Keystore content. Keystore must be converted to base64 then being pasted here
927 jenkinsKeyStoreBase64Encoded:
928 # Convert keystore.jks files content to base64 > $ cat keystore.jks | base64
929# /u3+7QAAAAIAAAABAAAAAQANamVua2luc2NpLmNvbQAAAW2r/b1ZAAAFATCCBP0wDgYKKwYBBAEq
930# AhEBAQUABIIE6QbCqasvoHS0pSwYqSvdydMCB9t+VNfwhFIiiuAelJfO5sSe2SebJbtwHgLcRz1Z
931# gMtWgOSFdl3bWSzA7vrW2LED52h+jXLYSWvZzuDuh8hYO85m10ikF6QR+dTi4jra0whIFDvq3pxe
932# TnESxEsN+DvbZM3jA3qsjQJSeISNpDjO099dqQvHpnCn18lyk7J4TWJ8sOQQb1EM2zDAfAOSqA/x
933# QuPEFl74DlY+5DIk6EBvpmWhaMSvXzWZACGA0sYqa157dq7O0AqmuLG/EI5EkHETO4CrtBW+yLcy
934# 2dUCXOMA+j+NjM1BjrQkYE5vtSfNO6lFZcISyKo5pTFlcA7ut0Fx2nZ8GhHTn32CpeWwNcZBn1gR
935# pZVt6DxVVkhTAkMLhR4rL2wGIi/1WRs23ZOLGKtyDNvDHnQyDiQEoJGy9nAthA8aNHa3cfdF10vB
936# Drb19vtpFHmpvKEEhpk2EBRF4fTi644Fuhu2Ied6118AlaPvEea+n6G4vBz+8RWuVCmZjLU+7h8l
937# Hy3/WdUPoIL5eW7Kz+hS+sRTFzfu9C48dMkQH3a6f3wSY+mufizNF9U298r98TnYy+PfDJK0bstG
938# Ph6yPWx8DGXKQBwrhWJWXI6JwZDeC5Ny+l8p1SypTmAjpIaSW3ge+KgcL6Wtt1R5hUV1ajVwVSUi
939# HF/FachKqPqyLJFZTGjNrxnmNYpt8P1d5JTvJfmfr55Su/P9n7kcyWp7zMcb2Q5nlXt4tWogOHLI
940# OzEWKCacbFfVHE+PpdrcvCVZMDzFogIq5EqGTOZe2poPpBVE+1y9mf5+TXBegy5HToLWvmfmJNTO
941# NCDuBjgLs2tdw2yMPm4YEr57PnMX5gGTC3f2ZihXCIJDCRCdQ9sVBOjIQbOCzxFXkVITo0BAZhCi
942# Yz61wt3Ud8e//zhXWCkCsSV+IZCxxPzhEFd+RFVjW0Nm9hsb2FgAhkXCjsGROgoleYgaZJWvQaAg
943# UyBzMmKDPKTllBHyE3Gy1ehBNGPgEBChf17/9M+j8pcm1OmlM434ctWQ4qW7RU56//yq1soFY0Te
944# fu2ei03a6m68fYuW6s7XEEK58QisJWRAvEbpwu/eyqfs7PsQ+zSgJHyk2rO95IxdMtEESb2GRuoi
945# Bs+AHNdYFTAi+GBWw9dvEgqQ0Mpv0//6bBE/Fb4d7b7f56uUNnnE7mFnjGmGQN+MvC62pfwfvJTT
946# EkT1iZ9kjM9FprTFWXT4UmO3XTvesGeE50sV9YPm71X4DCQwc4KE8vyuwj0s6oMNAUACW2ClU9QQ
947# y0tRpaF1tzs4N42Q5zl0TzWxbCCjAtC3u6xf+c8MCGrr7DzNhm42LOQiHTa4MwX4x96q7235oiAU
948# iQqSI/hyF5yLpWw4etyUvsx2/0/0wkuTU1FozbLoCWJEWcPS7QadMrRRISxHf0YobIeQyz34regl
949# t1qSQ3dCU9D6AHLgX6kqllx4X0fnFq7LtfN7fA2itW26v+kAT2QFZ3qZhINGfofCja/pITC1uNAZ
950# gsJaTMcQ600krj/ynoxnjT+n1gmeqThac6/Mi3YlVeRtaxI2InL82ZuD+w/dfY9OpPssQjy3xiQa
951# jPuaMWXRxz/sS9syOoGVH7XBwKrWpQcpchozWJt40QV5DslJkclcr8aC2AGlzuJMTdEgz1eqV0+H
952# bAXG9HRHN/0eJTn1/QAAAAEABVguNTA5AAADjzCCA4swggJzAhRGqVxH4HTLYPGO4rzHcCPeGDKn
953# xTANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMCY2ExEDAOBgNVBAgMB29udGFyaW8xEDAOBgNV
954# BAcMB3Rvcm9udG8xFDASBgNVBAoMC2plbmtpbnN0ZXN0MRkwFwYDVQQDDBBqZW5raW5zdGVzdC5p
955# bmZvMR0wGwYJKoZIhvcNAQkBFg50ZXN0QHRlc3QuaW5mbzAeFw0xOTEwMDgxNTI5NTVaFw0xOTEx
956# MDcxNTI5NTVaMIGBMQswCQYDVQQGEwJjYTEQMA4GA1UECAwHb250YXJpbzEQMA4GA1UEBwwHdG9y
957# b250bzEUMBIGA1UECgwLamVua2luc3Rlc3QxGTAXBgNVBAMMEGplbmtpbnN0ZXN0LmluZm8xHTAb
958# BgkqhkiG9w0BCQEWDnRlc3RAdGVzdC5pbmZvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
959# AQEA02q352JTHGvROMBhSHvSv+vnoOTDKSTz2aLQn0tYrIRqRo+8bfmMjXuhkwZPSnCpvUGNAJ+w
960# Jrt/dqMoYUjCBkjylD/qHmnXN5EwS1cMg1Djh65gi5JJLFJ7eNcoSsr/0AJ+TweIal1jJSP3t3PF
961# 9Uv21gm6xdm7HnNK66WpUUXLDTKaIs/jtagVY1bLOo9oEVeLN4nT2CYWztpMvdCyEDUzgEdDbmrP
962# F5nKUPK5hrFqo1Dc5rUI4ZshL3Lpv398aMxv6n2adQvuL++URMEbXXBhxOrT6rCtYzbcR5fkwS9i
963# d3Br45CoWOQro02JAepoU0MQKY5+xQ4Bq9Q7tB9BAwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAe
964# 4xc+mSvKkrKBHg9/zpkWgZUiOp4ENJCi8H4tea/PCM439v6y/kfjT/okOokFvX8N5aa1OSz2Vsrl
965# m8kjIc6hiA7bKzT6lb0EyjUShFFZ5jmGVP4S7/hviDvgB5yEQxOPpumkdRP513YnEGj/o9Pazi5h
966# /MwpRxxazoda9r45kqQpyG+XoM4pB+Fd3JzMc4FUGxfVPxJU4jLawnJJiZ3vqiSyaB0YyUL+Er1Q
967# 6NnqtR4gEBF0ZVlQmkycFvD4EC2boP943dLqNUvop+4R3SM1QMM6P5u8iTXtHd/VN4MwMyy1wtog
968# hYAzODo1Jt59pcqqKJEas0C/lFJEB3frw4ImNx5fNlJYOpx+ijfQs9m39CevDq0=
969
970agent:
gio20157e82026-07-22 13:10:48 +0400971 # -- Add the environment proxy settings form jenkins controller to the agents.
972 addMasterProxyEnvVars: false
973
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400974 # -- Enable Kubernetes plugin jnlp-agent podTemplate
975 enabled: true
976 # -- The name of the pod template to use for providing default values
977 defaultsProviderTemplate: ""
978
gio20157e82026-07-22 13:10:48 +0400979 # Useful for not including a serviceAccount in the template if `false`
980 # -- Use `serviceAccountAgent.name` as the default value for defaults template `serviceAccount`
981 useDefaultServiceAccount: true
982
983 # -- Override the default service account
984 # @default -- `serviceAccountAgent.name` if `agent.useDefaultServiceAccount` is `true`
985 serviceAccount:
986
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400987 # For connecting to the Jenkins controller
988 # -- Overrides the Kubernetes Jenkins URL
989 jenkinsUrl:
990
991 # connects to the specified host and port, instead of connecting directly to the Jenkins controller
992 # -- Overrides the Kubernetes Jenkins tunnel
993 jenkinsTunnel:
gio20157e82026-07-22 13:10:48 +0400994 # -- Disables the verification of the controller certificate on remote connection. This flag correspond to the "Disable https certificate check" flag in kubernetes plugin UI
995 skipTlsVerify: false
996 # -- Enable the possibility to restrict the usage of this agent to specific folder. This flag correspond to the "Restrict pipeline support to authorized folders" flag in kubernetes plugin UI
997 usageRestricted: false
Giorgi Lekveishvili35982662024-04-05 13:05:40 +0400998 # -- The connection timeout in seconds for connections to Kubernetes API. The minimum value is 5
999 kubernetesConnectTimeout: 5
1000 # -- The read timeout in seconds for connections to Kubernetes API. The minimum value is 15
1001 kubernetesReadTimeout: 15
1002 # -- The maximum concurrent connections to Kubernetes API
1003 maxRequestsPerHostStr: "32"
1004 # -- Time in minutes after which the Kubernetes cloud plugin will clean up an idle worker that has not already terminated
1005 retentionTimeout: 5
1006 # -- Seconds to wait for pod to be running
1007 waitForPodSec: 600
1008 # -- Namespace in which the Kubernetes agents should be launched
1009 namespace:
1010 # -- Custom Pod labels (an object with `label-key: label-value` pairs)
1011 podLabels: {}
1012 # -- Custom registry used to pull the agent jnlp image from
1013 jnlpregistry:
1014 image:
gio20157e82026-07-22 13:10:48 +04001015 # -- Registry to pull the agent jnlp image from
1016 registry: ""
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001017 # -- Repository to pull the agent jnlp image from
1018 repository: "jenkins/inbound-agent"
1019 # -- Tag of the image to pull
gio20157e82026-07-22 13:10:48 +04001020 tag: "3383.vc8881d4b_0e76-1"
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001021 # -- Configure working directory for default agent
1022 workingDir: "/home/jenkins/agent"
1023 nodeUsageMode: "NORMAL"
1024 # -- Append Jenkins labels to the agent
1025 customJenkinsLabels: []
1026 # -- Name of the secret to be used to pull the image
1027 imagePullSecretName:
1028 componentName: "jenkins-agent"
1029 # -- Enables agent communication via websockets
1030 websocket: false
1031 directConnection: false
1032 # -- Agent privileged container
1033 privileged: false
1034 # -- Configure container user
1035 runAsUser:
1036 # -- Configure container group
1037 runAsGroup:
1038 # -- Enables the agent to use the host network
1039 hostNetworking: false
1040 # -- Resources allocation (Requests and Limits)
1041 resources:
1042 requests:
1043 cpu: "512m"
1044 memory: "512Mi"
1045 # ephemeralStorage:
1046 limits:
1047 cpu: "512m"
1048 memory: "512Mi"
1049 # ephemeralStorage:
1050 livenessProbe: {}
gio20157e82026-07-22 13:10:48 +04001051 # execArgs: "cat /tmp/healthy"
1052 # failureThreshold: 3
1053 # initialDelaySeconds: 0
1054 # periodSeconds: 10
1055 # successThreshold: 1
1056 # timeoutSeconds: 1
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001057
1058 # You may want to change this to true while testing a new image
1059 # -- Always pull agent container image before build
1060 alwaysPullImage: false
1061 # When using Pod Security Admission in the Agents namespace with the restricted Pod Security Standard,
1062 # the jnlp container cannot be scheduled without overriding its container definition with a securityContext.
1063 # This option allows to automatically inject in the jnlp container a securityContext
1064 # that is suitable for the use of the restricted Pod Security Standard.
1065 # -- Set a restricted securityContext on jnlp containers
1066 restrictedPssSecurityContext: false
1067 # Controls how agent pods are retained after the Jenkins build completes
1068 # Possible values: Always, Never, OnFailure
1069 podRetention: "Never"
1070 # Disable if you do not want the Yaml the agent pod template to show up
1071 # in the job Console Output. This can be helpful for either security reasons
1072 # or simply to clean up the output to make it easier to read.
1073 showRawYaml: true
1074
1075 # You can define the volumes that you want to mount for this container
1076 # Allowed types are: ConfigMap, EmptyDir, EphemeralVolume, HostPath, Nfs, PVC, Secret
1077 # Configure the attributes as they appear in the corresponding Java class for that type
1078 # https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes
1079 # -- Additional volumes
1080 volumes: []
1081 # - type: ConfigMap
1082 # configMapName: myconfigmap
1083 # mountPath: /var/myapp/myconfigmap
1084 # - type: EmptyDir
1085 # mountPath: /var/myapp/myemptydir
1086 # memory: false
1087 # - type: EphemeralVolume
1088 # mountPath: /var/myapp/myephemeralvolume
1089 # accessModes: ReadWriteOnce
1090 # requestsSize: 10Gi
1091 # storageClassName: mystorageclass
1092 # - type: HostPath
1093 # hostPath: /var/lib/containers
1094 # mountPath: /var/myapp/myhostpath
1095 # - type: Nfs
1096 # mountPath: /var/myapp/mynfs
1097 # readOnly: false
1098 # serverAddress: "192.0.2.0"
1099 # serverPath: /var/lib/containers
1100 # - type: PVC
1101 # claimName: mypvc
1102 # mountPath: /var/myapp/mypvc
1103 # readOnly: false
1104 # - type: Secret
1105 # defaultMode: "600"
1106 # mountPath: /var/myapp/mysecret
1107 # secretName: mysecret
1108 # Pod-wide environment, these vars are visible to any container in the agent pod
1109
1110 # You can define the workspaceVolume that you want to mount for this container
1111 # Allowed types are: DynamicPVC, EmptyDir, EphemeralVolume, HostPath, Nfs, PVC
1112 # Configure the attributes as they appear in the corresponding Java class for that type
1113 # https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes/workspace
1114 # -- Workspace volume (defaults to EmptyDir)
1115 workspaceVolume: {}
1116 ## DynamicPVC example
1117 # - type: DynamicPVC
1118 # configMapName: myconfigmap
1119 ## EmptyDir example
1120 # - type: EmptyDir
1121 # memory: false
1122 ## EphemeralVolume example
1123 # - type: EphemeralVolume
1124 # accessModes: ReadWriteOnce
1125 # requestsSize: 10Gi
1126 # storageClassName: mystorageclass
1127 ## HostPath example
1128 # - type: HostPath
1129 # hostPath: /var/lib/containers
1130 ## NFS example
1131 # - type: Nfs
1132 # readOnly: false
1133 # serverAddress: "192.0.2.0"
1134 # serverPath: /var/lib/containers
1135 ## PVC example
1136 # - type: PVC
1137 # claimName: mypvc
1138 # readOnly: false
1139
1140 # Pod-wide environment, these vars are visible to any container in the agent pod
1141 # -- Environment variables for the agent Pod
1142 envVars: []
1143 # - name: PATH
1144 # value: /usr/local/bin
1145 # -- Mount a secret as environment variable
1146 secretEnvVars: []
1147 # - key: PATH
1148 # optional: false # default: false
1149 # secretKey: MY-K8S-PATH
1150 # secretName: my-k8s-secret
1151
1152 # -- Node labels for pod assignment
1153 nodeSelector: {}
1154 # Key Value selectors. Ex:
1155 # nodeSelector
1156 # jenkins-agent: v1
1157
1158 # -- Command to execute when side container starts
1159 command:
1160 # -- Arguments passed to command to execute
1161 args: "${computer.jnlpmac} ${computer.name}"
1162 # -- Side container name
1163 sideContainerName: "jnlp"
1164
1165 # Doesn't allocate pseudo TTY by default
1166 # -- Allocate pseudo tty to the side container
1167 TTYEnabled: false
gio20157e82026-07-22 13:10:48 +04001168 # -- Max number of agents to launch for a whole cluster.
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001169 containerCap: 10
gio20157e82026-07-22 13:10:48 +04001170 # -- Max number of agents to launch for this type of agent
1171 instanceCap: 2147483647
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001172 # -- Agent Pod base name
1173 podName: "default"
1174
gio20157e82026-07-22 13:10:48 +04001175 # Enables garbage collection of orphan pods for this Kubernetes cloud. (beta)
1176 garbageCollection:
1177 # -- When enabled, Jenkins will periodically check for orphan pods that have not been touched for the given timeout period and delete them.
1178 enabled: false
1179 # -- Namespaces to look at for garbage collection, in addition to the default namespace defined for the cloud. One namespace per line.
1180 namespaces: ""
1181 # namespaces: |-
1182 # namespaceOne
1183 # namespaceTwo
1184 # -- Timeout value for orphaned pods
1185 timeout: 300
1186
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001187 # -- Allows the Pod to remain active for reuse until the configured number of minutes has passed since the last step was executed on it
1188 idleMinutes: 0
1189
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001190 # The raw yaml of a Pod API Object, for example, this allows usage of toleration for agent pods.
1191 # https://github.com/jenkinsci/kubernetes-plugin#using-yaml-to-define-pod-templates
1192 # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
1193 # -- The raw yaml of a Pod API Object to merge into the agent spec
1194 yamlTemplate: ""
1195 # yamlTemplate: |-
1196 # apiVersion: v1
1197 # kind: Pod
1198 # spec:
1199 # tolerations:
1200 # - key: "key"
1201 # operator: "Equal"
1202 # value: "value"
1203
1204 # -- Defines how the raw yaml field gets merged with yaml definitions from inherited pod templates. Possible values: "merge" or "override"
1205 yamlMergeStrategy: "override"
gio20157e82026-07-22 13:10:48 +04001206 # -- Controls whether the defined yaml merge strategy will be inherited if another defined pod template is configured to inherit from the current one
1207 inheritYamlMergeStrategy: false
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001208 # -- Timeout in seconds for an agent to be online
1209 connectTimeout: 100
1210 # -- Annotations to apply to the pod
1211 annotations: {}
1212
1213 # Containers specified here are added to all agents. Set key empty to remove container from additional agents.
1214 # -- Add additional containers to the agents
1215 additionalContainers: []
1216 # - sideContainerName: dind
1217 # image:
1218 # repository: docker
1219 # tag: dind
1220 # command: dockerd-entrypoint.sh
1221 # args: ""
1222 # privileged: true
1223 # resources:
1224 # requests:
1225 # cpu: 500m
1226 # memory: 1Gi
1227 # limits:
1228 # cpu: 1
1229 # memory: 2Gi
1230
1231 # Useful when configuring agents only with the podTemplates value, since the default podTemplate populated by values mentioned above will be excluded in the rendered template.
1232 # -- Disable the default Jenkins Agent configuration
1233 disableDefaultAgent: false
1234
1235 # Below is the implementation of custom pod templates for the default configured kubernetes cloud.
1236 # Add a key under podTemplates for each pod template. Each key (prior to | character) is just a label, and can be any value.
1237 # Keys are only used to give the pod template a meaningful name. The only restriction is they may only contain RFC 1123 \ DNS label
1238 # characters: lowercase letters, numbers, and hyphens. Each pod template can contain multiple containers.
1239 # For this pod templates configuration to be loaded, the following values must be set:
1240 # controller.JCasC.defaultConfig: true
1241 # Best reference is https://<jenkins_url>/configuration-as-code/reference#Cloud-kubernetes. The example below creates a python pod template.
1242 # -- Configures extra pod templates for the default kubernetes cloud
1243 podTemplates: {}
1244 # python: |
1245 # - name: python
1246 # label: jenkins-python
1247 # serviceAccount: jenkins
1248 # containers:
1249 # - name: python
1250 # image: python:3
1251 # command: "/bin/sh -c"
1252 # args: "cat"
1253 # ttyEnabled: true
1254 # privileged: true
1255 # resourceRequestCpu: "400m"
1256 # resourceRequestMemory: "512Mi"
1257 # resourceLimitCpu: "1"
1258 # resourceLimitMemory: "1024Mi"
1259
1260# Inherits all values from `agent` so you only need to specify values which differ
1261# -- Configure additional
1262additionalAgents: {}
1263# maven:
1264# podName: maven
1265# customJenkinsLabels: maven
1266# # An example of overriding the jnlp container
1267# # sideContainerName: jnlp
1268# image:
1269# repository: jenkins/jnlp-agent-maven
1270# tag: latest
1271# python:
1272# podName: python
1273# customJenkinsLabels: python
1274# sideContainerName: python
1275# image:
1276# repository: python
1277# tag: "3"
1278# command: "/bin/sh -c"
1279# args: "cat"
1280# TTYEnabled: true
1281
1282# Here you can add additional clouds
1283# They inherit all values from the default cloud (including the main agent), so
1284# you only need to specify values which differ. If you want to override
1285# default additionalAgents with the additionalClouds.additionalAgents set
1286# additionalAgentsOverride to `true`.
1287additionalClouds: {}
1288# remote-cloud-1:
1289# kubernetesURL: https://api.remote-cloud.com
1290# additionalAgentsOverride: true
1291# additionalAgents:
1292# maven-2:
1293# podName: maven-2
1294# customJenkinsLabels: maven
1295# # An example of overriding the jnlp container
1296# # sideContainerName: jnlp
1297# image:
1298# repository: jenkins/jnlp-agent-maven
1299# tag: latest
1300# namespace: my-other-maven-namespace
1301# remote-cloud-2:
1302# kubernetesURL: https://api.remote-cloud.com
1303
1304persistence:
1305 # -- Enable the use of a Jenkins PVC
1306 enabled: true
1307
1308 # A manually managed Persistent Volume and Claim
1309 # Requires persistence.enabled: true
1310 # If defined, PVC must be created manually before volume will be bound
1311 # -- Provide the name of a PVC
1312 existingClaim:
1313
1314 # jenkins data Persistent Volume Storage Class
1315 # If defined, storageClassName: <storageClass>
1316 # If set to "-", storageClassName: "", which disables dynamic provisioning
1317 # If undefined (the default) or set to null, no storageClassName spec is
1318 # set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS & OpenStack)
1319 # -- Storage class for the PVC
1320 storageClass:
1321 # -- Annotations for the PVC
1322 annotations: {}
1323 # -- Labels for the PVC
1324 labels: {}
1325 # -- The PVC access mode
1326 accessMode: "ReadWriteOnce"
1327 # -- The size of the PVC
1328 size: "8Gi"
1329
1330 # ref: https://kubernetes.io/docs/concepts/storage/volume-pvc-datasource/
1331 # -- Existing data source to clone PVC from
1332 dataSource: {}
1333 # name: PVC-NAME
1334 # kind: PersistentVolumeClaim
1335
1336 # -- SubPath for jenkins-home mount
1337 subPath:
1338 # -- Additional volumes
1339 volumes: []
1340 # - name: nothing
1341 # emptyDir: {}
1342
1343 # -- Additional mounts
1344 mounts: []
1345 # - mountPath: /var/nothing
1346 # name: nothing
1347 # readOnly: true
1348
1349networkPolicy:
1350 # -- Enable the creation of NetworkPolicy resources
1351 enabled: false
1352
1353 # For Kubernetes v1.4, v1.5 and v1.6, use 'extensions/v1beta1'
1354 # For Kubernetes v1.7, use 'networking.k8s.io/v1'
1355 # -- NetworkPolicy ApiVersion
1356 apiVersion: networking.k8s.io/v1
1357 # You can allow agents to connect from both within the cluster (from within specific/all namespaces) AND/OR from a given external IP range
1358 internalAgents:
1359 # -- Allow internal agents (from the same cluster) to connect to controller. Agent pods will be filtered based on PodLabels
1360 allowed: true
1361 # -- A map of labels (keys/values) that agent pods must have to be able to connect to controller
1362 podLabels: {}
1363 # -- A map of labels (keys/values) that agents namespaces must have to be able to connect to controller
gio20157e82026-07-22 13:10:48 +04001364 namespaceLabels:
1365 {}
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001366 # project: myproject
1367 externalAgents:
1368 # -- The IP range from which external agents are allowed to connect to controller, i.e., 172.17.0.0/16
1369 ipCIDR:
1370 # -- A list of IP sub-ranges to be excluded from the allowlisted IP range
gio20157e82026-07-22 13:10:48 +04001371 except:
1372 []
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001373 # - 172.17.1.0/24
1374
1375## Install Default RBAC roles and bindings
1376rbac:
1377 # -- Whether RBAC resources are created
1378 create: true
1379 # -- Whether the Jenkins service account should be able to read Kubernetes secrets
1380 readSecrets: false
gio20157e82026-07-22 13:10:48 +04001381 # -- Whether the Jenkins service account should be able to use the OpenShift "nonroot" Security Context Constraints
1382 useOpenShiftNonRootSCC: false
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001383
1384serviceAccount:
1385 # -- Configures if a ServiceAccount with this name should be created
1386 create: true
1387
1388 # The name of the ServiceAccount is autogenerated by default
1389 # -- The name of the ServiceAccount to be used by access-controlled resources
1390 name:
1391 # -- Configures annotations for the ServiceAccount
1392 annotations: {}
1393 # -- Configures extra labels for the ServiceAccount
1394 extraLabels: {}
1395 # -- Controller ServiceAccount image pull secret
1396 imagePullSecretName:
gio20157e82026-07-22 13:10:48 +04001397 # -- Auto-mount ServiceAccount token
1398 automountServiceAccountToken: true
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001399
1400serviceAccountAgent:
1401 # -- Configures if an agent ServiceAccount should be created
1402 create: false
1403
1404 # If not set and create is true, a name is generated using the fullname template
1405 # -- The name of the agent ServiceAccount to be used by access-controlled resources
1406 name:
1407 # -- Configures annotations for the agent ServiceAccount
1408 annotations: {}
1409 # -- Configures extra labels for the agent ServiceAccount
1410 extraLabels: {}
1411 # -- Agent ServiceAccount image pull secret
1412 imagePullSecretName:
gio20157e82026-07-22 13:10:48 +04001413 # -- Auto-mount ServiceAccount token
1414 automountServiceAccountToken: true
Giorgi Lekveishvili35982662024-04-05 13:05:40 +04001415
1416# -- Checks if any deprecated values are used
1417checkDeprecation: true
1418
1419awsSecurityGroupPolicies:
1420 enabled: false
1421 policies:
1422 - name: ""
1423 securityGroupIds: []
1424 podSelector: {}
1425
1426# Here you can configure unit tests values when executing the helm unittest in the CONTRIBUTING.md
1427helmtest:
1428 # A testing framework for bash
1429 bats:
1430 # Bash Automated Testing System (BATS)
1431 image:
1432 # -- Registry of the image used to test the framework
1433 registry: "docker.io"
1434 # -- Repository of the image used to test the framework
1435 repository: "bats/bats"
1436 # -- Tag of the image to test the framework
gio20157e82026-07-22 13:10:48 +04001437 tag: "1.13.0"