1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003 |
- # Default values for jenkins.
- # This is a YAML-formatted file.
- # Declare name/value pairs to be passed into your templates.
- # name: value
- ## Overrides for generated resource names
- # See templates/_helpers.tpl
- # nameOverride:
- # fullnameOverride:
- # namespaceOverride:
- # For FQDN resolving of the controller service. Change this value to match your existing configuration.
- # ref: https://github.com/kubernetes/dns/blob/master/docs/specification.md
- clusterZone: "cluster.local"
- # The URL of the Kubernetes API server
- kubernetesURL: "https://kubernetes.default"
- renderHelmLabels: true
- controller:
- # Used for label app.kubernetes.io/component
- componentName: "jenkins-controller"
- image: "reg.cestong.com.cn/cecf/custom-jenkins"
- tag: "latest"
- tagLabel: jdk11
- imagePullPolicy: "Always"
- imagePullSecretName:
- # Optionally configure lifetime for controller-container
- lifecycle:
- # postStart:
- # exec:
- # command:
- # - "uname"
- # - "-a"
- disableRememberMe: false
- numExecutors: 0
- # configures the executor mode of the Jenkins node. Possible values are: NORMAL or EXCLUSIVE
- executorMode: "NORMAL"
- # This is ignored if enableRawHtmlMarkupFormatter is true
- markupFormatter: plainText
- customJenkinsLabels: []
- # The default configuration uses this secret to configure an admin user
- # If you don't need that user or use a different security realm then you can disable it
- adminSecret: true
- hostNetworking: false
- # When enabling LDAP or another non-Jenkins identity source, the built-in admin account will no longer exist.
- # If you disable the non-Jenkins identity store and instead use the Jenkins internal one,
- # you should revert controller.adminUser to your preferred admin user:
- adminUser: "admin"
- # adminPassword: <defaults to random>
- admin:
- existingSecret: ""
- userKey: jenkins-admin-user
- passwordKey: jenkins-admin-password
- # This values should not be changed unless you use your custom image of jenkins or any devired from. If you want to use
- # Cloudbees Jenkins Distribution docker, you should set jenkinsHome: "/var/cloudbees-jenkins-distribution"
- jenkinsHome: "/var/jenkins_home"
- # This values should not be changed unless you use your custom image of jenkins or any devired from. If you want to use
- # Cloudbees Jenkins Distribution docker, you should set jenkinsRef: "/usr/share/cloudbees-jenkins-distribution/ref"
- jenkinsRef: "/usr/share/jenkins/ref"
- # Path to the jenkins war file which is used by jenkins-plugin-cli.
- jenkinsWar: "/usr/share/jenkins/jenkins.war"
- # Overrides the default arguments passed to the war
- # overrideArgs:
- # - --httpPort=8080
- resources:
- requests:
- cpu: "50m"
- memory: "256Mi"
- limits:
- cpu: "2000m"
- memory: "4096Mi"
- # Share process namespace to allow sidecar containers to interact with processes in other containers in the same pod
- shareProcessNamespace: false
- # Overrides the init container default values
- # initContainerResources:
- # requests:
- # cpu: "50m"
- # memory: "256Mi"
- # limits:
- # cpu: "2000m"
- # memory: "4096Mi"
- # Environment variables that get added to the init container (useful for e.g. http_proxy)
- # initContainerEnv:
- # - name: http_proxy
- # value: "http://192.168.64.1:3128"
- # containerEnv:
- # - name: http_proxy
- # value: "http://192.168.64.1:3128"
- # Set min/max heap here if needed with:
- # javaOpts: "-Xms512m -Xmx512m"
- # jenkinsOpts: ""
- # If you are using the ingress definitions provided by this chart via the `controller.ingress` block the configured hostname will be the ingress hostname starting with `https://` or `http://` depending on the `tls` configuration.
- # The Protocol can be overwritten by specifying `controller.jenkinsUrlProtocol`.
- # jenkinsUrlProtocol: "https"
- # If you are not using the provided ingress you can specify `controller.jenkinsUrl` to change the url definition.
- # jenkinsUrl: ""
- # If you set this prefix and use ingress controller then you might want to set the ingress path below
- # jenkinsUriPrefix: "/jenkins"
- # Enable pod security context (must be `true` if podSecurityContextOverride, runAsUser or fsGroup are set)
- usePodSecurityContext: true
- # Note that `runAsUser`, `fsGroup`, and `securityContextCapabilities` are
- # being deprecated and replaced by `podSecurityContextOverride`.
- # Set runAsUser to 1000 to let Jenkins run as non-root user 'jenkins' which exists in 'jenkins/jenkins' docker image.
- # When setting runAsUser to a different value than 0 also set fsGroup to the same value:
- runAsUser: 1000
- fsGroup: 0
- # If you have PodSecurityPolicies that require dropping of capabilities as suggested by CIS K8s benchmark, put them here
- securityContextCapabilities: {}
- # drop:
- # - NET_RAW
- # Completely overwrites the contents of the `securityContext`, ignoring the
- # values provided for the deprecated fields: `runAsUser`, `fsGroup`, and
- # `securityContextCapabilities`. In the case of mounting an ext4 filesystem,
- # it might be desirable to use `supplementalGroups` instead of `fsGroup` in
- # the `securityContext` block: https://github.com/kubernetes/kubernetes/issues/67014#issuecomment-589915496
- podSecurityContextOverride:
- fsGroup: 994
- runAsUser: 1000
- # runAsNonRoot: true
- # supplementalGroups: [1000]
- # # capabilities: {}
- # Container securityContext
- containerSecurityContext:
- runAsUser: 1000
- runAsGroup: 1000
- readOnlyRootFilesystem: true
- allowPrivilegeEscalation: false
- servicePort: 8080
- targetPort: 8080
- # For minikube, set this to NodePort, elsewhere use LoadBalancer
- # Use ClusterIP if your setup includes ingress controller
- serviceType: ClusterIP
- # Use Local to preserve the client source IP and avoids a second hop for LoadBalancer and Nodeport type services,
- # but risks potentially imbalanced traffic spreading.
- serviceExternalTrafficPolicy:
- # Jenkins controller service annotations
- serviceAnnotations: {}
- # Jenkins controller custom labels
- statefulSetLabels: {}
- # foo: bar
- # bar: foo
- # Jenkins controller service labels
- serviceLabels: {}
- # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: https
- # Put labels on Jenkins controller pod
- podLabels: {}
- # Used to create Ingress record (should be used with ServiceType: ClusterIP)
- # nodePort: <to set explicitly, choose port between 30000-32767
- # Enable Kubernetes Startup, Liveness and Readiness Probes
- # if Startup Probe is supported, enable it too
- # ~ 2 minutes to allow Jenkins to restart when upgrading plugins. Set ReadinessTimeout to be shorter than LivenessTimeout.
- healthProbes: true
- probes:
- startupProbe:
- httpGet:
- path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
- port: http
- periodSeconds: 10
- timeoutSeconds: 5
- failureThreshold: 12
- livenessProbe:
- failureThreshold: 5
- httpGet:
- path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
- port: http
- periodSeconds: 10
- timeoutSeconds: 5
- # If Startup Probe is not supported on your Kubernetes cluster, you might want to use "initialDelaySeconds" instead.
- # It delays the initial liveness probe while Jenkins is starting
- # initialDelaySeconds: 60
- readinessProbe:
- failureThreshold: 3
- httpGet:
- path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
- port: http
- periodSeconds: 10
- timeoutSeconds: 5
- # If Startup Probe is not supported on your Kubernetes cluster, you might want to use "initialDelaySeconds" instead.
- # It delays the initial readyness probe while Jenkins is starting
- # initialDelaySeconds: 60
- # PodDisruptionBudget config
- podDisruptionBudget:
- enabled: false
- # For Kubernetes v1.5+, use 'policy/v1beta1'
- # For Kubernetes v1.21+, use 'policy/v1'
- apiVersion: "policy/v1beta1"
- annotations: {}
- labels: {}
- # maxUnavailable: "0"
- agentListenerEnabled: true
- agentListenerPort: 50000
- agentListenerHostPort:
- agentListenerNodePort:
- agentListenerExternalTrafficPolicy:
- agentListenerLoadBalancerSourceRanges:
- - 0.0.0.0/0
- disabledAgentProtocols:
- - JNLP-connect
- - JNLP2-connect
- csrf:
- defaultCrumbIssuer:
- enabled: true
- proxyCompatability: true
- # Kubernetes service type for the JNLP agent service
- # agentListenerServiceType is the Kubernetes Service type for the JNLP agent service,
- # either 'LoadBalancer', 'NodePort', or 'ClusterIP'
- # Note if you set this to 'LoadBalancer', you *must* define annotations to secure it. By default
- # this will be an external load balancer and allowing inbound 0.0.0.0/0, a HUGE
- # security risk: https://github.com/kubernetes/charts/issues/1341
- agentListenerServiceType: "ClusterIP"
- # Optionally assign an IP to the LoadBalancer agentListenerService LoadBalancer
- # GKE users: only regional static IPs will work for Service Load balancer.
- agentListenerLoadBalancerIP:
- agentListenerServiceAnnotations: {}
- # Example of 'LoadBalancer' type of agent listener with annotations securing it
- # agentListenerServiceType: LoadBalancer
- # agentListenerServiceAnnotations:
- # service.beta.kubernetes.io/aws-load-balancer-internal: "True"
- # service.beta.kubernetes.io/load-balancer-source-ranges: "172.0.0.0/8, 10.0.0.0/8"
- # LoadBalancerSourcesRange is a list of allowed CIDR values, which are combined with ServicePort to
- # set allowed inbound rules on the security group assigned to the controller load balancer
- loadBalancerSourceRanges:
- - 0.0.0.0/0
- # Optionally assign a known public LB IP
- # loadBalancerIP: 1.2.3.4
- # Optionally configure a JMX port
- # requires additional javaOpts, ie
- # javaOpts: >
- # -Dcom.sun.management.jmxremote.port=4000
- # -Dcom.sun.management.jmxremote.authenticate=false
- # -Dcom.sun.management.jmxremote.ssl=false
- # jmxPort: 4000
- # Optionally configure other ports to expose in the controller container
- extraPorts: []
- # - name: BuildInfoProxy
- # port: 9000
- # targetPort: 9010 (Optional: Use to explicitly set targetPort if different from port)
- # List of plugins to be install during Jenkins controller start
- installPlugins:
- - kubernetes:4029.v5712230ccb_f8
- - workflow-aggregator:596.v8c21c963d92d
- - git:5.1.0
- - configuration-as-code:1670.v564dc8b_982d0
- # Set to false to download the minimum required version of all dependencies.
- installLatestPlugins: true
- # Set to true to download latest dependencies of any plugin that is requested to have the latest version.
- installLatestSpecifiedPlugins: false
- # List of plugins to install in addition to those listed in controller.installPlugins
- additionalPlugins: []
- # Enable to initialize the Jenkins controller only once on initial installation.
- # Without this, whenever the controller gets restarted (Evicted, etc.) it will fetch plugin updates which has the potential to cause breakage.
- # Note that for this to work, `persistence.enabled` needs to be set to `true`
- initializeOnce: false
- # Enable to always override the installed plugins with the values of 'controller.installPlugins' on upgrade or redeployment.
- # overwritePlugins: true
- # Configures if plugins bundled with `controller.image` should be overwritten with the values of 'controller.installPlugins' on upgrade or redeployment.
- overwritePluginsFromImage: true
- # Configures the restrictions for naming projects. Set this key to null or empty to skip it in the default config.
- projectNamingStrategy: standard
- # Enable HTML parsing using OWASP Markup Formatter Plugin (antisamy-markup-formatter), useful with ghprb plugin.
- # The plugin is not installed by default, please update controller.installPlugins.
- enableRawHtmlMarkupFormatter: false
- # Used to approve a list of groovy functions in pipelines used the script-security plugin. Can be viewed under /scriptApproval
- scriptApproval: []
- # - "method groovy.json.JsonSlurperClassic parseText java.lang.String"
- # - "new groovy.json.JsonSlurperClassic"
- # List of groovy init scripts to be executed during Jenkins controller start
- initScripts: []
- # - |
- # print 'adding global pipeline libraries, register properties, bootstrap jobs...'
- # 'name' is a name of an existing secret in same namespace as jenkins,
- # 'keyName' is the name of one of the keys inside current secret.
- # the 'name' and 'keyName' are concatenated with a '-' in between, so for example:
- # an existing secret "secret-credentials" and a key inside it named "github-password" should be used in Jcasc as ${secret-credentials-github-password}
- # 'name' and 'keyName' must be lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-',
- # and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc')
- # existingSecret existing secret "secret-credentials" and a key inside it named "github-username" should be used in Jcasc as ${github-username}
- # When using existingSecret no need to specify the keyName under additionalExistingSecrets.
- existingSecret:
- additionalExistingSecrets: []
- # - name: secret-name-1
- # keyName: username
- # - name: secret-name-1
- # keyName: password
- additionalSecrets: []
- # - name: nameOfSecret
- # value: secretText
- # Generate SecretClaim resources in order to create Kubernetes secrets from HashiCorp Vault using kube-vault-controller.
- # 'name' is name of the secret that will be created in Kubernetes. The Jenkins fullname is prepended to this value.
- # 'path' is the fully qualified path to the secret in Vault
- # 'type' is an optional Kubernetes secret type. Defaults to 'Opaque'
- # 'renew' is an optional secret renewal time in seconds
- secretClaims: []
- # - name: secretName # required
- # path: testPath # required
- # type: kubernetes.io/tls # optional
- # renew: 60 # optional
- # Name of default cloud configuration.
- cloudName: "kubernetes"
- # Below is the implementation of Jenkins Configuration as Code. Add a key under configScripts for each configuration area,
- # 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.
- # Keys are only used to give the section a meaningful name. The only restriction is they may only contain RFC 1123 \ DNS label
- # characters: lowercase letters, numbers, and hyphens. The keys become the name of a configuration yaml file on the controller in
- # /var/jenkins_home/casc_configs (by default) and will be processed by the Configuration as Code Plugin. The lines after each |
- # become the content of the configuration yaml file. The first line after this is a JCasC root element, eg jenkins, credentials,
- # etc. Best reference is https://<jenkins_url>/configuration-as-code/reference. The example below creates a welcome message:
- JCasC:
- defaultConfig: true
- configUrls: []
- # - https://acme.org/jenkins.yaml
- # Remote URL:s for configuration files.
- configScripts: {}
- # welcome-message: |
- # jenkins:
- # systemMessage: Welcome to our CI\CD server. This Jenkins is configured and managed 'as code'.
- # Allows adding to the top-level security JCasC section. For legacy, default the chart includes apiToken configurations
- security:
- apiToken:
- creationOfLegacyTokenEnabled: false
- tokenGenerationOnCreationEnabled: false
- usageStatisticsEnabled: true
- # Ignored if securityRealm is defined in controller.JCasC.configScripts
- securityRealm: |-
- local:
- allowsSignup: false
- enableCaptcha: false
- users:
- - id: "${chart-admin-username}"
- name: "Jenkins Admin"
- password: "${chart-admin-password}"
- # Ignored if authorizationStrategy is defined in controller.JCasC.configScripts
- authorizationStrategy: |-
- loggedInUsersCanDoAnything:
- allowAnonymousRead: false
- # Optionally specify additional init-containers
- customInitContainers: []
- # - name: custom-init
- # image: "alpine:3.7"
- # imagePullPolicy: Always
- # command: [ "uname", "-a" ]
- sidecars:
- configAutoReload:
- # If enabled: true, Jenkins Configuration as Code will be reloaded on-the-fly without a reboot. If false or not-specified,
- # jcasc changes will cause a reboot and will only be applied at the subsequent start-up. Auto-reload uses the
- # http://<jenkins_url>/reload-configuration-as-code endpoint to reapply config when changes to the configScripts are detected.
- enabled: true
- image: kiwigrid/k8s-sidecar:1.24.4
- imagePullPolicy: IfNotPresent
- resources: {}
- # limits:
- # cpu: 100m
- # memory: 100Mi
- # requests:
- # cpu: 50m
- # memory: 50Mi
- # How many connection-related errors to retry on
- reqRetryConnect: 10
- # env:
- # - name: REQ_TIMEOUT
- # value: "30"
- # 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.
- # Is only used to reload jcasc config from the sidecar container running in the Jenkins controller pod.
- # This TCP port will not be open in the pod (unless you specifically configure this), so Jenkins will not be
- # accessible via SSH from outside of the pod. Note if you use non-root pod privileges (runAsUser & fsGroup),
- # this must be > 1024:
- sshTcpPort: 1044
- # folder in the pod that should hold the collected dashboards:
- folder: "/var/jenkins_home/casc_configs"
- # If specified, the sidecar will search for JCasC config-maps inside this namespace.
- # Otherwise the namespace in which the sidecar is running will be used.
- # It's also possible to specify ALL to search in all namespaces:
- # searchNamespace:
- containerSecurityContext:
- readOnlyRootFilesystem: true
- allowPrivilegeEscalation: false
- # Allows you to inject additional/other sidecars
- other: []
- ## The example below runs the client for https://smee.io as sidecar container next to Jenkins,
- ## that allows to trigger build behind a secure firewall.
- ## https://jenkins.io/blog/2019/01/07/webhook-firewalls/#triggering-builds-with-webhooks-behind-a-secure-firewall
- ##
- ## Note: To use it you should go to https://smee.io/new and update the url to the generete one.
- # - name: smee
- # image: docker.io/twalter/smee-client:1.0.2
- # args: ["--port", "{{ .Values.controller.servicePort }}", "--path", "/github-webhook/", "--url", "https://smee.io/new"]
- # resources:
- # limits:
- # cpu: 50m
- # memory: 128Mi
- # requests:
- # cpu: 10m
- # memory: 32Mi
- # Name of the Kubernetes scheduler to use
- schedulerName: ""
- # Node labels and tolerations for pod assignment
- # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
- # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature
- nodeSelector:
- kubernetes.io/hostname: k8sw4
-
- terminationGracePeriodSeconds:
- terminationMessagePath:
- terminationMessagePolicy:
- tolerations: []
- affinity: {}
- # Leverage a priorityClass to ensure your pods survive resource shortages
- # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
- priorityClassName:
- podAnnotations: {}
- # Add StatefulSet annotations
- statefulSetAnnotations: {}
- # StatefulSet updateStrategy
- # ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
- updateStrategy: {}
- ingress:
- enabled: true
- # Override for the default paths that map requests to the backend
- paths: []
- # - backend:
- # serviceName: ssl-redirect
- # servicePort: use-annotation
- # - backend:
- # serviceName: >-
- # {{ template "jenkins.fullname" . }}
- # # Don't use string here, use only integer value!
- # servicePort: 8080
- # For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'
- # For Kubernetes v1.19+, use 'networking.k8s.io/v1'
- apiVersion: "extensions/v1beta1"
- labels: {}
- annotations: {}
- # kubernetes.io/ingress.class: nginx
- # kubernetes.io/tls-acme: "true"
- # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
- # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
- ingressClassName: nginx
- # Set this path to jenkinsUriPrefix above or use annotations to rewrite path
- # path: "/jenkins"
- # configures the hostname e.g. jenkins.example.com
- hostName: "jenkins.cestong.com.cn"
- tls:
- # - secretName: jenkins.cluster.local
- # hosts:
- # - jenkins.cluster.local
- # often you want to have your controller all locked down and private
- # but you still want to get webhooks from your SCM
- # A secondary ingress will let you expose different urls
- # with a differnt configuration
- secondaryingress:
- enabled: false
- # paths you want forwarded to the backend
- # ex /github-webhook
- paths: []
- # For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'
- # For Kubernetes v1.19+, use 'networking.k8s.io/v1'
- apiVersion: "extensions/v1beta1"
- labels: {}
- annotations: {}
- # kubernetes.io/ingress.class: nginx
- # kubernetes.io/tls-acme: "true"
- # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
- # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
- # ingressClassName: nginx
- # configures the hostname e.g. jenkins-external.example.com
- hostName:
- tls:
- # - secretName: jenkins-external.example.com
- # hosts:
- # - jenkins-external.example.com
- # If you're running on GKE and need to configure a backendconfig
- # to finish ingress setup, use the following values.
- # Docs: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig
- backendconfig:
- enabled: false
- apiVersion: "extensions/v1beta1"
- name:
- labels: {}
- annotations: {}
- spec: {}
- # Openshift route
- route:
- enabled: false
- labels: {}
- annotations: {}
- # path: "/jenkins"
- # controller.hostAliases allows for adding entries to Pod /etc/hosts:
- # https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
- hostAliases: []
- # - ip: 192.168.50.50
- # hostnames:
- # - something.local
- # - ip: 10.0.50.50
- # hostnames:
- # - other.local
- # Expose Prometheus metrics
- prometheus:
- # If enabled, add the prometheus plugin to the list of plugins to install
- # https://plugins.jenkins.io/prometheus
- enabled: false
- # Additional labels to add to the ServiceMonitor object
- serviceMonitorAdditionalLabels: {}
- # Set a custom namespace where to deploy ServiceMonitor resource
- # serviceMonitorNamespace: monitoring
- scrapeInterval: 60s
- # This is the default endpoint used by the prometheus plugin
- scrapeEndpoint: /prometheus
- # Additional labels to add to the PrometheusRule object
- alertingRulesAdditionalLabels: {}
- # An array of prometheus alerting rules
- # See here: https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
- # The `groups` root object is added by default, simply add the rule entries
- alertingrules: []
- # Set a custom namespace where to deploy PrometheusRule resource
- prometheusRuleNamespace: ""
- # RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds
- # relabelings for a few standard Kubernetes fields. The original scrape job’s name
- # is available via the __tmp_prometheus_job_name label.
- # More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
- relabelings: []
- # MetricRelabelConfigs to apply to samples before ingestion.
- metricRelabelings: []
- googlePodMonitor:
- # If enabled, It creates Google Managed Prometheus scraping config
- enabled: false
- # Set a custom namespace where to deploy PodMonitoring resource
- # serviceMonitorNamespace: ""
- scrapeInterval: 60s
- # This is the default endpoint used by the prometheus plugin
- scrapeEndpoint: /prometheus
- # Can be used to disable rendering controller test resources when using helm template
- testEnabled: true
- httpsKeyStore:
- jenkinsHttpsJksSecretName: ''
- jenkinsHttpsJksSecretKey: "jenkins-jks-file"
- jenkinsHttpsJksPasswordSecretName: ""
- jenkinsHttpsJksPasswordSecretKey: "https-jks-password"
- enable: false
- disableSecretMount: false
- httpPort: 8081
- path: "/var/jenkins_keystore"
- fileName: "keystore.jks"
- password: "password"
- # Convert keystore.jks files content to base64 ( cat keystore.jks | base64 ) and put the output here
- jenkinsKeyStoreBase64Encoded: |
- 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
- agent:
- enabled: true
- defaultsProviderTemplate: ""
- # URL for connecting to the Jenkins controller
- jenkinsUrl:
- # connect to the specified host and port, instead of connecting directly to the Jenkins controller
- jenkinsTunnel:
- kubernetesConnectTimeout: 5
- kubernetesReadTimeout: 15
- maxRequestsPerHostStr: "32"
- retentionTimeout: 5
- waitForPodSec: 600
- namespace:
- # private registry for agent image
- jnlpregistry:
- image: "jenkins/inbound-agent"
- tag: "3107.v665000b_51092-15"
- workingDir: "/home/jenkins/agent"
- nodeUsageMode: "NORMAL"
- customJenkinsLabels: []
- # name of the secret to be used for image pulling
- imagePullSecretName:
- componentName: "jenkins-agent"
- websocket: false
- directConnection: false
- privileged: false
- runAsUser:
- runAsGroup:
- hostNetworking: false
- resources:
- requests:
- cpu: "512m"
- memory: "512Mi"
- # ephemeralStorage:
- limits:
- cpu: "512m"
- memory: "512Mi"
- # ephemeralStorage:
- livenessProbe: {}
- # execArgs: "cat /tmp/healthy"
- # failureThreshold: 3
- # initialDelaySeconds: 0
- # periodSeconds: 10
- # successThreshold: 1
- # timeoutSeconds: 1
- # You may want to change this to true while testing a new image
- alwaysPullImage: false
- # Controls how agent pods are retained after the Jenkins build completes
- # Possible values: Always, Never, OnFailure
- podRetention: "Never"
- # Disable if you do not want the Yaml the agent pod template to show up
- # in the job Console Output. This can be helpful for either security reasons
- # or simply to clean up the output to make it easier to read.
- showRawYaml: true
- # You can define the volumes that you want to mount for this container
- # Allowed types are: ConfigMap, EmptyDir, HostPath, Nfs, PVC, Secret
- # Configure the attributes as they appear in the corresponding Java class for that type
- # https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes
- volumes: []
- # - type: ConfigMap
- # configMapName: myconfigmap
- # mountPath: /var/myapp/myconfigmap
- # - type: EmptyDir
- # mountPath: /var/myapp/myemptydir
- # memory: false
- # - type: HostPath
- # hostPath: /var/lib/containers
- # mountPath: /var/myapp/myhostpath
- # - type: Nfs
- # mountPath: /var/myapp/mynfs
- # readOnly: false
- # serverAddress: "192.0.2.0"
- # serverPath: /var/lib/containers
- # - type: PVC
- # claimName: mypvc
- # mountPath: /var/myapp/mypvc
- # readOnly: false
- # - type: Secret
- # defaultMode: "600"
- # mountPath: /var/myapp/mysecret
- # secretName: mysecret
- # Pod-wide environment, these vars are visible to any container in the agent pod
- # You can define the workspaceVolume that you want to mount for this container
- # Allowed types are: DynamicPVC, EmptyDir, HostPath, Nfs, PVC
- # Configure the attributes as they appear in the corresponding Java class for that type
- # https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes/workspace
- workspaceVolume: {}
- ## DynamicPVC example
- # type: DynamicPVC
- # configMapName: myconfigmap
- ## EmptyDir example
- # type: EmptyDir
- # memory: false
- ## HostPath example
- # type: HostPath
- # hostPath: /var/lib/containers
- ## NFS example
- # type: Nfs
- # readOnly: false
- # serverAddress: "192.0.2.0"
- # serverPath: /var/lib/containers
- ## PVC example
- # type: PVC
- # claimName: mypvc
- # readOnly: false
- #
- # Pod-wide environment, these vars are visible to any container in the agent pod
- envVars: []
- # - name: PATH
- # value: /usr/local/bin
- # Mount a secret as environment variable
- secretEnvVars: []
- # - key: PATH
- # optional: false # default: false
- # secretKey: MY-K8S-PATH
- # secretName: my-k8s-secret
- nodeSelector:
- kubernetes.io/hostname: k8sw4
- # Key Value selectors. Ex:
- # jenkins-agent: v1
- # Executed command when side container gets started
- command:
- args: "${computer.jnlpmac} ${computer.name}"
- # Side container name
- sideContainerName: "jnlp"
- # Doesn't allocate pseudo TTY by default
- TTYEnabled: false
- # Max number of spawned agent
- containerCap: 10
- # Pod name
- podName: "default"
- # Allows the Pod to remain active for reuse until the configured number of
- # minutes has passed since the last step was executed on it.
- idleMinutes: 0
- # Raw yaml template for the Pod. For example this allows usage of toleration for agent pods.
- # https://github.com/jenkinsci/kubernetes-plugin#using-yaml-to-define-pod-templates
- # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
- yamlTemplate: ""
- # yamlTemplate: |-
- # apiVersion: v1
- # kind: Pod
- # spec:
- # tolerations:
- # - key: "key"
- # operator: "Equal"
- # value: "value"
- # Defines how the raw yaml field gets merged with yaml definitions from inherited pod templates: merge or override
- yamlMergeStrategy: "override"
- # Timeout in seconds for an agent to be online
- connectTimeout: 100
- # Annotations to apply to the pod.
- annotations: {}
- # Add additional containers to the agents.
- # Containers specified here are added to all agents. Set key empty to remove container from additional agents.
- additionalContainers: []
- # - sideContainerName: dind
- # image: docker
- # tag: dind
- # command: dockerd-entrypoint.sh
- # args: ""
- # privileged: true
- # resources:
- # requests:
- # cpu: 500m
- # memory: 1Gi
- # limits:
- # cpu: 1
- # memory: 2Gi
- # Disable the default Jenkins Agent configuration.
- # 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.
- disableDefaultAgent: false
- # Below is the implementation of custom pod templates for the default configured kubernetes cloud.
- # Add a key under podTemplates for each pod template. Each key (prior to | character) is just a label, and can be any value.
- # Keys are only used to give the pod template a meaningful name. The only restriction is they may only contain RFC 1123 \ DNS label
- # characters: lowercase letters, numbers, and hyphens. Each pod template can contain multiple containers.
- # For this pod templates configuration to be loaded the following values must be set:
- # controller.JCasC.defaultConfig: true
- # Best reference is https://<jenkins_url>/configuration-as-code/reference#Cloud-kubernetes. The example below creates a python pod template.
- podTemplates: {}
- # python: |
- # - name: python
- # label: jenkins-python
- # serviceAccount: jenkins
- # containers:
- # - name: python
- # image: python:3
- # command: "/bin/sh -c"
- # args: "cat"
- # ttyEnabled: true
- # privileged: true
- # resourceRequestCpu: "400m"
- # resourceRequestMemory: "512Mi"
- # resourceLimitCpu: "1"
- # resourceLimitMemory: "1024Mi"
- # Here you can add additional agents
- # They inherit all values from `agent` so you only need to specify values which differ
- additionalAgents: {}
- # maven:
- # podName: maven
- # customJenkinsLabels: maven
- # # An example of overriding the jnlp container
- # # sideContainerName: jnlp
- # image: jenkins/jnlp-agent-maven
- # tag: latest
- # python:
- # podName: python
- # customJenkinsLabels: python
- # sideContainerName: python
- # image: python
- # tag: "3"
- # command: "/bin/sh -c"
- # args: "cat"
- # TTYEnabled: true
- persistence:
- enabled: true
- ## A manually managed Persistent Volume and Claim
- ## Requires persistence.enabled: true
- ## If defined, PVC must be created manually before volume will be bound
- existingClaim:
- ## jenkins data Persistent Volume Storage Class
- ## If defined, storageClassName: <storageClass>
- ## If set to "-", storageClassName: "", which disables dynamic provisioning
- ## If undefined (the default) or set to null, no storageClassName spec is
- ## set, choosing the default provisioner. (gp2 on AWS, standard on
- ## GKE, AWS & OpenStack)
- ##
- storageClass: "openebs-hostpath"
- annotations: {}
- labels: {}
- accessMode: "ReadWriteOnce"
- size: "8Gi"
- # Existing data source to clone PVC from
- # ref: https://kubernetes.io/docs/concepts/storage/volume-pvc-datasource/
- dataSource:
- # name: PVC-NAME
- # kind: PersistentVolumeClaim
- volumes:
- - name: dockersock
- hostPath:
- path: "/var/run/docker.sock"
- mounts:
- - mountPath: /var/run/docker.sock
- name: dockersock
- networkPolicy:
- # Enable creation of NetworkPolicy resources.
- enabled: false
- # For Kubernetes v1.4, v1.5 and v1.6, use 'extensions/v1beta1'
- # For Kubernetes v1.7, use 'networking.k8s.io/v1'
- apiVersion: networking.k8s.io/v1
- # You can allow agents to connect from both within the cluster (from within specific/all namespaces) AND/OR from a given external IP range
- internalAgents:
- allowed: true
- podLabels: {}
- namespaceLabels: {}
- # project: myproject
- externalAgents: {}
- # ipCIDR: 172.17.0.0/16
- # except:
- # - 172.17.1.0/24
- ## Install Default RBAC roles and bindings
- rbac:
- create: true
- readSecrets: false
- serviceAccount:
- create: true
- # The name of the service account is autogenerated by default
- name:
- annotations: {}
- extraLabels: {}
- imagePullSecretName:
- serviceAccountAgent:
- # Specifies whether a ServiceAccount should be created
- create: false
- # The name of the ServiceAccount to use.
- # If not set and create is true, a name is generated using the fullname template
- name:
- annotations: {}
- extraLabels: {}
- imagePullSecretName:
- ## Backup cronjob configuration
- ## Ref: https://github.com/maorfr/kube-tasks
- backup:
- # Backup must use RBAC
- # So by enabling backup you are enabling RBAC specific for backup
- enabled: false
- # Used for label app.kubernetes.io/component
- componentName: "backup"
- # Schedule to run jobs. Must be in cron time format
- # Ref: https://crontab.guru/
- schedule: "0 2 * * *"
- labels: {}
- serviceAccount:
- create: true
- name:
- annotations: {}
- # Example for authorization to AWS S3 using kube2iam or IRSA
- # Can also be done using environment variables
- # iam.amazonaws.com/role: "jenkins"
- # "eks.amazonaws.com/role-arn": "arn:aws:iam::123456789012:role/jenkins-backup"
- # Set this to terminate the job that is running/failing continously and set the job status to "Failed"
- activeDeadlineSeconds: ""
- image:
- repository: "maorfr/kube-tasks"
- tag: "0.2.0"
- imagePullSecretName:
- # Additional arguments for kube-tasks
- # Ref: https://github.com/maorfr/kube-tasks#simple-backup
- extraArgs: []
- # Add existingSecret for AWS credentials
- existingSecret: {}
- ## Example for using an existing secret
- # jenkinsaws:
- ## Use this key for AWS access key ID
- # awsaccesskey: jenkins_aws_access_key
- ## Use this key for AWS secret access key
- # awssecretkey: jenkins_aws_secret_key
- # Add additional environment variables
- # jenkinsgcp:
- ## Use this key for GCP credentials
- # gcpcredentials: credentials.json
- env: []
- # Example environment variable required for AWS credentials chain
- # - name: "AWS_REGION"
- # value: "us-east-1"
- resources:
- requests:
- memory: 1Gi
- cpu: 1
- limits:
- memory: 1Gi
- cpu: 1
- # Destination to store the backup artifacts
- # Supported cloud storage services: AWS S3, Minio S3, Azure Blob Storage, Google Cloud Storage
- # Additional support can added. Visit this repository for details
- # Ref: https://github.com/maorfr/skbn
- destination: "s3://jenkins-data/backup"
- # By enabling only the jenkins_home/jobs folder gets backed up, not the whole jenkins instance
- onlyJobs: false
- # Enable backup pod security context (must be `true` if runAsUser or fsGroup are set)
- usePodSecurityContext: true
- # When setting runAsUser to a different value than 0 also set fsGroup to the same value:
- runAsUser: 1000
- fsGroup: 1000
- securityContextCapabilities: {}
- # drop:
- # - NET_RAW
- cronJob:
- apiVersion: batch/v1
- checkDeprecation: true
- awsSecurityGroupPolicies:
- enabled: false
- policies:
- - name: ""
- securityGroupIds: []
- podSelector: {}
- # Here you can configure unit tests values when executing the helm unittest in the CONTRIBUTING.md
- helmtest:
- # A testing framework for bash
- bats:
- # Bash Automated Testing System (BATS)
- image: "bats/bats"
- tag: "1.9.0"
|