美文网首页
Helm入门(四)

Helm入门(四)

作者: 87d6dc4b11a7 | 来源:发表于2023-11-20 10:52 被阅读0次

    前文的安装方式只会使用 chart 的默认配置选项。很多时候,我们需要自定义 chart 来指定我们想要的配置。
    使用 helm show values 可以查看 chart 中的可配置选项:

    root@shawn-virtual-machine:/srv/gitlab# helm show values bitnami/jenkins
    # Copyright VMware, Inc.
    # SPDX-License-Identifier: APACHE-2.0
    
    ## @section Global parameters
    ## Global Docker image parameters
    ## Please, note that this will override the image parameters, including dependencies, configured to use the global value
    ## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass
    
    ## @param global.imageRegistry Global Docker image registry
    ## @param global.imagePullSecrets Global Docker registry secret names as an array
    ## @param global.storageClass Global StorageClass for Persistent Volume(s)
    ##
    global:
      imageRegistry: ""
      ## E.g.
      ## imagePullSecrets:
      ##   - myRegistryKeySecretName
      ##
      imagePullSecrets: []
      storageClass: ""
    
    ## @section Common parameters
    
    ## @param kubeVersion Override Kubernetes version
    ##
    kubeVersion: ""
    ## @param nameOverride String to partially override common.names.fullname
    ##
    nameOverride: ""
    ## @param fullnameOverride String to fully override common.names.fullname
    ##
    fullnameOverride: ""
    ## @param commonLabels Labels to add to all deployed objects
    ##
    commonLabels: {}
    ## @param commonAnnotations Annotations to add to all deployed objects
    ##
    commonAnnotations: {}
    ## @param clusterDomain Kubernetes cluster domain name
    ##
    clusterDomain: cluster.local
    ## @param extraDeploy Array of extra objects to deploy with the release
    ##
    extraDeploy: []
    ## Enable diagnostic mode in the deployment
    ##
    diagnosticMode:
      ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)
      ##
      enabled: false
      ## @param diagnosticMode.command Command to override all containers in the deployment
      ##
      command:
        - sleep
      ## @param diagnosticMode.args Args to override all containers in the deployment
      ##
      args:
        - infinity
    
    ## @section Jenkins Image parameters
    
    ## Bitnami Jenkins image
    ## ref: https://hub.docker.com/r/bitnami/jenkins/tags/
    ## @param image.registry [default: REGISTRY_NAME] Jenkins image registry
    ## @param image.repository [default: REPOSITORY_NAME/jenkins] Jenkins image repository
    ## @skip image.tag Jenkins image tag (immutable tags are recommended)
    ## @param image.digest Jenkins image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
    ## @param image.pullPolicy Jenkins image pull policy
    ## @param image.pullSecrets Jenkins image pull secrets
    ## @param image.debug Enable image debug mode
    ##
    image:
      registry: docker.io
      repository: bitnami/jenkins
      tag: 2.414.3-debian-11-r1
      digest: ""
      ## Specify a imagePullPolicy
      ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
      ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
      ##
      pullPolicy: IfNotPresent
      ## Optionally specify an array of imagePullSecrets.
      ## Secrets must be manually created in the namespace.
      ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
      ## e.g:
      ## pullSecrets:
      ##   - myRegistryKeySecretName
      ##
      pullSecrets: []
      ## Enable debug mode
      ##
      debug: false
    
    ## @section Jenkins Configuration parameters
    ## Jenkins settings based on environment variables
    ## ref: https://github.com/bitnami/containers/tree/main/bitnami/jenkins#configuration
    
    ## @param jenkinsUser Jenkins username
    ##
    jenkinsUser: user
    ## @param jenkinsPassword Jenkins user password
    ## Defaults to a random 10-character alphanumeric string if not set
    ##
    jenkinsPassword: ""
    ## @param jenkinsHost Jenkins host to create application URLs
    ##
    jenkinsHost: ""
    ## @param jenkinsHome Jenkins home directory
    ##
    jenkinsHome: /bitnami/jenkins/home
    ## @param javaOpts Custom JVM parameters
    ##
    javaOpts: []
    ## @param disableInitialization Skip performing the initial bootstrapping for Jenkins
    ##
    disableInitialization: "no"
    ## @param command Override default container command (useful when using custom images)
    ##
    command: []
    ## @param args Override default container args (useful when using custom images)
    ##
    args: []
    ## @param extraEnvVars Array with extra environment variables to add to the Jenkins container
    ## e.g:
    ## extraEnvVars:
    ##   - name: FOO
    ##     value: "bar"
    ##
    extraEnvVars: []
    ## @param extraEnvVarsCM Name of existing ConfigMap containing extra env vars
    ##
    extraEnvVarsCM: ""
    ## @param extraEnvVarsSecret Name of existing Secret containing extra env vars
    ##
    extraEnvVarsSecret: ""
    
    ## @param plugins List of plugins to be installed during Jenkins first boot.
    ## Note: For this value to take effect on already initialized pods, set overridePlugins=true.
    ## plugins:
    ##   - kubernetes:3852.v41ea_166a_ed1b_
    ##   - workflow-aggregator:590.v6a_d052e5a_a_b_5
    ##   - git:4.13.0
    ##   - configuration-as-code:1569.vb_72405b_80249
    ##
    plugins: []
    ## @param extraPlugins List of plugins to install in addition to those listed in `plugins`
    ##
    extraPlugins: []
    ## @param latestPlugins Set to true to download the latest version of all dependencies, even if the version(s) of the requested plugin(s) are not the latest.
    ##
    latestPlugins: true
    ## @param latestSpecifiedPlugins Set to true download the latest dependencies of any plugin that is requested to have the latest version.
    ##
    latestSpecifiedPlugins: false
    ## @param skipImagePlugins Set this value to true to skip installing plugins stored under /opt/bitnami/jenkins/plugins
    ##
    skipImagePlugins: false
    ## @param overridePlugins Setting this value to true will remove all plugins from the jenkinsHome directory and install new plugins from scratch.
    ##
    overridePlugins: false
    ## @param overridePaths Comma-separated list of relative paths to be removed from Jenkins home volume and/or mounted if present in the mounted content dir
    ##
    overridePaths: ""
    ## @param initScripts Dictionary of scripts to be mounted at `/docker-entrypoint-initdb.d`. Evaluated as a template. Allows .sh and .groovy formats.
    ## These scripts will only be executed during the container first startup.
    ## For example:
    ## initScripts:
    ##   my_init_script.sh: |
    ##      #!/bin/sh
    ##      echo "Do something."
    ##
    initScripts: {}
    ## @param initScriptsCM ConfigMap containing the `/docker-entrypoint-initdb.d` scripts. Evaluated as a template.
    ##
    initScriptsCM: ""
    ## @param initScriptsSecret Secret containing `/docker-entrypoint-initdb.d` scripts to be executed at initialization time that contain sensitive data. Evaluated as a template.
    ##
    initScriptsSecret: ""
    ## @param initHookScripts Dictionary of scripts to be mounted at `$JENKINS_HOME/init.groovy.d`. Evaluated as a template. Allows .sh and .groovy formats.
    ## These init scripts will executed each time Jenkins is .
    ##
    ## For example:
    ## initHookScripts:
    ##   my_script.groovy: |
    ##     println "Hello World"
    ##
    initHookScripts: {}
    ## @param initHookScriptsCM ConfigMap containing the `$JENKINS_HOME/init.groovy.d` scripts. Evaluated as a template.
    ##
    initHookScriptsCM: ""
    ## @param initHookScriptsSecret Secret containing `$JENKINS_HOME/init.groovy.d` scripts to be executed at initialization time that contain sensitive data. Evaluated as a template.
    ##
    initHookScriptsSecret: ""
    
    ## @section Jenkins TLS configuration
    ##
    tls:
      ## @param tls.autoGenerated Create self-signed TLS certificates. Currently only supports PEM certificates.
      ##
      autoGenerated: false
      ## @param tls.usePemCerts Use this variable if your secrets contain PEM certificates instead of PKCS12
      ## Note: Ignored when using autoGenerated certs.
      ##
      usePemCerts: false
      ## @param tls.existingSecret Name of the existing secret containing the 'jenkins.jks' keystore, if usePemCerts is enabled, use keys 'tls.crt' and 'tls.key'.
      ##
      existingSecret: ""
      ## @param tls.password Password to access the JKS keystore when it is password-protected.
      ##
      password: ""
      ## @param tls.passwordsSecret Name of the existing secret containing the JKS keystore password.
      ##
      passwordsSecret: ""
      ## Init Container resource requests and limits
      ## ref: https://kubernetes.io/docs/user-guide/compute-resources/
      ## We usually recommend not to specify default resources and to leave this as a conscious
      ## choice for the user. This also increases chances charts run on environments with little
      ## resources, such as Minikube. If you do want to specify resources, uncomment the following
      ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
      ## @param tls.resources.limits Init container generate-tls-certs resource limits
      ## @param tls.resources.requests Init container generate-tls-certs resource requests
      ##
      resources:
        ## Example:
        ## limits:
        ##   cpu: 100m
        ##   memory: 128Mi
        ##
        limits: {}
        ## Examples:
        ## requests:
        ##   cpu: 100m
        ##   memory: 128Mi
        ##
        requests: {}
    
    ## @section Jenkins Configuration as Code plugin settings (EXPERIMENTAL)
    ## The values under this section require that the plugin 'configuration-as-code' is installed.
    ## All the configuration-as-code values are rendered as a template.
    ##
    configAsCode:
      ## @param configAsCode.enabled Enable configuration as code.
      ##
      enabled: false
      ## @param configAsCode.extraConfigFiles List of additional configuration-as-code files to be mounted
      ## E.g.:
      ##  welcome-message.yaml: |-
      ##    jenkins:
      ##      systemMessage: Welcome to our CI\CD server.  This Jenkins is configured and managed 'as code'.
      ##
      extraConfigFiles: {}
      ## @param configAsCode.securityRealm Content of the 'securityRealm' block
      ##
      securityRealm: {}
      ## @param configAsCode.authorizationStrategy Content of the 'authorizationStrategy' block
      ##
      authorizationStrategy: {}
      ## @param configAsCode.security Content of the 'security' block
      ##
      security: {}
      ## @param configAsCode.extraJenkins Append additional settings under the 'jenkins' block
      ##
      extraJenkins: {}
      ## @param configAsCode.extraConfig Append additional settings at the root of the configuration-as-code file
      ##
      extraConfig: {}
      ## @param configAsCode.extraKubernetes Append additional settings under the Kubernetes cloud block
      ## NOTE: This value will only take effect if agent.enabled=true
      ##
      extraKubernetes: {}
      ## @param configAsCode.extraClouds Additional clouds
      ## NOTE: This value will only take effect if agent.enabled=true
      ##
      extraClouds: []
      ## @param configAsCode.existingConfigmap Name of an existing configmap containing the config-as-code files.
      ##
      existingConfigmap: ""
      ## Configuration auto-reload sidecar container
      ##
      autoReload:
        ## @param configAsCode.autoReload.enabled Enable the creation of the autoReload sidecar container.
        ## Note: This container will trigger the configuration reload each time the Configmap is updated. Changes applied via Jenkins UI will be overwritten.
        ## If disabled, config as code files will only take effect during the container first boot.
        ##
        enabled: true
        ## @param configAsCode.autoReload.initialDelay In seconds, time
        ##
        initialDelay: 360
        ## @param configAsCode.autoReload.reqRetries
        ##
        reqRetries: 12
        ## @param configAsCode.autoReload.interval
        ##
        interval: 10
        ## @param configAsCode.autoReload.command
        ##
        command: []
        ## @param configAsCode.autoReload.args
        ##
        args: []
        ## @param configAsCode.autoReload.extraEnvVars
        ##
        extraEnvVars: []
        ## @param configAsCode.autoReload.extraEnvVarsSecret
        ##
        extraEnvVarsSecret: ""
        ## @param configAsCode.autoReload.extraEnvVarsCM
        ##
        extraEnvVarsCM: ""
        ## @param configAsCode.autoReload.extraVolumeMounts
        ##
        extraVolumeMounts: []
        ## Configure Container Security Context
        ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
        ## @param configAsCode.autoReload.containerSecurityContext.enabled Enabled containers' Security Context
        ## @param configAsCode.autoReload.containerSecurityContext.runAsUser Set containers' Security Context runAsUser
        ## @param configAsCode.autoReload.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot
        ## @param configAsCode.autoReload.containerSecurityContext.privileged Set container's Security Context privileged
        ## @param configAsCode.autoReload.containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem
        ## @param configAsCode.autoReload.containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation
        ## @param configAsCode.autoReload.containerSecurityContext.capabilities.drop List of capabilities to be dropped
        ## @param configAsCode.autoReload.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
        ##
        containerSecurityContext:
          enabled: true
          runAsUser: 1001
          runAsNonRoot: true
          privileged: false
          readOnlyRootFilesystem: false
          allowPrivilegeEscalation: false
          capabilities:
            drop: ["ALL"]
          seccompProfile:
            type: "RuntimeDefault"
    
    ## Jenkins agents (EXPERIMENTAL)
    ## This feature won't take effect if ConfigAsCode is not enabled.
    ## NOTE: Values under this field may use Jenkins syntax instead of Kubernetes syntax
    ## Ref: https://www.jenkins.io/doc/pipeline/steps/kubernetes/
    agent:
      ## @param agent.enabled Set to true to enable the configuration of Jenkins kubernetes agents
      ##
      enabled: false
      ## Bitnami Jenkins agent image
      ## ref: https://hub.docker.com/r/bitnami/jenkins/tags/
      ## @param agent.image.registry [default: REGISTRY_NAME] Jenkins image registry
      ## @param agent.image.repository [default: REPOSITORY_NAME/jenkins-agent] Jenkins image repository
      ## @skip agent.image.tag Jenkins image tag (immutable tags are recommended)
      ## @param agent.image.digest Jenkins image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
      ## @param agent.image.pullPolicy Jenkins image pull policy
      ## @param agent.image.pullSecrets Jenkins image pull secrets
      ## @param agent.image.debug Enable image debug mode
      ##
      image:
        registry: docker.io
        repository: bitnami/jenkins-agent
        tag: 0.3192.0-debian-11-r0
        digest: ""
        ## Specify a imagePullPolicy
        ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
        ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images
        ##
        pullPolicy: IfNotPresent
        ## Optionally specify an array of imagePullSecrets.
        ## Secrets must be manually created in the namespace.
        ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
        ## e.g:
        ## pullSecrets:
        ##   - myRegistryKeySecretName
        ##
        pullSecrets: []
        ## Enable debug mode
        ##
        debug: false
    
      ## @param agent.templateLabel Label for the Kubernetes agent template
      ##
      templateLabel: "kubernetes-agent"
      ## @param agent.podLabels Additional pod labels for the Jenkins agent pods
      ##
      podLabels: {}
      ## @param agent.annotations Additional pod annotations for the Jenkins agent pods
      ##
      annotations: {}
      ## @param agent.sidecars Additional sidecar containers for the Jenkins agent pods
      ##
      sidecars: []
      ## @param agent.command Override default container command (useful when using custom images)
      ##
      command: ""
      ## @param agent.args Override default container args (useful when using custom images)
      ##
      args: ""
      ## @param agent.containerExtraEnvVars Additional env vars for the Jenkins agent pods
      ##
      containerExtraEnvVars: []
      ## @param agent.podExtraEnvVars Additional env vars for the Jenkins agent pods
      ##
      podExtraEnvVars: []
      ## @param agent.extraAgentTemplate Extend the default agent template
      ##
      extraAgentTemplate: {}
      ## @param agent.extraTemplates Provide your own custom agent templates
      ##
      extraTemplates: []
      ## Jenkins containers' resource requests and limits
      ## ref: https://kubernetes.io/docs/user-guide/compute-resources/
      ## @param agent.resources.limits The resources limits for the Jenkins container
      ## @param agent.resources.requests [object] The requested resources for the Jenkins container
      ##
      resources:
        limits: {}
        requests:
          memory: 512Mi
          cpu: 300m
      ## Container securityContext
      ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
      ## @param agent.containerSecurityContext.enabled Enable container security context
      ## @param agent.containerSecurityContext.runAsUser User ID for the agent container
      ## @param agent.containerSecurityContext.runAsGroup User ID for the agent container
      ## @param agent.containerSecurityContext.privileged Decide if the container runs privileged.
      ##
      containerSecurityContext:
        enabled: false
        runAsUser: ""
        runAsGroup: ""
        privileged: false
    
    ## @section Jenkins deployment parameters
    
    ## @param updateStrategy.type Jenkins deployment strategy type
    ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
    ## NOTE: Set it to `Recreate` if you use a PV that cannot be mounted on multiple pods
    ## e.g:
    ## updateStrategy:
    ##  type: RollingUpdate
    ##  rollingUpdate:
    ##    maxSurge: 25%
    ##    maxUnavailable: 25%
    ##
    updateStrategy:
      type: RollingUpdate
    
    ## @param priorityClassName Jenkins pod priority class name
    ##
    priorityClassName: ""
    ## @param schedulerName Name of the k8s scheduler (other than default)
    ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
    ##
    schedulerName: ""
    ## @param topologySpreadConstraints Topology Spread Constraints for pod assignment
    ## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
    ## The value is evaluated as a template
    ##
    topologySpreadConstraints: []
    ## @param hostAliases Jenkins pod host aliases
    ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
    ##
    hostAliases: []
    ## @param extraVolumes Optionally specify extra list of additional volumes for Jenkins pods
    ##
    extraVolumes: []
    ## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for Jenkins container(s)
    ##
    extraVolumeMounts: []
    ## @param sidecars Add additional sidecar containers to the Jenkins pod
    ## e.g:
    ## sidecars:
    ##   - name: your-image-name
    ##     image: your-image
    ##     imagePullPolicy: Always
    ##     ports:
    ##       - name: portname
    ##         containerPort: 1234
    ##
    sidecars: []
    ## @param initContainers Add additional init containers to the Jenkins pods
    ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
    ## e.g:
    ## initContainers:
    ##  - name: your-image-name
    ##    image: your-image
    ##    imagePullPolicy: Always
    ##    ports:
    ##      - name: portname
    ##        containerPort: 1234
    ##
    initContainers: []
    ## @param lifecycleHooks Add lifecycle hooks to the Jenkins deployment
    ##
    lifecycleHooks: {}
    ## @param podLabels Extra labels for Jenkins pods
    ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
    ##
    podLabels: {}
    ## @param podAnnotations Annotations for Jenkins pods
    ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
    ##
    podAnnotations: {}
    ## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
    ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
    ##
    podAffinityPreset: ""
    ## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
    ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
    ##
    podAntiAffinityPreset: soft
    ## Node affinity preset
    ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
    ##
    nodeAffinityPreset:
      ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
      ##
      type: ""
      ## @param nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set
      ##
      key: ""
      ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set
      ## E.g.
      ## values:
      ##   - e2e-az1
      ##   - e2e-az2
      ##
      values: []
    ## @param affinity Affinity for pod assignment
    ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
    ## NOTE: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
    ##
    affinity: {}
    ## @param nodeSelector Node labels for pod assignment
    ## ref: https://kubernetes.io/docs/user-guide/node-selection/
    ##
    nodeSelector: {}
    ## @param tolerations Tolerations for pod assignment
    ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
    ##
    tolerations: []
    ## Jenkins containers' resource requests and limits
    ## ref: https://kubernetes.io/docs/user-guide/compute-resources/
    ## @param resources.limits The resources limits for the Jenkins container
    ## @param resources.requests [object] The requested resources for the Jenkins container
    ##
    resources:
      limits: {}
      requests:
        memory: 512Mi
        cpu: 300m
    ## Container ports
    ## @param containerPorts.http Jenkins HTTP container port
    ## @param containerPorts.https Jenkins HTTPS container port
    ## @param containerPorts.agentListener Jenkins agent listener port, ignored if agent.enabled=false
    ##
    containerPorts:
      http: 8080
      https: 8443
      agentListener: 50000
    ## Configure Pods Security Context
    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
    ## @param podSecurityContext.enabled Enabled Jenkins pods' Security Context
    ## @param podSecurityContext.fsGroup Set Jenkins pod's Security Context fsGroup
    ##
    podSecurityContext:
      enabled: true
      fsGroup: 1001
    ## Configure Container Security Context (only main container)
    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
    ## @param containerSecurityContext.enabled Enabled containers' Security Context
    ## @param containerSecurityContext.runAsUser Set containers' Security Context runAsUser
    ## @param containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot
    ## @param containerSecurityContext.privileged Set container's Security Context privileged
    ## @param containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem
    ## @param containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation
    ## @param containerSecurityContext.capabilities.drop List of capabilities to be dropped
    ## @param containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
    ##
    containerSecurityContext:
      enabled: true
      runAsUser: 1001
      runAsNonRoot: true
      privileged: false
      readOnlyRootFilesystem: false
      allowPrivilegeEscalation: false
      capabilities:
        drop: ["ALL"]
      seccompProfile:
        type: "RuntimeDefault"
    ## Configure extra options for Jenkins containers' startup, liveness and readiness probes
    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
    ## @param startupProbe.enabled Enable startupProbe
    ## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
    ## @param startupProbe.periodSeconds Period seconds for startupProbe
    ## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
    ## @param startupProbe.failureThreshold Failure threshold for startupProbe
    ## @param startupProbe.successThreshold Success threshold for startupProbe
    ##
    startupProbe:
      enabled: false
      initialDelaySeconds: 180
      periodSeconds: 10
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 6
    ## @param livenessProbe.enabled Enable livenessProbe
    ## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
    ## @param livenessProbe.periodSeconds Period seconds for livenessProbe
    ## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
    ## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
    ## @param livenessProbe.successThreshold Success threshold for livenessProbe
    ##
    livenessProbe:
      enabled: true
      initialDelaySeconds: 180
      periodSeconds: 10
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 6
    ## @param readinessProbe.enabled Enable readinessProbe
    ## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
    ## @param readinessProbe.periodSeconds Period seconds for readinessProbe
    ## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
    ## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
    ## @param readinessProbe.successThreshold Success threshold for readinessProbe
    ##
    readinessProbe:
      enabled: true
      initialDelaySeconds: 30
      periodSeconds: 5
      timeoutSeconds: 3
      successThreshold: 1
      failureThreshold: 3
    ## @param customStartupProbe Custom startupProbe that overrides the default one
    ##
    customStartupProbe: {}
    ## @param customLivenessProbe Custom livenessProbe that overrides the default one
    ##
    customLivenessProbe: {}
    ## @param customReadinessProbe Custom readinessProbe that overrides the default one
    #
    customReadinessProbe: {}
    
    ## @section Traffic Exposure Parameters
    
    ## Jenkins service parameters
    ##
    service:
      ## @param service.type Jenkins service type
      ##
      type: LoadBalancer
      ## @param service.ports.http Jenkins service HTTP port
      ## @param service.ports.https Jenkins service HTTPS port
      ##
      ports:
        http: 80
        https: 443
      ## Node ports to expose
      ## @param service.nodePorts.http Node port for HTTP
      ## @param service.nodePorts.https Node port for HTTPS
      ## NOTE: choose port between <30000-32767>
      ##
      nodePorts:
        http: ""
        https: ""
      ## @param service.clusterIP Jenkins service Cluster IP
      ## e.g.:
      ## clusterIP: None
      ##
      clusterIP: ""
      ## @param service.loadBalancerIP Jenkins service Load Balancer IP
      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
      ##
      loadBalancerIP: ""
      ## @param service.loadBalancerSourceRanges Jenkins service Load Balancer sources
      ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
      ## e.g:
      ## loadBalancerSourceRanges:
      ##   - 10.10.10.0/24
      ##
      loadBalancerSourceRanges: []
      ## @param service.externalTrafficPolicy Jenkins service external traffic policy
      ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
      ##
      externalTrafficPolicy: Cluster
      ## @param service.annotations Additional custom annotations for Jenkins service
      ##
      annotations: {}
      ## @param service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
      ##
      extraPorts: []
      ## @param service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
      ## If "ClientIP", consecutive client requests will be directed to the same Pod
      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
      ##
      sessionAffinity: None
      ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
      ## sessionAffinityConfig:
      ##   clientIP:
      ##     timeoutSeconds: 300
      ##
      sessionAffinityConfig: {}
    
    ## Jenkins agent listener service parameters
    ## NOTE: ignored if agent.enabled=false
    ##
    agentListenerService:
      ## @param agentListenerService.enabled
      ##
      enabled: true
      ## @param agentListenerService.type Jenkins service type
      ##
      type: ClusterIP
      ## @param agentListenerService.ports.agentListener Jenkins service agent listener port
      ##
      ports:
        agentListener: 50000
      ## Node ports to expose
      ## @param agentListenerService.nodePorts.agentListener Node port for agent listener
      ## NOTE: choose port between <30000-32767>
      ##
      nodePorts:
        agentListener: ""
      ## @param agentListenerService.clusterIP Jenkins service Cluster IP
      ## e.g.:
      ## clusterIP: None
      ##
      clusterIP: ""
      ## @param agentListenerService.loadBalancerIP Jenkins service Load Balancer IP
      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
      ##
      loadBalancerIP: ""
      ## @param agentListenerService.loadBalancerSourceRanges Jenkins service Load Balancer sources
      ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
      ## e.g:
      ## loadBalancerSourceRanges:
      ##   - 10.10.10.0/24
      ##
      loadBalancerSourceRanges: []
      ## @param agentListenerService.externalTrafficPolicy Jenkins service external traffic policy
      ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
      ##
      externalTrafficPolicy: Cluster
      ## @param agentListenerService.annotations Additional custom annotations for Jenkins service
      ##
      annotations: {}
      ## @param agentListenerService.extraPorts Extra ports to expose (normally used with the `sidecar` value)
      ##
      extraPorts: []
      ## @param agentListenerService.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
      ## If "ClientIP", consecutive client requests will be directed to the same Pod
      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
      ##
      sessionAffinity: None
      ## @param agentListenerService.sessionAffinityConfig Additional settings for the sessionAffinity
      ## sessionAffinityConfig:
      ##   clientIP:
      ##     timeoutSeconds: 300
      ##
      sessionAffinityConfig: {}
    
    ## Configure the ingress resource that allows you to access the Jenkins installation
    ## ref: https://kubernetes.io/docs/user-guide/ingress/
    ##
    ingress:
      ## @param ingress.enabled Enable ingress record generation for Jenkins
      ##
      enabled: false
      ## @param ingress.pathType Ingress path type
      ##
      pathType: ImplementationSpecific
      ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)
      ##
      apiVersion: ""
      ## @param ingress.hostname Default host for the ingress record
      ##
      hostname: jenkins.local
      ## @param ingress.path Default path for the ingress record
      ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers
      ##
      path: /
      ## @param ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.
      ## For a full list of possible ingress annotations, please see
      ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
      ## Use this parameter to set the required annotations for cert-manager, see
      ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
      ##
      ## e.g:
      ## annotations:
      ##   kubernetes.io/ingress.class: nginx
      ##   cert-manager.io/cluster-issuer: cluster-issuer-name
      ##
      annotations: {}
      ## @param ingress.tls Enable TLS configuration for the host defined at `ingress.hostname` parameter
      ## TLS certificates will be retrieved from a TLS secret with name: `{{- printf "%s-tls" .Values.ingress.hostname }}`
      ## You can:
      ##   - Use the `ingress.secrets` parameter to create this TLS secret
      ##   - Rely on cert-manager to create it by setting the corresponding annotations
      ##   - Rely on Helm to create self-signed certificates by setting `ingress.selfSigned=true`
      ##
      tls: false
      ## @param ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm
      ##
      selfSigned: false
      ## @param ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record
      ## e.g:
      ## extraHosts:
      ##   - name: jenkins.local
      ##     path: /
      ##
      extraHosts: []
      ## @param ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host
      ## e.g:
      ## extraPaths:
      ## - path: /*
      ##   backend:
      ##     serviceName: ssl-redirect
      ##     servicePort: use-annotation
      ##
      extraPaths: []
      ## @param ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record
      ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
      ## e.g:
      ## extraTls:
      ## - hosts:
      ##     - jenkins.local
      ##   secretName: jenkins.local-tls
      ##
      extraTls: []
      ## @param ingress.secrets Custom TLS certificates as secrets
      ## NOTE: 'key' and 'certificate' are expected in PEM format
      ## NOTE: 'name' should line up with a 'secretName' set further up
      ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates
      ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days
      ## It is also possible to create and manage the certificates outside of this helm chart
      ## Please see README.md for more information
      ## e.g:
      ## secrets:
      ##   - name: jenkins.local-tls
      ##     key: |-
      ##       -----BEGIN RSA PRIVATE KEY-----
      ##       ...
      ##       -----END RSA PRIVATE KEY-----
      ##     certificate: |-
      ##       -----BEGIN CERTIFICATE-----
      ##       ...
      ##       -----END CERTIFICATE-----
      ##
      secrets: []
      ## @param ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)
      ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster .
      ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
      ##
      ingressClassName: ""
      ## @param ingress.extraRules Additional rules to be covered with this ingress record
      ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules
      ## e.g:
      ## extraRules:
      ## - host: example.local
      ##     http:
      ##       path: /
      ##       backend:
      ##         service:
      ##           name: example-svc
      ##           port:
      ##             name: http
      ##
      extraRules: []
    
    ## @section Persistence Parameters
    
    ## Persistence Parameters
    ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/
    ##
    persistence:
      ## @param persistence.enabled Enable persistence using Persistent Volume Claims
      ##
      enabled: true
      ## @param persistence.storageClass 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
      ##
      storageClass: ""
      ## @param persistence.existingClaim Use a existing PVC which must be created manually before bound
      ##
      existingClaim: ""
      ## @param persistence.annotations Additional custom annotations for the PVC
      ##
      annotations: {}
      ## @param persistence.accessModes [array] Persistent Volume access modes
      ##
      accessModes:
        - ReadWriteOnce
      ## @param persistence.size Persistent Volume size
      ##
      size: 8Gi
      ## @param persistence.selector Selector to match an existing Persistent Volume for Ingester's data PVC
      ## If set, the PVC can't have a PV dynamically provisioned for it
      ## E.g.
      ## selector:
      ##   matchLabels:
      ##     app: my-app
      ##
      selector: {}
    ## 'volumePermissions' init container parameters
    ## Changes the owner and group of the persistent volume mount point to runAsUser:fsGroup values
    ## based on the podSecurityContext/containerSecurityContext parameters
    ##
    volumePermissions:
      ## @param volumePermissions.enabled Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup`
      ##
      enabled: false
      ## OS Shell + Utility image
      ## ref: https://hub.docker.com/r/bitnami/os-shell/tags/
      ## @param volumePermissions.image.registry [default: REGISTRY_NAME] OS Shell + Utility image registry
      ## @param volumePermissions.image.repository [default: REPOSITORY_NAME/os-shell] OS Shell + Utility image repository
      ## @skip volumePermissions.image.tag OS Shell + Utility image tag (immutable tags are recommended)
      ## @param volumePermissions.image.digest OS Shell + Utility image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
      ## @param volumePermissions.image.pullPolicy OS Shell + Utility image pull policy
      ## @param volumePermissions.image.pullSecrets OS Shell + Utility image pull secrets
      ##
      image:
        registry: docker.io
        repository: bitnami/os-shell
        tag: 11-debian-11-r91
        digest: ""
        pullPolicy: IfNotPresent
        ## Optionally specify an array of imagePullSecrets.
        ## Secrets must be manually created in the namespace.
        ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
        ## e.g:
        ## pullSecrets:
        ##   - myRegistryKeySecretName
        ##
        pullSecrets: []
      ## Init container's resource requests and limits
      ## ref: https://kubernetes.io/docs/user-guide/compute-resources/
      ## @param volumePermissions.resources.limits The resources limits for the init container
      ## @param volumePermissions.resources.requests The requested resources for the init container
      ##
      resources:
        limits: {}
        requests: {}
      ## Init container Container Security Context
      ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
      ## @param volumePermissions.securityContext.runAsUser Set init container's Security Context runAsUser
      ## NOTE: when runAsUser is set to special value "auto", init container will try to chown the
      ##   data folder to auto-determined user&group, using commands: `id -u`:`id -G | cut -d" " -f2`
      ##   "auto" is especially useful for OpenShift which has scc with dynamic user ids (and 0 is not allowed)
      ##
      securityContext:
        runAsUser: 0
    
    ## @section Other Parameters
    ##
    
    ## RBAC configuration
    ##
    rbac:
      ## @param rbac.create Specifies whether RBAC resources should be created
      ##
      create: true
      ## @param rbac.rules Custom RBAC rules to set
      ## e.g:
      ## rules:
      ##   - apiGroups:
      ##       - ""
      ##     resources:
      ##       - pods
      ##     verbs:
      ##       - get
      ##       - list
      ##
      rules: []
    
    ## ServiceAccount configuration
    ##
    serviceAccount:
      ## @param serviceAccount.create Specifies whether a ServiceAccount should be created
      ##
      create: true
      ## @param serviceAccount.name The name of the ServiceAccount to use.
      ## If not set and create is true, a name is generated using the common.names.fullname template
      ##
      name: ""
      ## @param serviceAccount.annotations Additional Service Account annotations (evaluated as a template)
      ##
      annotations: {}
      ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account
      ##
      automountServiceAccountToken: true
    

    然后,可以使用 YAML 格式的文件覆盖上述任意配置项,并在安装过程中使用该文件。

    
    helm install -f values.yaml bitnami/jenkins jenkins
    

    当我们想升级到 chart 的新版本,或是修改 release 的配置,可以使用 helm upgrade 命令

    helm upgrade -f values.yaml jenkins bitnami/jenkins
    

    可以使用 helm get values 命令来看看配置值是否真的生效了:

    helm get values jenkins 
    

    相关文章

      网友评论

          本文标题:Helm入门(四)

          本文链接:https://www.haomeiwen.com/subject/pllvwdtx.html