tree: 190d43bdb580439113bd23ca6a4551dd67198f38 [path history] [tgz]
  1. templates/
  2. .helmignore
  3. Chart.yaml
  4. README.md
  5. README.md.gotmpl
  6. values.yaml
deploy/kubernetes/dolphinscheduler/README.md

About DolphinScheduler for Kubernetes

Dolphin Scheduler is a distributed and easy-to-expand visual DAG workflow scheduling system, dedicated to solving the complex dependencies in data processing, making the scheduling system out of the box for data processing.

This chart bootstraps all the components needed to run Apache DolphinScheduler on a Kubernetes Cluster using Helm.

QuickStart in Kubernetes

Please refer to the Quick Start in Kubernetes

Values

KeyTypeDefaultDescription
alert.affinityobject{}Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. More info: node-affinity
alert.annotationsobject{}You can use annotations to attach arbitrary non-identifying metadata to objects. Clients such as tools and libraries can retrieve this metadata.
alert.customizedConfigobject{}configure aligned with https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/resources/application.yaml
alert.enableCustomizedConfigboolfalseenable configure custom config
alert.enabledbooltrueEnable or disable the Alert-Server component
alert.env.JAVA_OPTSstring"-Xms512m -Xmx512m -Xmn256m"The jvm options for alert server
alert.livenessProbeobject{"enabled":true,"failureThreshold":"3","initialDelaySeconds":"30","periodSeconds":"30","successThreshold":"1","timeoutSeconds":"5"}Periodic probe of container liveness. Container will be restarted if the probe fails. More info: container-probes
alert.livenessProbe.enabledbooltrueTurn on and off liveness probe
alert.livenessProbe.failureThresholdstring"3"Minimum consecutive failures for the probe
alert.livenessProbe.initialDelaySecondsstring"30"Delay before liveness probe is initiated
alert.livenessProbe.periodSecondsstring"30"How often to perform the probe
alert.livenessProbe.successThresholdstring"1"Minimum consecutive successes for the probe
alert.livenessProbe.timeoutSecondsstring"5"When the probe times out
alert.nodeSelectorobject{}NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: assign-pod-node
alert.persistentVolumeClaimobject{"accessModes":["ReadWriteOnce"],"enabled":false,"storage":"20Gi","storageClassName":"-"}PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. More info: persistentvolumeclaims
alert.persistentVolumeClaim.accessModeslist["ReadWriteOnce"]PersistentVolumeClaim access modes
alert.persistentVolumeClaim.enabledboolfalseSet alert.persistentVolumeClaim.enabled to true to mount a new volume for alert
alert.persistentVolumeClaim.storagestring"20Gi"PersistentVolumeClaim size
alert.persistentVolumeClaim.storageClassNamestring"-"Alert logs data persistent volume storage class. If set to “-”, storageClassName: "", which disables dynamic provisioning
alert.readinessProbeobject{"enabled":true,"failureThreshold":"3","initialDelaySeconds":"30","periodSeconds":"30","successThreshold":"1","timeoutSeconds":"5"}Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: container-probes
alert.readinessProbe.enabledbooltrueTurn on and off readiness probe
alert.readinessProbe.failureThresholdstring"3"Minimum consecutive failures for the probe
alert.readinessProbe.initialDelaySecondsstring"30"Delay before readiness probe is initiated
alert.readinessProbe.periodSecondsstring"30"How often to perform the probe
alert.readinessProbe.successThresholdstring"1"Minimum consecutive successes for the probe
alert.readinessProbe.timeoutSecondsstring"5"When the probe times out
alert.replicasint1Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.
alert.resourcesobject{}Compute Resources required by this container. More info: manage-resources-containers
alert.service.annotationsobject{}annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator
alert.service.serviceMonitorobject{"annotations":{},"enabled":false,"interval":"15s","labels":{},"path":"/actuator/prometheus"}serviceMonitor for prometheus operator
alert.service.serviceMonitor.annotationsobject{}serviceMonitor.annotations ServiceMonitor annotations
alert.service.serviceMonitor.enabledboolfalseEnable or disable alert-server serviceMonitor
alert.service.serviceMonitor.intervalstring"15s"serviceMonitor.interval interval at which metrics should be scraped
alert.service.serviceMonitor.labelsobject{}serviceMonitor.labels ServiceMonitor extra labels
alert.service.serviceMonitor.pathstring"/actuator/prometheus"serviceMonitor.path path of the metrics endpoint
alert.strategyobject{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"}The deployment strategy to use to replace existing pods with new ones.
alert.strategy.rollingUpdate.maxSurgestring"25%"The maximum number of pods that can be scheduled above the desired number of pods
alert.strategy.rollingUpdate.maxUnavailablestring"25%"The maximum number of pods that can be unavailable during the update
alert.strategy.typestring"RollingUpdate"Type of deployment. Can be “Recreate” or “RollingUpdate”
alert.tolerationslist[]Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
api.affinityobject{}Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. More info: node-affinity
api.annotationsobject{}You can use annotations to attach arbitrary non-identifying metadata to objects. Clients such as tools and libraries can retrieve this metadata.
api.customizedConfigobject{}configure aligned with https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-api/src/main/resources/application.yaml
api.enableCustomizedConfigboolfalseenable configure custom config
api.enabledbooltrueEnable or disable the API-Server component
api.env.JAVA_OPTSstring"-Xms512m -Xmx512m -Xmn256m"The jvm options for api server
api.livenessProbeobject{"enabled":true,"failureThreshold":"3","initialDelaySeconds":"30","periodSeconds":"30","successThreshold":"1","timeoutSeconds":"5"}Periodic probe of container liveness. Container will be restarted if the probe fails. More info: container-probes
api.livenessProbe.enabledbooltrueTurn on and off liveness probe
api.livenessProbe.failureThresholdstring"3"Minimum consecutive failures for the probe
api.livenessProbe.initialDelaySecondsstring"30"Delay before liveness probe is initiated
api.livenessProbe.periodSecondsstring"30"How often to perform the probe
api.livenessProbe.successThresholdstring"1"Minimum consecutive successes for the probe
api.livenessProbe.timeoutSecondsstring"5"When the probe times out
api.nodeSelectorobject{}NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: assign-pod-node
api.persistentVolumeClaimobject{"accessModes":["ReadWriteOnce"],"enabled":false,"storage":"20Gi","storageClassName":"-"}PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. More info: persistentvolumeclaims
api.persistentVolumeClaim.accessModeslist["ReadWriteOnce"]PersistentVolumeClaim access modes
api.persistentVolumeClaim.enabledboolfalseSet api.persistentVolumeClaim.enabled to true to mount a new volume for api
api.persistentVolumeClaim.storagestring"20Gi"PersistentVolumeClaim size
api.persistentVolumeClaim.storageClassNamestring"-"api logs data persistent volume storage class. If set to “-”, storageClassName: "", which disables dynamic provisioning
api.readinessProbeobject{"enabled":true,"failureThreshold":"3","initialDelaySeconds":"30","periodSeconds":"30","successThreshold":"1","timeoutSeconds":"5"}Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: container-probes
api.readinessProbe.enabledbooltrueTurn on and off readiness probe
api.readinessProbe.failureThresholdstring"3"Minimum consecutive failures for the probe
api.readinessProbe.initialDelaySecondsstring"30"Delay before readiness probe is initiated
api.readinessProbe.periodSecondsstring"30"How often to perform the probe
api.readinessProbe.successThresholdstring"1"Minimum consecutive successes for the probe
api.readinessProbe.timeoutSecondsstring"5"When the probe times out
api.replicasstring"1"Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.
api.resourcesobject{}Compute Resources required by this container. More info: manage-resources-containers
api.service.annotationsobject{}annotations may need to be set when service.type is LoadBalancer service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:EXAMPLE_CERT
api.service.clusterIPstring""clusterIP is the IP address of the service and is usually assigned randomly by the master
api.service.externalIPslist[]externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service
api.service.externalNamestring""externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service, requires Type to be ExternalName
api.service.loadBalancerIPstring""loadBalancerIP when service.type is LoadBalancer. LoadBalancer will get created with the IP specified in this field
api.service.nodePortstring""nodePort is the port on each node on which this api service is exposed when type=NodePort
api.service.pythonNodePortstring""pythonNodePort is the port on each node on which this python api service is exposed when type=NodePort
api.service.serviceMonitorobject{"annotations":{},"enabled":false,"interval":"15s","labels":{},"path":"/dolphinscheduler/actuator/prometheus"}serviceMonitor for prometheus operator
api.service.serviceMonitor.annotationsobject{}serviceMonitor.annotations ServiceMonitor annotations
api.service.serviceMonitor.enabledboolfalseEnable or disable api-server serviceMonitor
api.service.serviceMonitor.intervalstring"15s"serviceMonitor.interval interval at which metrics should be scraped
api.service.serviceMonitor.labelsobject{}serviceMonitor.labels ServiceMonitor extra labels
api.service.serviceMonitor.pathstring"/dolphinscheduler/actuator/prometheus"serviceMonitor.path path of the metrics endpoint
api.service.typestring"ClusterIP"type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer
api.strategyobject{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"}The deployment strategy to use to replace existing pods with new ones.
api.strategy.rollingUpdate.maxSurgestring"25%"The maximum number of pods that can be scheduled above the desired number of pods
api.strategy.rollingUpdate.maxUnavailablestring"25%"The maximum number of pods that can be unavailable during the update
api.strategy.typestring"RollingUpdate"Type of deployment. Can be “Recreate” or “RollingUpdate”
api.taskTypeFilter.enabledboolfalseEnable or disable the task type filter. If set to true, the API-Server will return tasks of a specific type set in api.taskTypeFilter.task Note: This feature only filters tasks to return a specific type on the WebUI. However, you can still create any task that DolphinScheduler supports via the API.
api.taskTypeFilter.taskobject{}ref: task-type-config.yaml
api.tolerationslist[]Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
common.configmap.DATAX_LAUNCHERstring"/opt/soft/datax/bin/datax.py"Set DATAX_LAUNCHER for DolphinScheduler's task environment
common.configmap.DATA_BASEDIR_PATHstring"/tmp/dolphinscheduler"User data directory path, self configuration, please make sure the directory exists and have read write permissions
common.configmap.DOLPHINSCHEDULER_OPTSstring""The jvm options for dolphinscheduler, suitable for all servers
common.configmap.FLINK_HOMEstring"/opt/soft/flink"Set FLINK_HOME for DolphinScheduler's task environment
common.configmap.HADOOP_CONF_DIRstring"/opt/soft/hadoop/etc/hadoop"Set HADOOP_CONF_DIR for DolphinScheduler's task environment
common.configmap.HADOOP_HOMEstring"/opt/soft/hadoop"Set HADOOP_HOME for DolphinScheduler's task environment
common.configmap.HIVE_HOMEstring"/opt/soft/hive"Set HIVE_HOME for DolphinScheduler's task environment
common.configmap.JAVA_HOMEstring"/opt/java/openjdk"Set JAVA_HOME for DolphinScheduler's task environment
common.configmap.PYTHON_LAUNCHERstring"/usr/bin/python/bin/python3"Set PYTHON_LAUNCHER for DolphinScheduler's task environment
common.configmap.RESOURCE_UPLOAD_PATHstring"/dolphinscheduler"Resource store on HDFS/S3 path, please make sure the directory exists on hdfs and have read write permissions
common.configmap.SPARK_HOMEstring"/opt/soft/spark"Set SPARK_HOME for DolphinScheduler's task environment
common.fsFileResourcePersistence.accessModeslist["ReadWriteMany"]PersistentVolumeClaim access modes, must be ReadWriteMany
common.fsFileResourcePersistence.enabledboolfalseSet common.fsFileResourcePersistence.enabled to true to mount a new file resource volume for api and worker
common.fsFileResourcePersistence.storagestring"20Gi"PersistentVolumeClaim size
common.fsFileResourcePersistence.storageClassNamestring"-"Resource persistent volume storage class, must support the access mode: ReadWriteMany
common.sharedStoragePersistence.accessModeslist["ReadWriteMany"]PersistentVolumeClaim access modes, must be ReadWriteMany
common.sharedStoragePersistence.enabledboolfalseSet common.sharedStoragePersistence.enabled to true to mount a shared storage volume for Hadoop, Spark binary and etc
common.sharedStoragePersistence.mountPathstring"/opt/soft"The mount path for the shared storage volume
common.sharedStoragePersistence.storagestring"20Gi"PersistentVolumeClaim size
common.sharedStoragePersistence.storageClassNamestring"-"Shared Storage persistent volume storage class, must support the access mode: ReadWriteMany
conf.autoboolfalseauto restart, if true, all components will be restarted automatically after the common configuration is updated. if false, you need to restart the components manually. default is false
conf.common.“alert.rpc.port”int50052rpc port
conf.common.“appId.collect”string"log"way to collect applicationId: log, aop
conf.common.“aws.credentials.provider.type”string"AWSStaticCredentialsProvider"
conf.common.“aws.s3.access.key.id”string"minioadmin"The AWS access key. if resource.storage.type=S3, and credentials.provider.type is AWSStaticCredentialsProvider. This configuration is required
conf.common.“aws.s3.access.key.secret”string"minioadmin"The AWS secret access key. if resource.storage.type=S3, and credentials.provider.type is AWSStaticCredentialsProvider. This configuration is required
conf.common.“aws.s3.bucket.name”string"dolphinscheduler"The name of the bucket. You need to create them by yourself. Otherwise, the system cannot start. All buckets in Amazon S3 share a single namespace; ensure the bucket is given a unique name.
conf.common.“aws.s3.endpoint”string"http://minio:9000"You need to set this parameter when private cloud s3. If S3 uses public cloud, you only need to set resource.aws.region or set to the endpoint of a public cloud such as S3.cn-north-1.amazonaws.com.cn
conf.common.“aws.s3.region”string"ca-central-1"The AWS Region to use. if resource.storage.type=S3, This configuration is required
conf.common.“conda.path”string"/opt/anaconda3/etc/profile.d/conda.sh"set path of conda.sh
conf.common.“data.basedir.path”string"/tmp/dolphinscheduler"user data local directory path, please make sure the directory exists and have read write permissions
conf.common.“datasource.encryption.enable”boolfalsedatasource encryption enable
conf.common.“datasource.encryption.salt”string"!@#$%^&*"datasource encryption salt
conf.common.“development.state”boolfalsedevelopment state
conf.common.“hadoop.security.authentication.startup.state”boolfalsewhether to startup kerberos
conf.common.“java.security.krb5.conf.path”string"/opt/krb5.conf"java.security.krb5.conf path
conf.common.“kerberos.expire.time”int2kerberos expire time, the unit is hour
conf.common.“login.user.keytab.path”string"/opt/hdfs.headless.keytab"login user from keytab path
conf.common.“login.user.keytab.username”string"hdfs-mycluster@ESZ.COM"login user from keytab username
conf.common.“ml.mlflow.preset_repository”string"https://github.com/apache/dolphinscheduler-mlflow"mlflow task plugin preset repository
conf.common.“ml.mlflow.preset_repository_version”string"main"mlflow task plugin preset repository version
conf.common.“resource.alibaba.cloud.access.key.id”string"<your-access-key-id>"alibaba cloud access key id, required if you set resource.storage.type=OSS
conf.common.“resource.alibaba.cloud.access.key.secret”string"<your-access-key-secret>"alibaba cloud access key secret, required if you set resource.storage.type=OSS
conf.common.“resource.alibaba.cloud.oss.bucket.name”string"dolphinscheduler"oss bucket name, required if you set resource.storage.type=OSS
conf.common.“resource.alibaba.cloud.oss.endpoint”string"https://oss-cn-hangzhou.aliyuncs.com"oss bucket endpoint, required if you set resource.storage.type=OSS
conf.common.“resource.alibaba.cloud.region”string"cn-hangzhou"alibaba cloud region, required if you set resource.storage.type=OSS
conf.common.“resource.azure.client.id”string"minioadmin"azure storage account name, required if you set resource.storage.type=ABS
conf.common.“resource.azure.client.secret”string"minioadmin"azure storage account key, required if you set resource.storage.type=ABS
conf.common.“resource.azure.subId”string"minioadmin"azure storage subId, required if you set resource.storage.type=ABS
conf.common.“resource.azure.tenant.id”string"minioadmin"azure storage tenantId, required if you set resource.storage.type=ABS
conf.common.“resource.hdfs.fs.defaultFS”string"hdfs://mycluster:8020"if resource.storage.type=S3, the value like: s3a://dolphinscheduler; if resource.storage.type=HDFS and namenode HA is enabled, you need to copy core-site.xml and hdfs-site.xml to conf dir
conf.common.“resource.hdfs.root.user”string"hdfs"if resource.storage.type=HDFS, the user must have the permission to create directories under the HDFS root path
conf.common.“resource.manager.httpaddress.port”int8088resourcemanager port, the default value is 8088 if not specified
conf.common.“resource.storage.type”string"S3"resource storage type: HDFS, S3, OSS, GCS, ABS, NONE
conf.common.“resource.storage.upload.base.path”string"/dolphinscheduler"resource store on HDFS/S3 path, resource file will store to this base path, self configuration, please make sure the directory exists on hdfs and have read write permissions. “/dolphinscheduler” is recommended
conf.common.“sudo.enable”booltrueuse sudo or not, if set true, executing user is tenant user and deploy user needs sudo permissions; if set false, executing user is the deploy user and doesn't need sudo permissions
conf.common.“support.hive.oneSession”boolfalseWhether hive SQL is executed in the same session
conf.common.“task.resource.limit.state”boolfalseTask resource limit state
conf.common.“yarn.application.status.address”string"http://ds1:%s/ws/v1/cluster/apps/%s"if resourcemanager HA is enabled or not use resourcemanager, please keep the default value; If resourcemanager is single, you only need to replace ds1 to actual resourcemanager hostname
conf.common.“yarn.job.history.status.address”string"http://ds1:19888/ws/v1/history/mapreduce/jobs/%s"job history status url when application number threshold is reached(default 10000, maybe it was set to 1000)
conf.common.“yarn.resourcemanager.ha.rm.ids”string"192.168.xx.xx,192.168.xx.xx"if resourcemanager HA is enabled, please set the HA IPs; if resourcemanager is single, keep this value empty
datasource.profilestring"postgresql"The profile of datasource
externalDatabase.databasestring"dolphinscheduler"The database of external database
externalDatabase.driverClassNamestring"org.postgresql.Driver"The driverClassName of external database
externalDatabase.enabledboolfalseIf exists external database, and set postgresql.enable value to false. external database will be used, otherwise Dolphinscheduler's internal database will be used.
externalDatabase.hoststring"localhost"The host of external database
externalDatabase.paramsstring"characterEncoding=utf8"The params of external database
externalDatabase.passwordstring"root"The password of external database
externalDatabase.portstring"5432"The port of external database
externalDatabase.typestring"postgresql"The type of external database, supported types: postgresql, mysql
externalDatabase.usernamestring"root"The username of external database
externalRegistry.registryPluginNamestring"zookeeper"If exists external registry and set zookeeper.enable && registryEtcd.enabled && registryJdbc.enabled to false, specify the external registry plugin name
externalRegistry.registryServersstring"127.0.0.1:2181"If exists external registry and set zookeeper.enable && registryEtcd.enabled && registryJdbc.enabled to false, specify the external registry servers
image.alertstring"dolphinscheduler-alert-server"alert-server image
image.apistring"dolphinscheduler-api"api-server image
image.masterstring"dolphinscheduler-master"master image
image.pullPolicystring"IfNotPresent"Image pull policy. Options: Always, Never, IfNotPresent
image.pullSecretstring""Specify a imagePullSecrets
image.registrystring"apache"Docker image repository for the DolphinScheduler
image.tagstring"latest"Docker image version for the DolphinScheduler
image.toolsstring"dolphinscheduler-tools"tools image
image.workerstring"dolphinscheduler-worker"worker image
ingress.annotationsobject{}Ingress annotations
ingress.enabledboolfalseEnable ingress
ingress.hoststring"dolphinscheduler.org"Ingress host
ingress.pathstring"/dolphinscheduler"Ingress path
ingress.tls.enabledboolfalseEnable ingress tls
ingress.tls.secretNamestring"dolphinscheduler-tls"Ingress tls secret name
initImageobject{"busybox":"busybox:1.30.1","pullPolicy":"IfNotPresent"}Used to detect whether dolphinscheduler dependent services such as database are ready
initImage.busyboxstring"busybox:1.30.1"Specify initImage repository
initImage.pullPolicystring"IfNotPresent"Image pull policy. Options: Always, Never, IfNotPresent
master.affinityobject{}Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. More info: node-affinity
master.annotationsobject{}You can use annotations to attach arbitrary non-identifying metadata to objects. Clients such as tools and libraries can retrieve this metadata.
master.customizedConfigobject{}configure aligned with https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-master/src/main/resources/application.yaml
master.enableCustomizedConfigboolfalseenable configure custom config
master.enabledbooltrueEnable or disable the Master component
master.env.JAVA_OPTSstring"-Xms1g -Xmx1g -Xmn512m"The jvm options for master server
master.env.MASTER_DISPATCH_TASK_NUMstring"3"Master dispatch task number per batch
master.env.MASTER_EXEC_TASK_NUMstring"20"Master execute task number in parallel per process instance
master.env.MASTER_EXEC_THREADSstring"100"Master execute thread number to limit process instances
master.env.MASTER_FAILOVER_INTERVALstring"10m"Master failover interval, the unit is minute
master.env.MASTER_HEARTBEAT_ERROR_THRESHOLDstring"5"Master heartbeat error threshold
master.env.MASTER_HOST_SELECTORstring"LowerWeight"Master host selector to select a suitable worker, optional values include Random, RoundRobin, LowerWeight
master.env.MASTER_KILL_APPLICATION_WHEN_HANDLE_FAILOVERstring"true"Master kill application when handle failover
master.env.MASTER_MAX_HEARTBEAT_INTERVALstring"10s"Master max heartbeat interval
master.env.MASTER_SERVER_LOAD_PROTECTION_ENABLEDboolfalseIf set true, will open master overload protection
master.env.MASTER_SERVER_LOAD_PROTECTION_MAX_DISK_USAGE_PERCENTAGE_THRESHOLDSfloat0.7Master max disk usage , when the master's disk usage is smaller then this value, master server can execute workflow.
master.env.MASTER_SERVER_LOAD_PROTECTION_MAX_JVM_CPU_USAGE_PERCENTAGE_THRESHOLDSfloat0.7Master max jvm cpu usage, when the master's jvm cpu usage is smaller then this value, master server can execute workflow.
master.env.MASTER_SERVER_LOAD_PROTECTION_MAX_SYSTEM_CPU_USAGE_PERCENTAGE_THRESHOLDSfloat0.7Master max system cpu usage, when the master's system cpu usage is smaller then this value, master server can execute workflow.
master.env.MASTER_SERVER_LOAD_PROTECTION_MAX_SYSTEM_MEMORY_USAGE_PERCENTAGE_THRESHOLDSfloat0.7Master max System memory usage , when the master's system memory usage is smaller then this value, master server can execute workflow.
master.env.MASTER_STATE_WHEEL_INTERVALstring"5s"master state wheel interval, the unit is second
master.env.MASTER_TASK_COMMIT_INTERVALstring"1s"master commit task interval, the unit is second
master.env.MASTER_TASK_COMMIT_RETRYTIMESstring"5"Master commit task retry times
master.livenessProbeobject{"enabled":true,"failureThreshold":"3","initialDelaySeconds":"30","periodSeconds":"30","successThreshold":"1","timeoutSeconds":"5"}Periodic probe of container liveness. Container will be restarted if the probe fails. More info: container-probes
master.livenessProbe.enabledbooltrueTurn on and off liveness probe
master.livenessProbe.failureThresholdstring"3"Minimum consecutive failures for the probe
master.livenessProbe.initialDelaySecondsstring"30"Delay before liveness probe is initiated
master.livenessProbe.periodSecondsstring"30"How often to perform the probe
master.livenessProbe.successThresholdstring"1"Minimum consecutive successes for the probe
master.livenessProbe.timeoutSecondsstring"5"When the probe times out
master.nodeSelectorobject{}NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: assign-pod-node
master.persistentVolumeClaimobject{"accessModes":["ReadWriteOnce"],"enabled":false,"storage":"20Gi","storageClassName":"-"}PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.
master.persistentVolumeClaim.accessModeslist["ReadWriteOnce"]PersistentVolumeClaim access modes
master.persistentVolumeClaim.enabledboolfalseSet master.persistentVolumeClaim.enabled to true to mount a new volume for master
master.persistentVolumeClaim.storagestring"20Gi"PersistentVolumeClaim size
master.persistentVolumeClaim.storageClassNamestring"-"Master logs data persistent volume storage class. If set to “-”, storageClassName: "", which disables dynamic provisioning
master.podManagementPolicystring"Parallel"PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down.
master.readinessProbeobject{"enabled":true,"failureThreshold":"3","initialDelaySeconds":"30","periodSeconds":"30","successThreshold":"1","timeoutSeconds":"5"}Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: container-probes
master.readinessProbe.enabledbooltrueTurn on and off readiness probe
master.readinessProbe.failureThresholdstring"3"Minimum consecutive failures for the probe
master.readinessProbe.initialDelaySecondsstring"30"Delay before readiness probe is initiated
master.readinessProbe.periodSecondsstring"30"How often to perform the probe
master.readinessProbe.successThresholdstring"1"Minimum consecutive successes for the probe
master.readinessProbe.timeoutSecondsstring"5"When the probe times out
master.replicasstring"3"Replicas is the desired number of replicas of the given Template.
master.resourcesobject{}Compute Resources required by this container. More info: manage-resources-containers
master.service.annotationsobject{}annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator
master.service.serviceMonitorobject{"annotations":{},"enabled":false,"interval":"15s","labels":{},"path":"/actuator/prometheus"}serviceMonitor for prometheus operator
master.service.serviceMonitor.annotationsobject{}serviceMonitor.annotations ServiceMonitor annotations
master.service.serviceMonitor.enabledboolfalseEnable or disable master serviceMonitor
master.service.serviceMonitor.intervalstring"15s"serviceMonitor.interval interval at which metrics should be scraped
master.service.serviceMonitor.labelsobject{}serviceMonitor.labels ServiceMonitor extra labels
master.service.serviceMonitor.pathstring"/actuator/prometheus"serviceMonitor.path path of the metrics endpoint
master.tolerationslist[]Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
master.updateStrategyobject{"type":"RollingUpdate"}Update strategy ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
minio.auth.rootPasswordstring"minioadmin"minio password
minio.auth.rootUserstring"minioadmin"minio username
minio.defaultBucketsstring"dolphinscheduler"minio default buckets
minio.enabledbooltrueDeploy minio and configure it as the default storage for DolphinScheduler, note this is for demo only, not for production.
minio.persistence.enabledboolfalseSet minio.persistence.enabled to true to mount a new volume for internal minio
mysql.auth.databasestring"dolphinscheduler"mysql database
mysql.auth.paramsstring"characterEncoding=utf8"mysql params
mysql.auth.passwordstring"ds"mysql password
mysql.auth.usernamestring"ds"mysql username
mysql.driverClassNamestring"com.mysql.cj.jdbc.Driver"mysql driverClassName
mysql.enabledboolfalseIf not exists external MySQL, by default, the DolphinScheduler will use a internal MySQL
mysql.primary.persistence.enabledboolfalseSet mysql.primary.persistence.enabled to true to mount a new volume for internal MySQL
mysql.primary.persistence.sizestring"20Gi"PersistentVolumeClaim size
mysql.primary.persistence.storageClassstring"-"MySQL data persistent volume storage class. If set to “-”, storageClassName: "", which disables dynamic provisioning
postgresql.driverClassNamestring"org.postgresql.Driver"The driverClassName for internal PostgreSQL
postgresql.enabledbooltrueIf not exists external PostgreSQL, by default, the DolphinScheduler will use a internal PostgreSQL
postgresql.paramsstring"characterEncoding=utf8"The params for internal PostgreSQL
postgresql.persistence.enabledboolfalseSet postgresql.persistence.enabled to true to mount a new volume for internal PostgreSQL
postgresql.persistence.sizestring"20Gi"PersistentVolumeClaim size
postgresql.persistence.storageClassstring"-"PostgreSQL data persistent volume storage class. If set to “-”, storageClassName: "", which disables dynamic provisioning
postgresql.postgresqlDatabasestring"dolphinscheduler"The database for internal PostgreSQL
postgresql.postgresqlPasswordstring"root"The password for internal PostgreSQL
postgresql.postgresqlUsernamestring"root"The username for internal PostgreSQL
registryEtcd.authoritystring""Etcd authority
registryEtcd.enabledboolfalseIf you want to use Etcd for your registry center, change this value to true. And set zookeeper.enabled to false
registryEtcd.endpointsstring""Etcd endpoints
registryEtcd.namespacestring"dolphinscheduler"Etcd namespace
registryEtcd.passWordstring""Etcd passWord
registryEtcd.ssl.certFilestring"etcd-certs/ca.crt"CertFile file path
registryEtcd.ssl.enabledboolfalseIf your Etcd server has configured with ssl, change this value to true. About certification files you can see here for how to convert.
registryEtcd.ssl.keyCertChainFilestring"etcd-certs/client.crt"keyCertChainFile file path
registryEtcd.ssl.keyFilestring"etcd-certs/client.pem"keyFile file path
registryEtcd.userstring""Etcd user
registryJdbc.enabledboolfalseIf you want to use JDbc for your registry center, change this value to true. And set zookeeper.enabled and registryEtcd.enabled to false
registryJdbc.hikariConfig.driverClassNamestring"com.mysql.cj.jdbc.Driver"Default use same Dolphinscheduler‘s database if you don’t change this value. If you set this value, Registry jdbc's database type will use it
registryJdbc.hikariConfig.enabledboolfalseDefault use same Dolphinscheduler's database, if you want to use other database please change enabled to true and change other configs
registryJdbc.hikariConfig.jdbcurlstring"jdbc:mysql://"Default use same Dolphinscheduler‘s database if you don’t change this value. If you set this value, Registry jdbc's database type will use it
registryJdbc.hikariConfig.passwordstring""Default use same Dolphinscheduler‘s database if you don’t change this value. If you set this value, Registry jdbc's database type will use it
registryJdbc.hikariConfig.usernamestring""Default use same Dolphinscheduler‘s database if you don’t change this value. If you set this value, Registry jdbc's database type will use it
registryJdbc.termExpireTimesint3Used to calculate the expire time
registryJdbc.termRefreshIntervalstring"2s"Used to schedule refresh the ephemeral data/ lock
security.authentication.ldap.basednstring"dc=example,dc=com"LDAP base dn
security.authentication.ldap.passwordstring"password"LDAP password
security.authentication.ldap.ssl.enableboolfalseLDAP ssl switch
security.authentication.ldap.ssl.jksbase64contentstring""LDAP jks file base64 content. If you use macOS, please run base64 -b 0 -i /path/to/your.jks. If you use Linux, please run base64 -w 0 /path/to/your.jks. If you use Windows, please run certutil -f -encode /path/to/your.jks. Then copy the base64 content to below field in one line
security.authentication.ldap.ssl.truststorestring"/opt/ldapkeystore.jks"LDAP jks file absolute path, do not change this value
security.authentication.ldap.ssl.truststorepasswordstring""LDAP jks password
security.authentication.ldap.urlsstring"ldap://ldap.forumsys.com:389/"LDAP urls
security.authentication.ldap.user.adminstring"read-only-admin"Admin user account when you log-in with LDAP
security.authentication.ldap.user.emailattributestring"mail"LDAP user email attribute
security.authentication.ldap.user.identityattributestring"uid"LDAP user identity attribute
security.authentication.ldap.user.notexistactionstring"CREATE"action when ldap user is not exist,default value: CREATE. Optional values include(CREATE,DENY)
security.authentication.ldap.usernamestring"cn=read-only-admin,dc=example,dc=com"LDAP username
security.authentication.typestring"PASSWORD"Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO)
timezonestring"Asia/Shanghai"World time and date for cities in all time zones
worker.affinityobject{}Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. More info: node-affinity
worker.annotationsobject{}You can use annotations to attach arbitrary non-identifying metadata to objects. Clients such as tools and libraries can retrieve this metadata.
worker.customizedConfigobject{}configure aligned with https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-worker/src/main/resources/application.yaml
worker.enableCustomizedConfigboolfalseenable configure custom config
worker.enabledbooltrueEnable or disable the Worker component
worker.env.WORKER_EXEC_THREADSstring"100"Worker execute thread number to limit task instances
worker.env.WORKER_HOST_WEIGHTstring"100"Worker host weight to dispatch tasks
worker.env.WORKER_MAX_HEARTBEAT_INTERVALstring"10s"Worker heartbeat interval
worker.env.WORKER_SERVER_LOAD_PROTECTION_ENABLEDboolfalseIf set true, will open worker overload protection
worker.env.WORKER_SERVER_LOAD_PROTECTION_MAX_DISK_USAGE_PERCENTAGE_THRESHOLDSfloat0.7Worker max disk usage , when the worker's disk usage is smaller then this value, worker server can be dispatched tasks.
worker.env.WORKER_SERVER_LOAD_PROTECTION_MAX_JVM_CPU_USAGE_PERCENTAGE_THRESHOLDSfloat0.7Worker max jvm cpu usage, when the worker's jvm cpu usage is smaller then this value, worker server can be dispatched tasks.
worker.env.WORKER_SERVER_LOAD_PROTECTION_MAX_SYSTEM_CPU_USAGE_PERCENTAGE_THRESHOLDSfloat0.7Worker max system cpu usage, when the worker's system cpu usage is smaller then this value, worker server can be dispatched tasks.
worker.env.WORKER_SERVER_LOAD_PROTECTION_MAX_SYSTEM_MEMORY_USAGE_PERCENTAGE_THRESHOLDSfloat0.7Worker max memory usage , when the worker's memory usage is smaller then this value, worker server can be dispatched tasks.
worker.env.WORKER_TENANT_CONFIG_AUTO_CREATE_TENANT_ENABLEDbooltruetenant corresponds to the user of the system, which is used by the worker to submit the job. If system does not have this user, it will be automatically created after the parameter worker.tenant.auto.create is true.
worker.env.WORKER_TENANT_CONFIG_DEFAULT_TENANT_ENABLEDboolfalseIf set true, will use worker bootstrap user as the tenant to execute task when the tenant is default;
worker.keda.advancedobject{}Specify HPA related options
worker.keda.cooldownPeriodint30How many seconds KEDA will wait before scaling to zero. Note that HPA has a separate cooldown period for scale-downs
worker.keda.enabledboolfalseEnable or disable the Keda component
worker.keda.maxReplicaCountint3Maximum number of workers created by keda
worker.keda.minReplicaCountint0Minimum number of workers created by keda
worker.keda.namespaceLabelsobject{}Keda namespace labels
worker.keda.pollingIntervalint5How often KEDA polls the DolphinScheduler DB to report new scale requests to the HPA
worker.livenessProbe.enabledbooltrueTurn on and off liveness probe
worker.livenessProbe.failureThresholdstring"3"Minimum consecutive failures for the probe
worker.livenessProbe.initialDelaySecondsstring"30"Delay before liveness probe is initiated
worker.livenessProbe.periodSecondsstring"30"How often to perform the probe
worker.livenessProbe.successThresholdstring"1"Minimum consecutive successes for the probe
worker.livenessProbe.timeoutSecondsstring"5"When the probe times out
worker.nodeSelectorobject{}NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: assign-pod-node
worker.persistentVolumeClaimobject{"dataPersistentVolume":{"accessModes":["ReadWriteOnce"],"enabled":false,"storage":"20Gi","storageClassName":"-"},"enabled":false,"logsPersistentVolume":{"accessModes":["ReadWriteOnce"],"enabled":false,"storage":"20Gi","storageClassName":"-"}}PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.
worker.persistentVolumeClaim.dataPersistentVolume.accessModeslist["ReadWriteOnce"]PersistentVolumeClaim access modes
worker.persistentVolumeClaim.dataPersistentVolume.enabledboolfalseSet worker.persistentVolumeClaim.dataPersistentVolume.enabled to true to mount a data volume for worker
worker.persistentVolumeClaim.dataPersistentVolume.storagestring"20Gi"PersistentVolumeClaim size
worker.persistentVolumeClaim.dataPersistentVolume.storageClassNamestring"-"Worker data persistent volume storage class. If set to “-”, storageClassName: "", which disables dynamic provisioning
worker.persistentVolumeClaim.enabledboolfalseSet worker.persistentVolumeClaim.enabled to true to enable persistentVolumeClaim for worker
worker.persistentVolumeClaim.logsPersistentVolume.accessModeslist["ReadWriteOnce"]PersistentVolumeClaim access modes
worker.persistentVolumeClaim.logsPersistentVolume.enabledboolfalseSet worker.persistentVolumeClaim.logsPersistentVolume.enabled to true to mount a logs volume for worker
worker.persistentVolumeClaim.logsPersistentVolume.storagestring"20Gi"PersistentVolumeClaim size
worker.persistentVolumeClaim.logsPersistentVolume.storageClassNamestring"-"Worker logs data persistent volume storage class. If set to “-”, storageClassName: "", which disables dynamic provisioning
worker.podManagementPolicystring"Parallel"PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down.
worker.readinessProbeobject{"enabled":true,"failureThreshold":"3","initialDelaySeconds":"30","periodSeconds":"30","successThreshold":"1","timeoutSeconds":"5"}Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: container-probes
worker.readinessProbe.enabledbooltrueTurn on and off readiness probe
worker.readinessProbe.failureThresholdstring"3"Minimum consecutive failures for the probe
worker.readinessProbe.initialDelaySecondsstring"30"Delay before readiness probe is initiated
worker.readinessProbe.periodSecondsstring"30"How often to perform the probe
worker.readinessProbe.successThresholdstring"1"Minimum consecutive successes for the probe
worker.readinessProbe.timeoutSecondsstring"5"When the probe times out
worker.replicasstring"3"Replicas is the desired number of replicas of the given Template.
worker.resourcesobject{}Compute Resources required by this container. More info: manage-resources-containers
worker.service.annotationsobject{}annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator
worker.service.serviceMonitorobject{"annotations":{},"enabled":false,"interval":"15s","labels":{},"path":"/actuator/prometheus"}serviceMonitor for prometheus operator
worker.service.serviceMonitor.annotationsobject{}serviceMonitor.annotations ServiceMonitor annotations
worker.service.serviceMonitor.enabledboolfalseEnable or disable worker serviceMonitor
worker.service.serviceMonitor.intervalstring"15s"serviceMonitor.interval interval at which metrics should be scraped
worker.service.serviceMonitor.labelsobject{}serviceMonitor.labels ServiceMonitor extra labels
worker.service.serviceMonitor.pathstring"/actuator/prometheus"serviceMonitor.path path of the metrics endpoint
worker.tolerationslist[]Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
worker.updateStrategyobject{"type":"RollingUpdate"}Update strategy ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
zookeeper.enabledbooltrueIf not exists external registry, the zookeeper registry will be used by default.
zookeeper.fourlwCommandsWhiteliststring"srvr,ruok,wchs,cons"A list of comma separated Four Letter Words commands to use
zookeeper.persistence.enabledboolfalseSet zookeeper.persistence.enabled to true to mount a new volume for internal ZooKeeper
zookeeper.persistence.sizestring"20Gi"PersistentVolumeClaim size
zookeeper.persistence.storageClassstring"-"ZooKeeper data persistent volume storage class. If set to “-”, storageClassName: "", which disables dynamic provisioning
zookeeper.service.portint2181The port of zookeeper