From 1c1d4bd59297942499a8242066de1c8ae0143a58 Mon Sep 17 00:00:00 2001 From: Gallardot Date: Fri, 29 Dec 2023 11:24:37 +0800 Subject: [PATCH] [Improvement][Helm] using helm-docs to generate docs automatically (#15299) --- .github/workflows/docs.yml | 35 ++ .licenserc.yaml | 1 + .../kubernetes/dolphinscheduler/.helmignore | 37 ++ deploy/kubernetes/dolphinscheduler/README.md | 350 +++++++++++ .../dolphinscheduler/README.md.gotmpl | 11 + .../kubernetes/dolphinscheduler/values.yaml | 578 ++++++++++++------ docs/docs/en/guide/installation/kubernetes.md | 257 +------- docs/docs/zh/guide/installation/kubernetes.md | 257 +------- pom.xml | 32 + 9 files changed, 860 insertions(+), 698 deletions(-) create mode 100644 deploy/kubernetes/dolphinscheduler/.helmignore create mode 100644 deploy/kubernetes/dolphinscheduler/README.md create mode 100644 deploy/kubernetes/dolphinscheduler/README.md.gotmpl diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a4195927e9..09fba9c6ce 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -62,6 +62,41 @@ jobs: for file in $(find . -name "*.md" -not \( -path ./deploy/terraform/aws/README.md -prune \)); do markdown-link-check -c .dlc.json -q "$file" done + paths-filter: + name: Helm-Doc-Path-Filter + runs-on: ubuntu-latest + outputs: + helm-doc: ${{ steps.filter.outputs.helm-doc }} + steps: + - uses: actions/checkout@v2 + - uses: dorny/paths-filter@b2feaf19c27470162a626bd6fa8438ae5b263721 + id: filter + with: + filters: | + helm-doc: + - 'deploy/**' + helm-doc: + name: Helm-Doc-Execute + needs: paths-filter + if: ${{ (needs.paths-filter.outputs.helm-doc == 'true') || (github.event_name == 'push') }} + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Generating helm-doc + run: | + ./mvnw validate -P helm-doc -pl :dolphinscheduler + - name: Check helm-doc + run: | + DIFF=$(git diff ${GITHUB_WORKSPACE}/deploy/kubernetes/*md) + if [ ! -z "$DIFF" ]; then + echo "###### ERROR: helm-doc is not up to date ######" + echo "Please execute './mvnw validate -P helm-doc -pl :dolphinscheduler' in your clone, of your fork, of the project, and commit an updated deploy/kubernetes/README.md for the chart." + echo "###### ERROR: helm-doc is not up to date ######" + fi + git diff --exit-code result: name: Docs runs-on: ubuntu-latest diff --git a/.licenserc.yaml b/.licenserc.yaml index b17d6babea..821be80ea6 100644 --- a/.licenserc.yaml +++ b/.licenserc.yaml @@ -50,5 +50,6 @@ header: - tools/dependencies/known-dependencies.txt - '**/banner.txt' - '.terraform.lock.hcl' + - deploy/kubernetes/dolphinscheduler/README.md.gotmpl comment: on-failure diff --git a/deploy/kubernetes/dolphinscheduler/.helmignore b/deploy/kubernetes/dolphinscheduler/.helmignore new file mode 100644 index 0000000000..bd2d4649d2 --- /dev/null +++ b/deploy/kubernetes/dolphinscheduler/.helmignore @@ -0,0 +1,37 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/kubernetes/dolphinscheduler/README.md b/deploy/kubernetes/dolphinscheduler/README.md new file mode 100644 index 0000000000..b2e9974447 --- /dev/null +++ b/deploy/kubernetes/dolphinscheduler/README.md @@ -0,0 +1,350 @@ +## 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](https://helm.sh). + +## QuickStart in Kubernetes + +Please refer to the [Quick Start in Kubernetes](../../../docs/docs/en/guide/installation/kubernetes.md) + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| alert.affinity | object | `{}` | Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. More info: [node-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) | +| alert.annotations | object | `{}` | You can use annotations to attach arbitrary non-identifying metadata to objects. Clients such as tools and libraries can retrieve this metadata. | +| alert.enabled | bool | `true` | Enable or disable the Alert-Server component | +| alert.env.JAVA_OPTS | string | `"-Xms512m -Xmx512m -Xmn256m"` | The jvm options for alert server | +| alert.livenessProbe | object | `{"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](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) | +| alert.livenessProbe.enabled | bool | `true` | Turn on and off liveness probe | +| alert.livenessProbe.failureThreshold | string | `"3"` | Minimum consecutive failures for the probe | +| alert.livenessProbe.initialDelaySeconds | string | `"30"` | Delay before liveness probe is initiated | +| alert.livenessProbe.periodSeconds | string | `"30"` | How often to perform the probe | +| alert.livenessProbe.successThreshold | string | `"1"` | Minimum consecutive successes for the probe | +| alert.livenessProbe.timeoutSeconds | string | `"5"` | When the probe times out | +| alert.nodeSelector | object | `{}` | 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](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) | +| alert.persistentVolumeClaim | object | `{"accessModes":["ReadWriteOnce"],"enabled":false,"storage":"20Gi","storageClassName":"-"}` | PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. More info: [persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) | +| alert.persistentVolumeClaim.accessModes | list | `["ReadWriteOnce"]` | `PersistentVolumeClaim` access modes | +| alert.persistentVolumeClaim.enabled | bool | `false` | Set `alert.persistentVolumeClaim.enabled` to `true` to mount a new volume for `alert` | +| alert.persistentVolumeClaim.storage | string | `"20Gi"` | `PersistentVolumeClaim` size | +| alert.persistentVolumeClaim.storageClassName | string | `"-"` | `Alert` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | +| alert.readinessProbe | object | `{"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](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) | +| alert.readinessProbe.enabled | bool | `true` | Turn on and off readiness probe | +| alert.readinessProbe.failureThreshold | string | `"3"` | Minimum consecutive failures for the probe | +| alert.readinessProbe.initialDelaySeconds | string | `"30"` | Delay before readiness probe is initiated | +| alert.readinessProbe.periodSeconds | string | `"30"` | How often to perform the probe | +| alert.readinessProbe.successThreshold | string | `"1"` | Minimum consecutive successes for the probe | +| alert.readinessProbe.timeoutSeconds | string | `"5"` | When the probe times out | +| alert.replicas | int | `1` | Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. | +| alert.resources | object | `{}` | Compute Resources required by this container. More info: [manage-resources-containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) | +| alert.service.annotations | object | `{}` | annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator | +| alert.service.serviceMonitor | object | `{"annotations":{},"enabled":false,"interval":"15s","labels":{},"path":"/actuator/prometheus"}` | serviceMonitor for prometheus operator | +| alert.service.serviceMonitor.annotations | object | `{}` | serviceMonitor.annotations ServiceMonitor annotations | +| alert.service.serviceMonitor.enabled | bool | `false` | Enable or disable alert-server serviceMonitor | +| alert.service.serviceMonitor.interval | string | `"15s"` | serviceMonitor.interval interval at which metrics should be scraped | +| alert.service.serviceMonitor.labels | object | `{}` | serviceMonitor.labels ServiceMonitor extra labels | +| alert.service.serviceMonitor.path | string | `"/actuator/prometheus"` | serviceMonitor.path path of the metrics endpoint | +| alert.strategy | object | `{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"}` | The deployment strategy to use to replace existing pods with new ones. | +| alert.strategy.rollingUpdate.maxSurge | string | `"25%"` | The maximum number of pods that can be scheduled above the desired number of pods | +| alert.strategy.rollingUpdate.maxUnavailable | string | `"25%"` | The maximum number of pods that can be unavailable during the update | +| alert.strategy.type | string | `"RollingUpdate"` | Type of deployment. Can be "Recreate" or "RollingUpdate" | +| alert.tolerations | list | `[]` | 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.affinity | object | `{}` | Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. More info: [node-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) | +| api.annotations | object | `{}` | You can use annotations to attach arbitrary non-identifying metadata to objects. Clients such as tools and libraries can retrieve this metadata. | +| api.enabled | bool | `true` | Enable or disable the API-Server component | +| api.env.JAVA_OPTS | string | `"-Xms512m -Xmx512m -Xmn256m"` | The jvm options for api server | +| api.livenessProbe | object | `{"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](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) | +| api.livenessProbe.enabled | bool | `true` | Turn on and off liveness probe | +| api.livenessProbe.failureThreshold | string | `"3"` | Minimum consecutive failures for the probe | +| api.livenessProbe.initialDelaySeconds | string | `"30"` | Delay before liveness probe is initiated | +| api.livenessProbe.periodSeconds | string | `"30"` | How often to perform the probe | +| api.livenessProbe.successThreshold | string | `"1"` | Minimum consecutive successes for the probe | +| api.livenessProbe.timeoutSeconds | string | `"5"` | When the probe times out | +| api.nodeSelector | object | `{}` | 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](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) | +| api.persistentVolumeClaim | object | `{"accessModes":["ReadWriteOnce"],"enabled":false,"storage":"20Gi","storageClassName":"-"}` | PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. More info: [persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) | +| api.persistentVolumeClaim.accessModes | list | `["ReadWriteOnce"]` | `PersistentVolumeClaim` access modes | +| api.persistentVolumeClaim.enabled | bool | `false` | Set `api.persistentVolumeClaim.enabled` to `true` to mount a new volume for `api` | +| api.persistentVolumeClaim.storage | string | `"20Gi"` | `PersistentVolumeClaim` size | +| api.persistentVolumeClaim.storageClassName | string | `"-"` | `api` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | +| api.readinessProbe | object | `{"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](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) | +| api.readinessProbe.enabled | bool | `true` | Turn on and off readiness probe | +| api.readinessProbe.failureThreshold | string | `"3"` | Minimum consecutive failures for the probe | +| api.readinessProbe.initialDelaySeconds | string | `"30"` | Delay before readiness probe is initiated | +| api.readinessProbe.periodSeconds | string | `"30"` | How often to perform the probe | +| api.readinessProbe.successThreshold | string | `"1"` | Minimum consecutive successes for the probe | +| api.readinessProbe.timeoutSeconds | string | `"5"` | When the probe times out | +| api.replicas | string | `"1"` | Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. | +| api.resources | object | `{}` | Compute Resources required by this container. More info: [manage-resources-containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) | +| api.service.annotations | object | `{}` | 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.clusterIP | string | `""` | clusterIP is the IP address of the service and is usually assigned randomly by the master | +| api.service.externalIPs | list | `[]` | externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service | +| api.service.externalName | string | `""` | 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.loadBalancerIP | string | `""` | loadBalancerIP when service.type is LoadBalancer. LoadBalancer will get created with the IP specified in this field | +| api.service.nodePort | string | `""` | nodePort is the port on each node on which this api service is exposed when type=NodePort | +| api.service.pythonNodePort | string | `""` | pythonNodePort is the port on each node on which this python api service is exposed when type=NodePort | +| api.service.serviceMonitor | object | `{"annotations":{},"enabled":false,"interval":"15s","labels":{},"path":"/dolphinscheduler/actuator/prometheus"}` | serviceMonitor for prometheus operator | +| api.service.serviceMonitor.annotations | object | `{}` | serviceMonitor.annotations ServiceMonitor annotations | +| api.service.serviceMonitor.enabled | bool | `false` | Enable or disable api-server serviceMonitor | +| api.service.serviceMonitor.interval | string | `"15s"` | serviceMonitor.interval interval at which metrics should be scraped | +| api.service.serviceMonitor.labels | object | `{}` | serviceMonitor.labels ServiceMonitor extra labels | +| api.service.serviceMonitor.path | string | `"/dolphinscheduler/actuator/prometheus"` | serviceMonitor.path path of the metrics endpoint | +| api.service.type | string | `"ClusterIP"` | type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer | +| api.strategy | object | `{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"}` | The deployment strategy to use to replace existing pods with new ones. | +| api.strategy.rollingUpdate.maxSurge | string | `"25%"` | The maximum number of pods that can be scheduled above the desired number of pods | +| api.strategy.rollingUpdate.maxUnavailable | string | `"25%"` | The maximum number of pods that can be unavailable during the update | +| api.strategy.type | string | `"RollingUpdate"` | Type of deployment. Can be "Recreate" or "RollingUpdate" | +| api.taskTypeFilter.enabled | bool | `false` | Enable 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.task | object | `{}` | ref: [task-type-config.yaml](https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-api/src/main/resources/task-type-config.yaml) | +| api.tolerations | list | `[]` | 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_LAUNCHER | string | `"/opt/soft/datax/bin/datax.py"` | Set `DATAX_LAUNCHER` for DolphinScheduler's task environment | +| common.configmap.DATA_BASEDIR_PATH | string | `"/tmp/dolphinscheduler"` | User data directory path, self configuration, please make sure the directory exists and have read write permissions | +| common.configmap.DOLPHINSCHEDULER_OPTS | string | `""` | The jvm options for dolphinscheduler, suitable for all servers | +| common.configmap.FLINK_HOME | string | `"/opt/soft/flink"` | Set `FLINK_HOME` for DolphinScheduler's task environment | +| common.configmap.HADOOP_CONF_DIR | string | `"/opt/soft/hadoop/etc/hadoop"` | Set `HADOOP_CONF_DIR` for DolphinScheduler's task environment | +| common.configmap.HADOOP_HOME | string | `"/opt/soft/hadoop"` | Set `HADOOP_HOME` for DolphinScheduler's task environment | +| common.configmap.HIVE_HOME | string | `"/opt/soft/hive"` | Set `HIVE_HOME` for DolphinScheduler's task environment | +| common.configmap.JAVA_HOME | string | `"/opt/java/openjdk"` | Set `JAVA_HOME` for DolphinScheduler's task environment | +| common.configmap.PYTHON_LAUNCHER | string | `"/usr/bin/python/bin/python3"` | Set `PYTHON_LAUNCHER` for DolphinScheduler's task environment | +| common.configmap.RESOURCE_UPLOAD_PATH | string | `"/dolphinscheduler"` | Resource store on HDFS/S3 path, please make sure the directory exists on hdfs and have read write permissions | +| common.configmap.SPARK_HOME | string | `"/opt/soft/spark"` | Set `SPARK_HOME` for DolphinScheduler's task environment | +| common.fsFileResourcePersistence.accessModes | list | `["ReadWriteMany"]` | `PersistentVolumeClaim` access modes, must be `ReadWriteMany` | +| common.fsFileResourcePersistence.enabled | bool | `false` | Set `common.fsFileResourcePersistence.enabled` to `true` to mount a new file resource volume for `api` and `worker` | +| common.fsFileResourcePersistence.storage | string | `"20Gi"` | `PersistentVolumeClaim` size | +| common.fsFileResourcePersistence.storageClassName | string | `"-"` | Resource persistent volume storage class, must support the access mode: `ReadWriteMany` | +| common.sharedStoragePersistence.accessModes | list | `["ReadWriteMany"]` | `PersistentVolumeClaim` access modes, must be `ReadWriteMany` | +| common.sharedStoragePersistence.enabled | bool | `false` | Set `common.sharedStoragePersistence.enabled` to `true` to mount a shared storage volume for Hadoop, Spark binary and etc | +| common.sharedStoragePersistence.mountPath | string | `"/opt/soft"` | The mount path for the shared storage volume | +| common.sharedStoragePersistence.storage | string | `"20Gi"` | `PersistentVolumeClaim` size | +| common.sharedStoragePersistence.storageClassName | string | `"-"` | Shared Storage persistent volume storage class, must support the access mode: ReadWriteMany | +| conf.auto | bool | `false` | auto 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" | int | `50052` | rpc port | +| conf.common."appId.collect" | string | `"log"` | way to collect applicationId: log, aop | +| conf.common."conda.path" | string | `"/opt/anaconda3/etc/profile.d/conda.sh"` | set path of conda.sh | +| conf.common."data-quality.jar.name" | string | `"dolphinscheduler-data-quality-dev-SNAPSHOT.jar"` | data quality option | +| 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" | bool | `false` | datasource encryption enable | +| conf.common."datasource.encryption.salt" | string | `"!@#$%^&*"` | datasource encryption salt | +| conf.common."development.state" | bool | `false` | development state | +| conf.common."hadoop.security.authentication.startup.state" | bool | `false` | whether to startup kerberos | +| conf.common."java.security.krb5.conf.path" | string | `"/opt/krb5.conf"` | java.security.krb5.conf path | +| conf.common."kerberos.expire.time" | int | `2` | kerberos 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 | `""` | alibaba cloud access key id, required if you set resource.storage.type=OSS | +| conf.common."resource.alibaba.cloud.access.key.secret" | string | `""` | 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.aws.access.key.id" | string | `"minioadmin"` | The AWS access key. if resource.storage.type=S3 or use EMR-Task, This configuration is required | +| conf.common."resource.aws.region" | string | `"ca-central-1"` | The AWS Region to use. if resource.storage.type=S3 or use EMR-Task, This configuration is required | +| conf.common."resource.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."resource.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."resource.aws.secret.access.key" | string | `"minioadmin"` | The AWS secret access key. if resource.storage.type=S3 or use EMR-Task, This configuration is required | +| 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" | int | `8088` | resourcemanager 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" | bool | `true` | use 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" | bool | `false` | Whether hive SQL is executed in the same session | +| conf.common."task.resource.limit.state" | bool | `false` | Task 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 | +| externalDatabase.database | string | `"dolphinscheduler"` | The database of external database | +| externalDatabase.driverClassName | string | `"org.postgresql.Driver"` | The driverClassName of external database | +| externalDatabase.enabled | bool | `false` | If exists external database, and set postgresql.enable value to false. external database will be used, otherwise Dolphinscheduler's internal database will be used. | +| externalDatabase.host | string | `"localhost"` | The host of external database | +| externalDatabase.params | string | `"characterEncoding=utf8"` | The params of external database | +| externalDatabase.password | string | `"root"` | The password of external database | +| externalDatabase.port | string | `"5432"` | The port of external database | +| externalDatabase.type | string | `"postgresql"` | The type of external database, supported types: postgresql, mysql | +| externalDatabase.username | string | `"root"` | The username of external database | +| externalRegistry.registryPluginName | string | `"zookeeper"` | If exists external registry and set `zookeeper.enable` && `registryEtcd.enabled` && `registryJdbc.enabled` to false, specify the external registry plugin name | +| externalRegistry.registryServers | string | `"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.alert | string | `"dolphinscheduler-alert-server"` | alert-server image | +| image.api | string | `"dolphinscheduler-api"` | api-server image | +| image.master | string | `"dolphinscheduler-master"` | master image | +| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy. Options: Always, Never, IfNotPresent | +| image.pullSecret | string | `""` | Specify a imagePullSecrets | +| image.registry | string | `"apache/dolphinscheduler"` | Docker image repository for the DolphinScheduler | +| image.tag | string | `"latest"` | Docker image version for the DolphinScheduler | +| image.tools | string | `"dolphinscheduler-tools"` | tools image | +| image.worker | string | `"dolphinscheduler-worker"` | worker image | +| ingress.annotations | object | `{}` | Ingress annotations | +| ingress.enabled | bool | `false` | Enable ingress | +| ingress.host | string | `"dolphinscheduler.org"` | Ingress host | +| ingress.path | string | `"/dolphinscheduler"` | Ingress path | +| ingress.tls.enabled | bool | `false` | Enable ingress tls | +| ingress.tls.secretName | string | `"dolphinscheduler-tls"` | Ingress tls secret name | +| initImage | object | `{"busybox":"busybox:1.30.1","pullPolicy":"IfNotPresent"}` | Used to detect whether dolphinscheduler dependent services such as database are ready | +| initImage.busybox | string | `"busybox:1.30.1"` | Specify initImage repository | +| initImage.pullPolicy | string | `"IfNotPresent"` | Image pull policy. Options: Always, Never, IfNotPresent | +| master.affinity | object | `{}` | Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. More info: [node-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) | +| master.annotations | object | `{}` | You can use annotations to attach arbitrary non-identifying metadata to objects. Clients such as tools and libraries can retrieve this metadata. | +| master.enabled | bool | `true` | Enable or disable the Master component | +| master.env.JAVA_OPTS | string | `"-Xms1g -Xmx1g -Xmn512m"` | The jvm options for master server | +| master.env.MASTER_DISPATCH_TASK_NUM | string | `"3"` | Master dispatch task number per batch | +| master.env.MASTER_EXEC_TASK_NUM | string | `"20"` | Master execute task number in parallel per process instance | +| master.env.MASTER_EXEC_THREADS | string | `"100"` | Master execute thread number to limit process instances | +| master.env.MASTER_FAILOVER_INTERVAL | string | `"10m"` | Master failover interval, the unit is minute | +| master.env.MASTER_HEARTBEAT_ERROR_THRESHOLD | string | `"5"` | Master heartbeat error threshold | +| master.env.MASTER_HEARTBEAT_INTERVAL | string | `"10s"` | Master heartbeat interval, the unit is second | +| master.env.MASTER_HOST_SELECTOR | string | `"LowerWeight"` | Master host selector to select a suitable worker, optional values include Random, RoundRobin, LowerWeight | +| master.env.MASTER_KILL_APPLICATION_WHEN_HANDLE_FAILOVER | string | `"true"` | Master kill application when handle failover | +| master.env.MASTER_MAX_CPU_LOAD_AVG | string | `"1"` | Master max cpuload avg, only higher than the system cpu load average, master server can schedule | +| master.env.MASTER_RESERVED_MEMORY | string | `"0.3"` | Master reserved memory, only lower than system available memory, master server can schedule, the unit is G | +| master.env.MASTER_STATE_WHEEL_INTERVAL | string | `"5s"` | master state wheel interval, the unit is second | +| master.env.MASTER_TASK_COMMIT_INTERVAL | string | `"1s"` | master commit task interval, the unit is second | +| master.env.MASTER_TASK_COMMIT_RETRYTIMES | string | `"5"` | Master commit task retry times | +| master.livenessProbe | object | `{"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](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) | +| master.livenessProbe.enabled | bool | `true` | Turn on and off liveness probe | +| master.livenessProbe.failureThreshold | string | `"3"` | Minimum consecutive failures for the probe | +| master.livenessProbe.initialDelaySeconds | string | `"30"` | Delay before liveness probe is initiated | +| master.livenessProbe.periodSeconds | string | `"30"` | How often to perform the probe | +| master.livenessProbe.successThreshold | string | `"1"` | Minimum consecutive successes for the probe | +| master.livenessProbe.timeoutSeconds | string | `"5"` | When the probe times out | +| master.nodeSelector | object | `{}` | 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](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) | +| master.persistentVolumeClaim | object | `{"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.accessModes | list | `["ReadWriteOnce"]` | `PersistentVolumeClaim` access modes | +| master.persistentVolumeClaim.enabled | bool | `false` | Set `master.persistentVolumeClaim.enabled` to `true` to mount a new volume for `master` | +| master.persistentVolumeClaim.storage | string | `"20Gi"` | `PersistentVolumeClaim` size | +| master.persistentVolumeClaim.storageClassName | string | `"-"` | `Master` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | +| master.podManagementPolicy | string | `"Parallel"` | PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. | +| master.readinessProbe | object | `{"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](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) | +| master.readinessProbe.enabled | bool | `true` | Turn on and off readiness probe | +| master.readinessProbe.failureThreshold | string | `"3"` | Minimum consecutive failures for the probe | +| master.readinessProbe.initialDelaySeconds | string | `"30"` | Delay before readiness probe is initiated | +| master.readinessProbe.periodSeconds | string | `"30"` | How often to perform the probe | +| master.readinessProbe.successThreshold | string | `"1"` | Minimum consecutive successes for the probe | +| master.readinessProbe.timeoutSeconds | string | `"5"` | When the probe times out | +| master.replicas | string | `"3"` | Replicas is the desired number of replicas of the given Template. | +| master.resources | object | `{}` | Compute Resources required by this container. More info: [manage-resources-containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) | +| master.service.annotations | object | `{}` | annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator | +| master.service.serviceMonitor | object | `{"annotations":{},"enabled":false,"interval":"15s","labels":{},"path":"/actuator/prometheus"}` | serviceMonitor for prometheus operator | +| master.service.serviceMonitor.annotations | object | `{}` | serviceMonitor.annotations ServiceMonitor annotations | +| master.service.serviceMonitor.enabled | bool | `false` | Enable or disable master serviceMonitor | +| master.service.serviceMonitor.interval | string | `"15s"` | serviceMonitor.interval interval at which metrics should be scraped | +| master.service.serviceMonitor.labels | object | `{}` | serviceMonitor.labels ServiceMonitor extra labels | +| master.service.serviceMonitor.path | string | `"/actuator/prometheus"` | serviceMonitor.path path of the metrics endpoint | +| master.tolerations | list | `[]` | 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. | +| minio.auth.rootPassword | string | `"minioadmin"` | minio password | +| minio.auth.rootUser | string | `"minioadmin"` | minio username | +| minio.defaultBuckets | string | `"dolphinscheduler"` | minio default buckets | +| minio.enabled | bool | `true` | Deploy minio and configure it as the default storage for DolphinScheduler, note this is for demo only, not for production. | +| minio.persistence.enabled | bool | `false` | Set minio.persistence.enabled to true to mount a new volume for internal minio | +| mysql.auth.database | string | `"dolphinscheduler"` | mysql database | +| mysql.auth.params | string | `"characterEncoding=utf8"` | mysql params | +| mysql.auth.password | string | `"ds"` | mysql password | +| mysql.auth.username | string | `"ds"` | mysql username | +| mysql.driverClassName | string | `"com.mysql.cj.jdbc.Driver"` | mysql driverClassName | +| mysql.enabled | bool | `false` | If not exists external MySQL, by default, the DolphinScheduler will use a internal MySQL | +| mysql.primary.persistence.enabled | bool | `false` | Set mysql.primary.persistence.enabled to true to mount a new volume for internal MySQL | +| mysql.primary.persistence.size | string | `"20Gi"` | `PersistentVolumeClaim` size | +| mysql.primary.persistence.storageClass | string | `"-"` | MySQL data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | +| postgresql.driverClassName | string | `"org.postgresql.Driver"` | The driverClassName for internal PostgreSQL | +| postgresql.enabled | bool | `true` | If not exists external PostgreSQL, by default, the DolphinScheduler will use a internal PostgreSQL | +| postgresql.params | string | `"characterEncoding=utf8"` | The params for internal PostgreSQL | +| postgresql.persistence.enabled | bool | `false` | Set postgresql.persistence.enabled to true to mount a new volume for internal PostgreSQL | +| postgresql.persistence.size | string | `"20Gi"` | `PersistentVolumeClaim` size | +| postgresql.persistence.storageClass | string | `"-"` | PostgreSQL data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | +| postgresql.postgresqlDatabase | string | `"dolphinscheduler"` | The database for internal PostgreSQL | +| postgresql.postgresqlPassword | string | `"root"` | The password for internal PostgreSQL | +| postgresql.postgresqlUsername | string | `"root"` | The username for internal PostgreSQL | +| registryEtcd.authority | string | `""` | Etcd authority | +| registryEtcd.enabled | bool | `false` | If you want to use Etcd for your registry center, change this value to true. And set zookeeper.enabled to false | +| registryEtcd.endpoints | string | `""` | Etcd endpoints | +| registryEtcd.namespace | string | `"dolphinscheduler"` | Etcd namespace | +| registryEtcd.passWord | string | `""` | Etcd passWord | +| registryEtcd.ssl.certFile | string | `"etcd-certs/ca.crt"` | CertFile file path | +| registryEtcd.ssl.enabled | bool | `false` | If your Etcd server has configured with ssl, change this value to true. About certification files you can see [here](https://github.com/etcd-io/jetcd/blob/main/docs/SslConfig.md) for how to convert. | +| registryEtcd.ssl.keyCertChainFile | string | `"etcd-certs/client.crt"` | keyCertChainFile file path | +| registryEtcd.ssl.keyFile | string | `"etcd-certs/client.pem"` | keyFile file path | +| registryEtcd.user | string | `""` | Etcd user | +| registryJdbc.enabled | bool | `false` | If 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.driverClassName | string | `"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.enabled | bool | `false` | Default use same Dolphinscheduler's database, if you want to use other database please change `enabled` to `true` and change other configs | +| registryJdbc.hikariConfig.jdbcurl | string | `"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.password | string | `""` | 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.username | string | `""` | 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.termExpireTimes | int | `3` | Used to calculate the expire time | +| registryJdbc.termRefreshInterval | string | `"2s"` | Used to schedule refresh the ephemeral data/ lock | +| security.authentication.ldap.basedn | string | `"dc=example,dc=com"` | LDAP base dn | +| security.authentication.ldap.password | string | `"password"` | LDAP password | +| security.authentication.ldap.ssl.enable | bool | `false` | LDAP ssl switch | +| security.authentication.ldap.ssl.jksbase64content | string | `""` | 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.truststore | string | `"/opt/ldapkeystore.jks"` | LDAP jks file absolute path, do not change this value | +| security.authentication.ldap.ssl.truststorepassword | string | `""` | LDAP jks password | +| security.authentication.ldap.urls | string | `"ldap://ldap.forumsys.com:389/"` | LDAP urls | +| security.authentication.ldap.user.admin | string | `"read-only-admin"` | Admin user account when you log-in with LDAP | +| security.authentication.ldap.user.emailattribute | string | `"mail"` | LDAP user email attribute | +| security.authentication.ldap.user.identityattribute | string | `"uid"` | LDAP user identity attribute | +| security.authentication.ldap.user.notexistaction | string | `"CREATE"` | action when ldap user is not exist,default value: CREATE. Optional values include(CREATE,DENY) | +| security.authentication.ldap.username | string | `"cn=read-only-admin,dc=example,dc=com"` | LDAP username | +| security.authentication.type | string | `"PASSWORD"` | Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO) | +| timezone | string | `"Asia/Shanghai"` | World time and date for cities in all time zones | +| worker.affinity | object | `{}` | Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. More info: [node-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) | +| worker.annotations | object | `{}` | You can use annotations to attach arbitrary non-identifying metadata to objects. Clients such as tools and libraries can retrieve this metadata. | +| worker.enabled | bool | `true` | Enable or disable the Worker component | +| worker.env.WORKER_EXEC_THREADS | string | `"100"` | Worker execute thread number to limit task instances | +| worker.env.WORKER_HEARTBEAT_INTERVAL | string | `"10s"` | Worker heartbeat interval, the unit is second | +| worker.env.WORKER_HEART_ERROR_THRESHOLD | string | `"5"` | Worker heartbeat error threshold | +| worker.env.WORKER_HOST_WEIGHT | string | `"100"` | Worker host weight to dispatch tasks | +| worker.env.WORKER_MAX_CPU_LOAD_AVG | string | `"1"` | Worker max cpu load avg, only higher than the system cpu load average, worker server can be dispatched tasks | +| worker.env.WORKER_RESERVED_MEMORY | string | `"0.3"` | Worker reserved memory, only lower than system available memory, worker server can be dispatched tasks, the unit is G | +| worker.keda.advanced | object | `{}` | Specify HPA related options | +| worker.keda.cooldownPeriod | int | `30` | How many seconds KEDA will wait before scaling to zero. Note that HPA has a separate cooldown period for scale-downs | +| worker.keda.enabled | bool | `false` | Enable or disable the Keda component | +| worker.keda.maxReplicaCount | int | `3` | Maximum number of workers created by keda | +| worker.keda.minReplicaCount | int | `0` | Minimum number of workers created by keda | +| worker.keda.namespaceLabels | object | `{}` | Keda namespace labels | +| worker.keda.pollingInterval | int | `5` | How often KEDA polls the DolphinScheduler DB to report new scale requests to the HPA | +| worker.livenessProbe | object | `{"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](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) | +| worker.livenessProbe.enabled | bool | `true` | Turn on and off liveness probe | +| worker.livenessProbe.failureThreshold | string | `"3"` | Minimum consecutive failures for the probe | +| worker.livenessProbe.initialDelaySeconds | string | `"30"` | Delay before liveness probe is initiated | +| worker.livenessProbe.periodSeconds | string | `"30"` | How often to perform the probe | +| worker.livenessProbe.successThreshold | string | `"1"` | Minimum consecutive successes for the probe | +| worker.livenessProbe.timeoutSeconds | string | `"5"` | When the probe times out | +| worker.nodeSelector | object | `{}` | 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](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) | +| worker.persistentVolumeClaim | object | `{"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.accessModes | list | `["ReadWriteOnce"]` | `PersistentVolumeClaim` access modes | +| worker.persistentVolumeClaim.dataPersistentVolume.enabled | bool | `false` | Set `worker.persistentVolumeClaim.dataPersistentVolume.enabled` to `true` to mount a data volume for `worker` | +| worker.persistentVolumeClaim.dataPersistentVolume.storage | string | `"20Gi"` | `PersistentVolumeClaim` size | +| worker.persistentVolumeClaim.dataPersistentVolume.storageClassName | string | `"-"` | `Worker` data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | +| worker.persistentVolumeClaim.enabled | bool | `false` | Set `worker.persistentVolumeClaim.enabled` to `true` to enable `persistentVolumeClaim` for `worker` | +| worker.persistentVolumeClaim.logsPersistentVolume.accessModes | list | `["ReadWriteOnce"]` | `PersistentVolumeClaim` access modes | +| worker.persistentVolumeClaim.logsPersistentVolume.enabled | bool | `false` | Set `worker.persistentVolumeClaim.logsPersistentVolume.enabled` to `true` to mount a logs volume for `worker` | +| worker.persistentVolumeClaim.logsPersistentVolume.storage | string | `"20Gi"` | `PersistentVolumeClaim` size | +| worker.persistentVolumeClaim.logsPersistentVolume.storageClassName | string | `"-"` | `Worker` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | +| worker.podManagementPolicy | string | `"Parallel"` | PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. | +| worker.readinessProbe | object | `{"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](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) | +| worker.readinessProbe.enabled | bool | `true` | Turn on and off readiness probe | +| worker.readinessProbe.failureThreshold | string | `"3"` | Minimum consecutive failures for the probe | +| worker.readinessProbe.initialDelaySeconds | string | `"30"` | Delay before readiness probe is initiated | +| worker.readinessProbe.periodSeconds | string | `"30"` | How often to perform the probe | +| worker.readinessProbe.successThreshold | string | `"1"` | Minimum consecutive successes for the probe | +| worker.readinessProbe.timeoutSeconds | string | `"5"` | When the probe times out | +| worker.replicas | string | `"3"` | Replicas is the desired number of replicas of the given Template. | +| worker.resources | object | `{}` | Compute Resources required by this container. More info: [manage-resources-containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) | +| worker.service.annotations | object | `{}` | annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator | +| worker.service.serviceMonitor | object | `{"annotations":{},"enabled":false,"interval":"15s","labels":{},"path":"/actuator/prometheus"}` | serviceMonitor for prometheus operator | +| worker.service.serviceMonitor.annotations | object | `{}` | serviceMonitor.annotations ServiceMonitor annotations | +| worker.service.serviceMonitor.enabled | bool | `false` | Enable or disable worker serviceMonitor | +| worker.service.serviceMonitor.interval | string | `"15s"` | serviceMonitor.interval interval at which metrics should be scraped | +| worker.service.serviceMonitor.labels | object | `{}` | serviceMonitor.labels ServiceMonitor extra labels | +| worker.service.serviceMonitor.path | string | `"/actuator/prometheus"` | serviceMonitor.path path of the metrics endpoint | +| worker.tolerations | list | `[]` | 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. | +| zookeeper.enabled | bool | `true` | If not exists external registry, the zookeeper registry will be used by default. | +| zookeeper.fourlwCommandsWhitelist | string | `"srvr,ruok,wchs,cons"` | A list of comma separated Four Letter Words commands to use | +| zookeeper.persistence.enabled | bool | `false` | Set `zookeeper.persistence.enabled` to true to mount a new volume for internal ZooKeeper | +| zookeeper.persistence.size | string | `"20Gi"` | PersistentVolumeClaim size | +| zookeeper.persistence.storageClass | string | `"-"` | ZooKeeper data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | +| zookeeper.service.port | int | `2181` | The port of zookeeper | diff --git a/deploy/kubernetes/dolphinscheduler/README.md.gotmpl b/deploy/kubernetes/dolphinscheduler/README.md.gotmpl new file mode 100644 index 0000000000..f82b86d205 --- /dev/null +++ b/deploy/kubernetes/dolphinscheduler/README.md.gotmpl @@ -0,0 +1,11 @@ +## About DolphinScheduler for Kubernetes + +{{ template "chart.description" . }} + +This chart bootstraps all the components needed to run Apache DolphinScheduler on a Kubernetes Cluster using [Helm](https://helm.sh). + +## QuickStart in Kubernetes + +Please refer to the [Quick Start in Kubernetes](../../../docs/docs/en/guide/installation/kubernetes.md) + +{{ template "chart.valuesSection" . }} diff --git a/deploy/kubernetes/dolphinscheduler/values.yaml b/deploy/kubernetes/dolphinscheduler/values.yaml index 893ab94b4e..cea0e616db 100644 --- a/deploy/kubernetes/dolphinscheduler/values.yaml +++ b/deploy/kubernetes/dolphinscheduler/values.yaml @@ -19,322 +19,419 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. +# -- World time and date for cities in all time zones timezone: "Asia/Shanghai" -# Used to detect whether dolphinscheduler dependent services such as database are ready +# -- Used to detect whether dolphinscheduler dependent services such as database are ready initImage: + # -- Image pull policy. Options: Always, Never, IfNotPresent pullPolicy: "IfNotPresent" + # -- Specify initImage repository busybox: "busybox:1.30.1" image: - registry: "dolphinscheduler.docker.scarf.sh/apache" - tag: "dev-SNAPSHOT" + # -- Docker image repository for the DolphinScheduler + registry: apache/dolphinscheduler + # -- Docker image version for the DolphinScheduler + tag: latest + # -- Image pull policy. Options: Always, Never, IfNotPresent pullPolicy: "IfNotPresent" + # -- Specify a imagePullSecrets pullSecret: "" + # -- master image master: dolphinscheduler-master + # -- worker image worker: dolphinscheduler-worker + # -- api-server image api: dolphinscheduler-api + # -- alert-server image alert: dolphinscheduler-alert-server + # -- tools image tools: dolphinscheduler-tools -## If not exists external database, by default, Dolphinscheduler's database will use it. postgresql: + # -- If not exists external PostgreSQL, by default, the DolphinScheduler will use a internal PostgreSQL enabled: true + # -- The username for internal PostgreSQL postgresqlUsername: "root" + # -- The password for internal PostgreSQL postgresqlPassword: "root" + # -- The database for internal PostgreSQL postgresqlDatabase: "dolphinscheduler" + # -- The driverClassName for internal PostgreSQL driverClassName: "org.postgresql.Driver" + # -- The params for internal PostgreSQL params: "characterEncoding=utf8" persistence: + # -- Set postgresql.persistence.enabled to true to mount a new volume for internal PostgreSQL enabled: false + # -- `PersistentVolumeClaim` size size: "20Gi" + # -- PostgreSQL data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning storageClass: "-" mysql: + # -- If not exists external MySQL, by default, the DolphinScheduler will use a internal MySQL enabled: false + # -- mysql driverClassName driverClassName: "com.mysql.cj.jdbc.Driver" auth: + # -- mysql username username: "ds" + # -- mysql password password: "ds" + # -- mysql database database: "dolphinscheduler" + # -- mysql params params: "characterEncoding=utf8" primary: persistence: + # -- Set mysql.primary.persistence.enabled to true to mount a new volume for internal MySQL enabled: false + # -- `PersistentVolumeClaim` size size: "20Gi" + # -- MySQL data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning storageClass: "-" minio: + # -- Deploy minio and configure it as the default storage for DolphinScheduler, note this is for demo only, not for production. enabled: true auth: + # -- minio username rootUser: minioadmin + # -- minio password rootPassword: minioadmin persistence: + # -- Set minio.persistence.enabled to true to mount a new volume for internal minio enabled: false + # -- minio default buckets defaultBuckets: "dolphinscheduler" -## If exists external database, and set postgresql.enable value to false. -## external database will be used, otherwise Dolphinscheduler's database will be used. + externalDatabase: + # -- If exists external database, and set postgresql.enable value to false. + # external database will be used, otherwise Dolphinscheduler's internal database will be used. enabled: false + # -- The type of external database, supported types: postgresql, mysql type: "postgresql" + # -- The host of external database host: "localhost" + # -- The port of external database port: "5432" + # -- The username of external database username: "root" + # -- The password of external database password: "root" + # -- The database of external database database: "dolphinscheduler" + # -- The params of external database params: "characterEncoding=utf8" + # -- The driverClassName of external database driverClassName: "org.postgresql.Driver" -## If not exists external registry, the zookeeper registry will be used by default. zookeeper: + # -- If not exists external registry, the zookeeper registry will be used by default. enabled: true service: + # -- The port of zookeeper port: 2181 + # -- A list of comma separated Four Letter Words commands to use fourlwCommandsWhitelist: "srvr,ruok,wchs,cons" persistence: + # -- Set `zookeeper.persistence.enabled` to true to mount a new volume for internal ZooKeeper enabled: false + # -- PersistentVolumeClaim size size: "20Gi" + # -- ZooKeeper data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning storageClass: "-" registryEtcd: + # -- If you want to use Etcd for your registry center, change this value to true. And set zookeeper.enabled to false enabled: false + # -- Etcd endpoints endpoints: "" + # -- Etcd namespace namespace: "dolphinscheduler" + # -- Etcd user user: "" + # -- Etcd passWord passWord: "" + # -- Etcd authority authority: "" # Please create a new folder: deploy/kubernetes/dolphinscheduler/etcd-certs ssl: + # -- If your Etcd server has configured with ssl, change this value to true. About certification files you can see [here](https://github.com/etcd-io/jetcd/blob/main/docs/SslConfig.md) for how to convert. enabled: false + # -- CertFile file path certFile: "etcd-certs/ca.crt" + # -- keyCertChainFile file path keyCertChainFile: "etcd-certs/client.crt" + # -- keyFile file path keyFile: "etcd-certs/client.pem" registryJdbc: + # -- If you want to use JDbc for your registry center, change this value to true. And set zookeeper.enabled and registryEtcd.enabled to false enabled: false + # -- Used to schedule refresh the ephemeral data/ lock termRefreshInterval: 2s + # -- Used to calculate the expire time termExpireTimes: 3 hikariConfig: - # Default use same Dolphinscheduler's database, if you want to use other database please change `enabled` to `true` and change other configs + # -- Default use same Dolphinscheduler's database, if you want to use other database please change `enabled` to `true` and change other configs enabled: false + # -- 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 driverClassName: 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 jdbcurl: 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 username: "" + # -- 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 password: "" ## If exists external registry and set zookeeper.enable value to false, the external registry will be used. externalRegistry: + # -- If exists external registry and set `zookeeper.enable` && `registryEtcd.enabled` && `registryJdbc.enabled` to false, specify the external registry plugin name registryPluginName: "zookeeper" + # -- If exists external registry and set `zookeeper.enable` && `registryEtcd.enabled` && `registryJdbc.enabled` to false, specify the external registry servers registryServers: "127.0.0.1:2181" security: authentication: - # Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO) + # -- Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO) type: PASSWORD # IF you set type `LDAP`, below config will be effective ldap: + # -- LDAP urls urls: ldap://ldap.forumsys.com:389/ + # -- LDAP base dn basedn: dc=example,dc=com + # -- LDAP username username: cn=read-only-admin,dc=example,dc=com + # -- LDAP password password: password user: + # -- Admin user account when you log-in with LDAP admin: read-only-admin + # -- LDAP user identity attribute identityattribute: uid + # -- LDAP user email attribute emailattribute: mail + # -- action when ldap user is not exist,default value: CREATE. Optional values include(CREATE,DENY) notexistaction: CREATE ssl: + # -- LDAP ssl switch enable: false - # do not change this value + # -- LDAP jks file absolute path, do not change this value truststore: "/opt/ldapkeystore.jks" - # 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` + # -- 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 jksbase64content: "" + # -- LDAP jks password truststorepassword: "" conf: - # auto 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 + # -- auto 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 auto: false # common configuration common: - # user data local directory path, please make sure the directory exists and have read write permissions + # -- user data local directory path, please make sure the directory exists and have read write permissions data.basedir.path: /tmp/dolphinscheduler - # resource storage type: HDFS, S3, OSS, GCS, ABS, NONE + # -- resource storage type: HDFS, S3, OSS, GCS, ABS, NONE resource.storage.type: S3 - # 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 + # -- 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 resource.storage.upload.base.path: /dolphinscheduler - # The AWS access key. if resource.storage.type=S3 or use EMR-Task, This configuration is required + # -- The AWS access key. if resource.storage.type=S3 or use EMR-Task, This configuration is required resource.aws.access.key.id: minioadmin - # The AWS secret access key. if resource.storage.type=S3 or use EMR-Task, This configuration is required + # -- The AWS secret access key. if resource.storage.type=S3 or use EMR-Task, This configuration is required resource.aws.secret.access.key: minioadmin - # The AWS Region to use. if resource.storage.type=S3 or use EMR-Task, This configuration is required + # -- The AWS Region to use. if resource.storage.type=S3 or use EMR-Task, This configuration is required resource.aws.region: ca-central-1 - # 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. + # -- 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. resource.aws.s3.bucket.name: dolphinscheduler - # 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 + # -- 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 resource.aws.s3.endpoint: http://minio:9000 - # alibaba cloud access key id, required if you set resource.storage.type=OSS + # -- alibaba cloud access key id, required if you set resource.storage.type=OSS resource.alibaba.cloud.access.key.id: - # alibaba cloud access key secret, required if you set resource.storage.type=OSS + # -- alibaba cloud access key secret, required if you set resource.storage.type=OSS resource.alibaba.cloud.access.key.secret: - # alibaba cloud region, required if you set resource.storage.type=OSS + # -- alibaba cloud region, required if you set resource.storage.type=OSS resource.alibaba.cloud.region: cn-hangzhou - # oss bucket name, required if you set resource.storage.type=OSS + # -- oss bucket name, required if you set resource.storage.type=OSS resource.alibaba.cloud.oss.bucket.name: dolphinscheduler - # oss bucket endpoint, required if you set resource.storage.type=OSS + # -- oss bucket endpoint, required if you set resource.storage.type=OSS resource.alibaba.cloud.oss.endpoint: https://oss-cn-hangzhou.aliyuncs.com - # azure storage account name, required if you set resource.storage.type=ABS + # -- azure storage account name, required if you set resource.storage.type=ABS resource.azure.client.id: minioadmin - # azure storage account key, required if you set resource.storage.type=ABS + # -- azure storage account key, required if you set resource.storage.type=ABS resource.azure.client.secret: minioadmin - # azure storage subId, required if you set resource.storage.type=ABS + # -- azure storage subId, required if you set resource.storage.type=ABS resource.azure.subId: minioadmin - # azure storage tenantId, required if you set resource.storage.type=ABS + # -- azure storage tenantId, required if you set resource.storage.type=ABS resource.azure.tenant.id: minioadmin - # if resource.storage.type=HDFS, the user must have the permission to create directories under the HDFS root path + # -- if resource.storage.type=HDFS, the user must have the permission to create directories under the HDFS root path resource.hdfs.root.user: hdfs - # 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 + # -- 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 resource.hdfs.fs.defaultFS: hdfs://mycluster:8020 - # whether to startup kerberos + # -- whether to startup kerberos hadoop.security.authentication.startup.state: false - # java.security.krb5.conf path + # -- java.security.krb5.conf path java.security.krb5.conf.path: /opt/krb5.conf - # login user from keytab username + # -- login user from keytab username login.user.keytab.username: hdfs-mycluster@ESZ.COM - # login user from keytab path + # -- login user from keytab path login.user.keytab.path: /opt/hdfs.headless.keytab - # kerberos expire time, the unit is hour + # -- kerberos expire time, the unit is hour kerberos.expire.time: 2 - # resourcemanager port, the default value is 8088 if not specified + # -- resourcemanager port, the default value is 8088 if not specified resource.manager.httpaddress.port: 8088 - # if resourcemanager HA is enabled, please set the HA IPs; if resourcemanager is single, keep this value empty + # -- if resourcemanager HA is enabled, please set the HA IPs; if resourcemanager is single, keep this value empty yarn.resourcemanager.ha.rm.ids: 192.168.xx.xx,192.168.xx.xx - # 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 + # -- 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 yarn.application.status.address: http://ds1:%s/ws/v1/cluster/apps/%s - # job history status url when application number threshold is reached(default 10000, maybe it was set to 1000) + # -- job history status url when application number threshold is reached(default 10000, maybe it was set to 1000) yarn.job.history.status.address: http://ds1:19888/ws/v1/history/mapreduce/jobs/%s - # datasource encryption enable + # -- datasource encryption enable datasource.encryption.enable: false - # datasource encryption salt + # -- datasource encryption salt datasource.encryption.salt: '!@#$%^&*' - # data quality option + # -- data quality option data-quality.jar.name: dolphinscheduler-data-quality-dev-SNAPSHOT.jar - # Whether hive SQL is executed in the same session + # -- Whether hive SQL is executed in the same session support.hive.oneSession: false - # use 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 + # -- use 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 sudo.enable: true - # development state + # -- development state development.state: false - # rpc port + # -- rpc port alert.rpc.port: 50052 - # set path of conda.sh + # -- set path of conda.sh conda.path: /opt/anaconda3/etc/profile.d/conda.sh - # Task resource limit state + # -- Task resource limit state task.resource.limit.state: false - # mlflow task plugin preset repository + # -- mlflow task plugin preset repository ml.mlflow.preset_repository: https://github.com/apache/dolphinscheduler-mlflow - # mlflow task plugin preset repository version + # -- mlflow task plugin preset repository version ml.mlflow.preset_repository_version: "main" - # way to collect applicationId: log, aop + # -- way to collect applicationId: log, aop appId.collect: log common: ## Configmap configmap: + # -- The jvm options for dolphinscheduler, suitable for all servers DOLPHINSCHEDULER_OPTS: "" + # -- User data directory path, self configuration, please make sure the directory exists and have read write permissions DATA_BASEDIR_PATH: "/tmp/dolphinscheduler" + + # -- Resource store on HDFS/S3 path, please make sure the directory exists on hdfs and have read write permissions RESOURCE_UPLOAD_PATH: "/dolphinscheduler" # dolphinscheduler env + # -- Set `HADOOP_HOME` for DolphinScheduler's task environment HADOOP_HOME: "/opt/soft/hadoop" + # -- Set `HADOOP_CONF_DIR` for DolphinScheduler's task environment HADOOP_CONF_DIR: "/opt/soft/hadoop/etc/hadoop" + # -- Set `SPARK_HOME` for DolphinScheduler's task environment SPARK_HOME: "/opt/soft/spark" + # -- Set `PYTHON_LAUNCHER` for DolphinScheduler's task environment PYTHON_LAUNCHER: "/usr/bin/python/bin/python3" + # -- Set `JAVA_HOME` for DolphinScheduler's task environment JAVA_HOME: "/opt/java/openjdk" + # -- Set `HIVE_HOME` for DolphinScheduler's task environment HIVE_HOME: "/opt/soft/hive" + # -- Set `FLINK_HOME` for DolphinScheduler's task environment FLINK_HOME: "/opt/soft/flink" + # -- Set `DATAX_LAUNCHER` for DolphinScheduler's task environment DATAX_LAUNCHER: "/opt/soft/datax/bin/datax.py" ## Shared storage persistence mounted into api, master and worker, such as Hadoop, Spark, Flink and DataX binary package sharedStoragePersistence: + # -- Set `common.sharedStoragePersistence.enabled` to `true` to mount a shared storage volume for Hadoop, Spark binary and etc enabled: false + # -- The mount path for the shared storage volume mountPath: "/opt/soft" + # -- `PersistentVolumeClaim` access modes, must be `ReadWriteMany` accessModes: - "ReadWriteMany" - ## storageClassName must support the access mode: ReadWriteMany + # -- Shared Storage persistent volume storage class, must support the access mode: ReadWriteMany storageClassName: "-" + # -- `PersistentVolumeClaim` size storage: "20Gi" ## If RESOURCE_STORAGE_TYPE is HDFS and FS_DEFAULT_FS is file:///, fsFileResourcePersistence should be enabled for resource storage fsFileResourcePersistence: + # -- Set `common.fsFileResourcePersistence.enabled` to `true` to mount a new file resource volume for `api` and `worker` enabled: false + # -- `PersistentVolumeClaim` access modes, must be `ReadWriteMany` accessModes: - "ReadWriteMany" - ## storageClassName must support the access mode: ReadWriteMany + # -- Resource persistent volume storage class, must support the access mode: `ReadWriteMany` storageClassName: "-" + # -- `PersistentVolumeClaim` size storage: "20Gi" master: - ## Enable or disable the Master component + # -- Enable or disable the Master component enabled: true - ## PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. + # -- PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. podManagementPolicy: "Parallel" - ## Replicas is the desired number of replicas of the given Template. + # -- Replicas is the desired number of replicas of the given Template. replicas: "3" - ## You can use annotations to attach arbitrary non-identifying metadata to objects. - ## Clients such as tools and libraries can retrieve this metadata. + # -- You can use annotations to attach arbitrary non-identifying metadata to objects. + # Clients such as tools and libraries can retrieve this metadata. annotations: {} - ## Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. - ## More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core + # -- Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. + # More info: [node-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) affinity: {} - ## 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: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + # -- 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](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) nodeSelector: {} - ## 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. + # -- 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. tolerations: [] - ## Compute Resources required by this container. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container + # -- Compute Resources required by this container. + # More info: [manage-resources-containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) resources: {} # resources: # limits: @@ -343,87 +440,118 @@ master: # requests: # memory: "2Gi" # cpu: "500m" - ## Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + + # -- Periodic probe of container liveness. Container will be restarted if the probe fails. + # More info: [container-probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) livenessProbe: + # -- Turn on and off liveness probe enabled: true + # -- Delay before liveness probe is initiated initialDelaySeconds: "30" + # -- How often to perform the probe periodSeconds: "30" + # -- When the probe times out timeoutSeconds: "5" + # -- Minimum consecutive failures for the probe failureThreshold: "3" + # -- Minimum consecutive successes for the probe successThreshold: "1" - ## Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + # -- Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. + # More info: [container-probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) readinessProbe: + # -- Turn on and off readiness probe enabled: true + # -- Delay before readiness probe is initiated initialDelaySeconds: "30" + # -- How often to perform the probe periodSeconds: "30" + # -- When the probe times out timeoutSeconds: "5" + # -- Minimum consecutive failures for the probe failureThreshold: "3" + # -- Minimum consecutive successes for the probe successThreshold: "1" - ## 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. + # -- 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. persistentVolumeClaim: + # -- Set `master.persistentVolumeClaim.enabled` to `true` to mount a new volume for `master` enabled: false + # -- `PersistentVolumeClaim` access modes accessModes: - "ReadWriteOnce" + # -- `Master` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning storageClassName: "-" + # -- `PersistentVolumeClaim` size storage: "20Gi" env: + # -- The jvm options for master server JAVA_OPTS: "-Xms1g -Xmx1g -Xmn512m" + # -- Master execute thread number to limit process instances MASTER_EXEC_THREADS: "100" + # -- Master execute task number in parallel per process instance MASTER_EXEC_TASK_NUM: "20" + # -- Master dispatch task number per batch MASTER_DISPATCH_TASK_NUM: "3" + # -- Master host selector to select a suitable worker, optional values include Random, RoundRobin, LowerWeight MASTER_HOST_SELECTOR: "LowerWeight" + # -- Master heartbeat interval, the unit is second MASTER_HEARTBEAT_INTERVAL: "10s" + # -- Master heartbeat error threshold MASTER_HEARTBEAT_ERROR_THRESHOLD: "5" + # -- Master commit task retry times MASTER_TASK_COMMIT_RETRYTIMES: "5" + # -- master commit task interval, the unit is second MASTER_TASK_COMMIT_INTERVAL: "1s" + # -- master state wheel interval, the unit is second MASTER_STATE_WHEEL_INTERVAL: "5s" + # -- Master max cpuload avg, only higher than the system cpu load average, master server can schedule MASTER_MAX_CPU_LOAD_AVG: "1" + # -- Master reserved memory, only lower than system available memory, master server can schedule, the unit is G MASTER_RESERVED_MEMORY: "0.3" + # -- Master failover interval, the unit is minute MASTER_FAILOVER_INTERVAL: "10m" + # -- Master kill application when handle failover MASTER_KILL_APPLICATION_WHEN_HANDLE_FAILOVER: "true" service: - # annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator + # -- annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator annotations: {} - # serviceMonitor for prometheus operator + # -- serviceMonitor for prometheus operator serviceMonitor: # -- Enable or disable master serviceMonitor enabled: false - # -- @param serviceMonitor.interval interval at which metrics should be scraped + # -- serviceMonitor.interval interval at which metrics should be scraped interval: 15s - # -- @param serviceMonitor.path path of the metrics endpoint + # -- serviceMonitor.path path of the metrics endpoint path: /actuator/prometheus - # -- @param serviceMonitor.labels ServiceMonitor extra labels + # -- serviceMonitor.labels ServiceMonitor extra labels labels: {} - # -- @param serviceMonitor.annotations ServiceMonitor annotations + # -- serviceMonitor.annotations ServiceMonitor annotations annotations: {} worker: - ## Enable or disable the Worker component + # -- Enable or disable the Worker component enabled: true - ## PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. + # -- PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. podManagementPolicy: "Parallel" - ## Replicas is the desired number of replicas of the given Template. + # -- Replicas is the desired number of replicas of the given Template. replicas: "3" - ## You can use annotations to attach arbitrary non-identifying metadata to objects. - ## Clients such as tools and libraries can retrieve this metadata. + # -- You can use annotations to attach arbitrary non-identifying metadata to objects. + # Clients such as tools and libraries can retrieve this metadata. annotations: {} - ## Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. - ## More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core + # -- Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. + # More info: [node-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) affinity: {} - ## 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: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + # -- 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](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) nodeSelector: {} - ## 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. - tolerations: [] - ## Compute Resources required by this container. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container + # -- 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. + tolerations: [ ] + # -- Compute Resources required by this container. + # More info: [manage-resources-containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) resources: {} # resources: # limits: @@ -432,69 +560,99 @@ worker: # requests: # memory: "2Gi" # cpu: "500m" - ## Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + + # -- Periodic probe of container liveness. Container will be restarted if the probe fails. + # More info: [container-probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) livenessProbe: + # -- Turn on and off liveness probe enabled: true + # -- Delay before liveness probe is initiated initialDelaySeconds: "30" + # -- How often to perform the probe periodSeconds: "30" + # -- When the probe times out timeoutSeconds: "5" + # -- Minimum consecutive failures for the probe failureThreshold: "3" + # -- Minimum consecutive successes for the probe successThreshold: "1" - ## Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + # -- Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. + # More info: [container-probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) readinessProbe: + # -- Turn on and off readiness probe enabled: true + # -- Delay before readiness probe is initiated initialDelaySeconds: "30" + # -- How often to perform the probe periodSeconds: "30" + # -- When the probe times out timeoutSeconds: "5" + # -- Minimum consecutive failures for the probe failureThreshold: "3" + # -- Minimum consecutive successes for the probe successThreshold: "1" - ## 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. + # -- 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. persistentVolumeClaim: + # -- Set `worker.persistentVolumeClaim.enabled` to `true` to enable `persistentVolumeClaim` for `worker` enabled: false ## dolphinscheduler data volume dataPersistentVolume: + # -- Set `worker.persistentVolumeClaim.dataPersistentVolume.enabled` to `true` to mount a data volume for `worker` enabled: false + # -- `PersistentVolumeClaim` access modes accessModes: - "ReadWriteOnce" + # -- `Worker` data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning storageClassName: "-" + # -- `PersistentVolumeClaim` size storage: "20Gi" ## dolphinscheduler logs volume logsPersistentVolume: + # -- Set `worker.persistentVolumeClaim.logsPersistentVolume.enabled` to `true` to mount a logs volume for `worker` enabled: false + # -- `PersistentVolumeClaim` access modes accessModes: - "ReadWriteOnce" + # -- `Worker` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning storageClassName: "-" + # -- `PersistentVolumeClaim` size storage: "20Gi" env: + # -- Worker max cpu load avg, only higher than the system cpu load average, worker server can be dispatched tasks WORKER_MAX_CPU_LOAD_AVG: "1" + # -- Worker reserved memory, only lower than system available memory, worker server can be dispatched tasks, the unit is G WORKER_RESERVED_MEMORY: "0.3" + # -- Worker execute thread number to limit task instances WORKER_EXEC_THREADS: "100" + # -- Worker heartbeat interval, the unit is second WORKER_HEARTBEAT_INTERVAL: "10s" + # -- Worker heartbeat error threshold WORKER_HEART_ERROR_THRESHOLD: "5" + # -- Worker host weight to dispatch tasks WORKER_HOST_WEIGHT: "100" keda: + # -- Enable or disable the Keda component enabled: false + # -- Keda namespace labels namespaceLabels: { } - # How often KEDA polls the DolphinScheduler DB to report new scale requests to the HPA + # -- How often KEDA polls the DolphinScheduler DB to report new scale requests to the HPA pollingInterval: 5 - # How many seconds KEDA will wait before scaling to zero. + # -- How many seconds KEDA will wait before scaling to zero. # Note that HPA has a separate cooldown period for scale-downs cooldownPeriod: 30 - # Minimum number of workers created by keda + # -- Minimum number of workers created by keda minReplicaCount: 0 - # Maximum number of workers created by keda + # -- Maximum number of workers created by keda maxReplicaCount: 3 - # Specify HPA related options + # -- Specify HPA related options advanced: { } # horizontalPodAutoscalerConfig: # behavior: @@ -505,48 +663,51 @@ worker: # value: 100 # periodSeconds: 15 service: - # annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator + # -- annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator annotations: {} - # serviceMonitor for prometheus operator + # -- serviceMonitor for prometheus operator serviceMonitor: # -- Enable or disable worker serviceMonitor enabled: false - # -- @param serviceMonitor.interval interval at which metrics should be scraped + # -- serviceMonitor.interval interval at which metrics should be scraped interval: 15s - # -- @param serviceMonitor.path path of the metrics endpoint + # -- serviceMonitor.path path of the metrics endpoint path: /actuator/prometheus - # -- @param serviceMonitor.labels ServiceMonitor extra labels + # -- serviceMonitor.labels ServiceMonitor extra labels labels: {} - # -- @param serviceMonitor.annotations ServiceMonitor annotations + # -- serviceMonitor.annotations ServiceMonitor annotations annotations: {} alert: - ## Enable or disable the Alert-Server component + # -- Enable or disable the Alert-Server component enabled: true - ## Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. + # -- Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. replicas: 1 - ## The deployment strategy to use to replace existing pods with new ones. + # -- The deployment strategy to use to replace existing pods with new ones. strategy: + # -- Type of deployment. Can be "Recreate" or "RollingUpdate" type: "RollingUpdate" rollingUpdate: + # -- The maximum number of pods that can be scheduled above the desired number of pods maxSurge: "25%" + # -- The maximum number of pods that can be unavailable during the update maxUnavailable: "25%" - ## You can use annotations to attach arbitrary non-identifying metadata to objects. - ## Clients such as tools and libraries can retrieve this metadata. + # -- You can use annotations to attach arbitrary non-identifying metadata to objects. + # Clients such as tools and libraries can retrieve this metadata. annotations: {} - ## Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. - ## More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core + # -- Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. + # More info: [node-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) affinity: {} - ## 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: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + # -- 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](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) nodeSelector: {} - ## 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. + # -- 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. tolerations: [] - ## Compute Resources required by this container. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container + # -- Compute Resources required by this container. + # More info: [manage-resources-containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) resources: {} # resources: # limits: @@ -555,77 +716,98 @@ alert: # requests: # memory: "1Gi" # cpu: "500m" - ## Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + + # -- Periodic probe of container liveness. Container will be restarted if the probe fails. + # More info: [container-probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) livenessProbe: + # -- Turn on and off liveness probe enabled: true + # -- Delay before liveness probe is initiated initialDelaySeconds: "30" + # -- How often to perform the probe periodSeconds: "30" + # -- When the probe times out timeoutSeconds: "5" + # -- Minimum consecutive failures for the probe failureThreshold: "3" + # -- Minimum consecutive successes for the probe successThreshold: "1" - ## Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + # -- Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. + # More info: [container-probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) readinessProbe: + # -- Turn on and off readiness probe enabled: true + # -- Delay before readiness probe is initiated initialDelaySeconds: "30" + # -- How often to perform the probe periodSeconds: "30" + # -- When the probe times out timeoutSeconds: "5" + # -- Minimum consecutive failures for the probe failureThreshold: "3" + # -- Minimum consecutive successes for the probe successThreshold: "1" - ## PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. - ## More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + # -- PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. + # More info: [persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) persistentVolumeClaim: + # -- Set `alert.persistentVolumeClaim.enabled` to `true` to mount a new volume for `alert` enabled: false + # -- `PersistentVolumeClaim` access modes accessModes: - "ReadWriteOnce" + # -- `Alert` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning storageClassName: "-" + # -- `PersistentVolumeClaim` size storage: "20Gi" env: + # -- The jvm options for alert server JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m" service: - # annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator + # -- annotations may need to be set when want to scrapy metrics by prometheus but not install prometheus operator annotations: {} - # serviceMonitor for prometheus operator + # -- serviceMonitor for prometheus operator serviceMonitor: # -- Enable or disable alert-server serviceMonitor enabled: false - # -- @param serviceMonitor.interval interval at which metrics should be scraped + # -- serviceMonitor.interval interval at which metrics should be scraped interval: 15s - # -- @param serviceMonitor.path path of the metrics endpoint + # -- serviceMonitor.path path of the metrics endpoint path: /actuator/prometheus - # -- @param serviceMonitor.labels ServiceMonitor extra labels + # -- serviceMonitor.labels ServiceMonitor extra labels labels: {} - # -- @param serviceMonitor.annotations ServiceMonitor annotations + # -- serviceMonitor.annotations ServiceMonitor annotations annotations: {} api: - ## Enable or disable the API-Server component + # -- Enable or disable the API-Server component enabled: true - ## Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. + # -- Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1. replicas: "1" - ## The deployment strategy to use to replace existing pods with new ones. + # -- The deployment strategy to use to replace existing pods with new ones. strategy: + # -- Type of deployment. Can be "Recreate" or "RollingUpdate" type: "RollingUpdate" rollingUpdate: + # -- The maximum number of pods that can be scheduled above the desired number of pods maxSurge: "25%" + # -- The maximum number of pods that can be unavailable during the update maxUnavailable: "25%" - ## You can use annotations to attach arbitrary non-identifying metadata to objects. - ## Clients such as tools and libraries can retrieve this metadata. + # -- You can use annotations to attach arbitrary non-identifying metadata to objects. + # Clients such as tools and libraries can retrieve this metadata. annotations: {} - ## Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. - ## More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core - affinity: {} - ## 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: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ - nodeSelector: {} - ## 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. - tolerations: [] - ## Compute Resources required by this container. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container + # -- Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints. + # More info: [node-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) + affinity: { } + # -- 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](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) + nodeSelector: { } + # -- 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. + tolerations: [ ] + # -- Compute Resources required by this container. + # More info: [manage-resources-containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) resources: {} # resources: # limits: @@ -634,71 +816,89 @@ api: # requests: # memory: "1Gi" # cpu: "500m" - ## Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + + # -- Periodic probe of container liveness. Container will be restarted if the probe fails. + # More info: [container-probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) livenessProbe: + # -- Turn on and off liveness probe enabled: true + # -- Delay before liveness probe is initiated initialDelaySeconds: "30" + # -- How often to perform the probe periodSeconds: "30" + # -- When the probe times out timeoutSeconds: "5" + # -- Minimum consecutive failures for the probe failureThreshold: "3" + # -- Minimum consecutive successes for the probe successThreshold: "1" - ## Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. - ## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + # -- Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. + # More info: [container-probes](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes) readinessProbe: + # -- Turn on and off readiness probe enabled: true + # -- Delay before readiness probe is initiated initialDelaySeconds: "30" + # -- How often to perform the probe periodSeconds: "30" + # -- When the probe times out timeoutSeconds: "5" + # -- Minimum consecutive failures for the probe failureThreshold: "3" + # -- Minimum consecutive successes for the probe successThreshold: "1" - ## PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. - ## More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + # -- PersistentVolumeClaim represents a reference to a PersistentVolumeClaim in the same namespace. + # More info: [persistentvolumeclaims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) persistentVolumeClaim: + # -- Set `api.persistentVolumeClaim.enabled` to `true` to mount a new volume for `api` enabled: false + # -- `PersistentVolumeClaim` access modes accessModes: - "ReadWriteOnce" + # -- `api` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning storageClassName: "-" + # -- `PersistentVolumeClaim` size storage: "20Gi" service: - ## type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer + # -- type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer type: "ClusterIP" - ## clusterIP is the IP address of the service and is usually assigned randomly by the master + # -- clusterIP is the IP address of the service and is usually assigned randomly by the master clusterIP: "" - ## nodePort is the port on each node on which this api service is exposed when type=NodePort + # -- nodePort is the port on each node on which this api service is exposed when type=NodePort nodePort: "" - ## pythonNodePort is the port on each node on which this python api service is exposed when type=NodePort + # -- pythonNodePort is the port on each node on which this python api service is exposed when type=NodePort pythonNodePort: "" - ## externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service + # -- externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service externalIPs: [] - ## externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service, requires Type to be ExternalName + # -- externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service, requires Type to be ExternalName externalName: "" - ## loadBalancerIP when service.type is LoadBalancer. LoadBalancer will get created with the IP specified in this field + # -- loadBalancerIP when service.type is LoadBalancer. LoadBalancer will get created with the IP specified in this field loadBalancerIP: "" - ## 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 + # -- 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 annotations: {} - # serviceMonitor for prometheus operator + # -- serviceMonitor for prometheus operator serviceMonitor: # -- Enable or disable api-server serviceMonitor enabled: false - # -- @param serviceMonitor.interval interval at which metrics should be scraped + # -- serviceMonitor.interval interval at which metrics should be scraped interval: 15s - # -- @param serviceMonitor.path path of the metrics endpoint + # -- serviceMonitor.path path of the metrics endpoint path: /dolphinscheduler/actuator/prometheus - # -- @param serviceMonitor.labels ServiceMonitor extra labels + # -- serviceMonitor.labels ServiceMonitor extra labels labels: {} - # -- @param serviceMonitor.annotations ServiceMonitor annotations + # -- serviceMonitor.annotations ServiceMonitor annotations annotations: {} env: + # -- The jvm options for api server JAVA_OPTS: "-Xms512m -Xmx512m -Xmn256m" taskTypeFilter: - # -- Enable 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. + # -- Enable 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. enabled: false - # -- @param taskTypeFilter.taskType task type - # -- ref: https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-api/src/main/resources/task-type-config.yaml + # -- taskTypeFilter.taskType task type + # -- ref: [task-type-config.yaml](https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-api/src/main/resources/task-type-config.yaml) task: {} # example task sets # universal: @@ -712,10 +912,16 @@ api: ingress: + # -- Enable ingress enabled: false + # -- Ingress host host: "dolphinscheduler.org" + # -- Ingress path path: "/dolphinscheduler" + # -- Ingress annotations annotations: {} tls: + # -- Enable ingress tls enabled: false + # -- Ingress tls secret name secretName: "dolphinscheduler-tls" diff --git a/docs/docs/en/guide/installation/kubernetes.md b/docs/docs/en/guide/installation/kubernetes.md index cde75ad529..e73aa89be2 100644 --- a/docs/docs/en/guide/installation/kubernetes.md +++ b/docs/docs/en/guide/installation/kubernetes.md @@ -528,259 +528,4 @@ helm install dolphinscheduler-gpu-worker . \ ## Appendix-Configuration -| Parameter | Description | Default | -|----------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------| -| `timezone` | World time and date for cities in all time zones | `Asia/Shanghai` | -|
| | | -| `image.repository` | Docker image repository for the DolphinScheduler | `apache/dolphinscheduler` | -| `image.tag` | Docker image version for the DolphinScheduler | `latest` | -| `image.pullPolicy` | Image pull policy. Options: Always, Never, IfNotPresent | `IfNotPresent` | -| `image.pullSecret` | Image pull secret. An optional reference to secret in the same namespace to use for pulling any of the images | `nil` | -|
| | | -| `postgresql.enabled` | If not exists external PostgreSQL, by default, the DolphinScheduler will use a internal PostgreSQL | `true` | -| `postgresql.postgresqlUsername` | The username for internal PostgreSQL | `root` | -| `postgresql.postgresqlPassword` | The password for internal PostgreSQL | `root` | -| `postgresql.postgresqlDatabase` | The database for internal PostgreSQL | `dolphinscheduler` | -| `postgresql.persistence.enabled` | Set `postgresql.persistence.enabled` to `true` to mount a new volume for internal PostgreSQL | `false` | -| `postgresql.persistence.size` | `PersistentVolumeClaim` size | `20Gi` | -| `postgresql.persistence.storageClass` | PostgreSQL data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `minio.enabled` | Deploy minio and configure it as the default storage for DolphinScheduler, note this is for demo only, not for production. | `false` | -| `externalDatabase.type` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database type will use it | `postgresql` | -| `externalDatabase.driver` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database driver will use it | `org.postgresql.Driver` | -| `externalDatabase.host` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database host will use it | `localhost` | -| `externalDatabase.port` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database port will use it | `5432` | -| `externalDatabase.username` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database username will use it | `root` | -| `externalDatabase.password` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database password will use it | `root` | -| `externalDatabase.database` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database database will use it | `dolphinscheduler` | -| `externalDatabase.params` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database params will use it | `characterEncoding=utf8` | -|
| | | -| `zookeeper.enabled` | If not exists external ZooKeeper, by default, the DolphinScheduler will use a internal ZooKeeper | `true` | -| `zookeeper.service.port` | The port of zookeeper | `2181` | -| `zookeeper.fourlwCommandsWhitelist` | A list of comma separated Four Letter Words commands to use | `srvr,ruok,wchs,cons` | -| `zookeeper.persistence.enabled` | Set `zookeeper.persistence.enabled` to `true` to mount a new volume for internal ZooKeeper | `false` | -| `zookeeper.persistence.size` | `PersistentVolumeClaim` size | `20Gi` | -| `zookeeper.persistence.storageClass` | ZooKeeper data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `registryEtcd.enabled` | If you want to use Etcd for your registry center, change this value to true. And set `zookeeper.enabled` to false | `false` | -| `registryEtcd.endpoints` | Etcd endpoints | `""` | -| `registryEtcd.namespace` | Etcd namespace | `dolphinscheduler` | -| `registryEtcd.user` | Etcd user | `""` | -| `registryEtcd.passWord` | Etcd passWord | `""` | -| `registryEtcd.authority` | Etcd authority | `""` | -| `registryEtcd.ssl.enabled` | If your Etcd server has configured with ssl, change this value to true. About certification files you can see [here](https://github.com/etcd-io/jetcd/blob/main/docs/SslConfig.md) for how to convert. | `false` | -| `registryEtcd.ssl.certFile` | CertFile file path | `etcd-certs/ca.crt` | -| `registryEtcd.ssl.keyCertChainFile` | keyCertChainFile file path | `etcd-certs/client.crt` | -| `registryEtcd.ssl.keyFile` | keyFile file path | `etcd-certs/client.pem` | -| `registryJdbc.enabled` | If you want to use JDbc for your registry center, change this value to true. And set `zookeeper.enabled` and `registryEtcd.enabled` to false | `false` | -| `registryJdbc.termRefreshInterval` | Used to schedule refresh the ephemeral data/ lock | `2s` | -| `registryJdbc.termExpireTimes` | Used to calculate the expire time | `3` | -| `registryJdbc.hikariConfig.driverClassName` | 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 | `com.mysql.cj.jdbc.Driver` | -| `registryJdbc.hikariConfig.jdbcurl` | 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 | `jdbc:mysql://` | -| `registryJdbc.hikariConfig.username` | 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.password` | 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 | `""` | -| `externalRegistry.registryPluginName` | If exists external registry and set `zookeeper.enable` && `registryEtcd.enabled` && `registryJdbc.enabled` to `false`, specify the external registry plugin name | `zookeeper` | -| `externalRegistry.registryServers` | If exists external registry and set `zookeeper.enable` && `registryEtcd.enabled` && `registryJdbc.enabled` to `false`, specify the external registry servers | `127.0.0.1:2181` | -|
| | `PASSWORD` | -| `security.authentication.type` | Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO) | `ldap://ldap.forumsys.com:389/` | -| `security.authentication.ldap.urls` | LDAP urls | `dc=example,dc=com` | -| `security.authentication.ldap.basedn` | LDAP base dn | `cn=read-only-admin,dc=example,dc=com` | -| `security.authentication.ldap.username` | LDAP username | `password` | -| `security.authentication.ldap.password` | LDAP password | `read-only-admin` | -| `security.authentication.ldap.user.admin` | Admin user account when you log-in with LDAP | `uid` | -| `security.authentication.ldap.user.identityattribute` | LDAP user identity attribute | `mail` | -| `security.authentication.ldap.user.emailattribute` | LDAP user email attribute | `CREATE` | -| `security.authentication.ldap.user.notexistaction` | action when ldap user is not exist,default value: CREATE. Optional values include(CREATE,DENY) | `false` | -| `security.authentication.ldap.ssl.enable` | LDAP ssl switch | `false` | -| `security.authentication.ldap.ssl.truststore` | LDAP jks file absolute path, do not change this value | `/opt/ldapkeystore.jks` | -| `security.authentication.ldap.ssl.jksbase64content` | LDAP jks file base64 content | `""` | -| `security.authentication.ldap.ssl.truststorepassword` | LDAP jks password | `""` | -|
| | | -| `common.configmap.DOLPHINSCHEDULER_OPTS` | The jvm options for dolphinscheduler, suitable for all servers | `""` | -| `common.configmap.DATA_BASEDIR_PATH` | User data directory path, self configuration, please make sure the directory exists and have read write permissions | `/tmp/dolphinscheduler` | -| `common.configmap.RESOURCE_STORAGE_TYPE` | Resource storage type: HDFS, S3, OSS, GCS, ABS, NONE | `HDFS` | -| `common.configmap.RESOURCE_UPLOAD_PATH` | Resource store on HDFS/S3 path, please make sure the directory exists on hdfs and have read write permissions | `/dolphinscheduler` | -| `common.configmap.FS_DEFAULT_FS` | Resource storage file system like `file:///`, `hdfs://mycluster:8020` or `s3a://dolphinscheduler` | `file:///` | -| `common.configmap.FS_S3A_ENDPOINT` | S3 endpoint when `common.configmap.RESOURCE_STORAGE_TYPE` is set to `S3` | `s3.xxx.amazonaws.com` | -| `common.configmap.FS_S3A_ACCESS_KEY` | S3 access key when `common.configmap.RESOURCE_STORAGE_TYPE` is set to `S3` | `xxxxxxx` | -| `common.configmap.FS_S3A_SECRET_KEY` | S3 secret key when `common.configmap.RESOURCE_STORAGE_TYPE` is set to `S3` | `xxxxxxx` | -| `common.configmap.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE` | Whether to startup kerberos | `false` | -| `common.configmap.JAVA_SECURITY_KRB5_CONF_PATH` | The java.security.krb5.conf path | `/opt/krb5.conf` | -| `common.configmap.LOGIN_USER_KEYTAB_USERNAME` | The login user from keytab username | `hdfs@HADOOP.COM` | -| `common.configmap.LOGIN_USER_KEYTAB_PATH` | The login user from keytab path | `/opt/hdfs.keytab` | -| `common.configmap.KERBEROS_EXPIRE_TIME` | The kerberos expire time, the unit is hour | `2` | -| `common.configmap.HDFS_ROOT_USER` | The HDFS root user who must have the permission to create directories under the HDFS root path | `hdfs` | -| `common.configmap.RESOURCE_MANAGER_HTTPADDRESS_PORT` | Set resource manager httpaddress port for yarn | `8088` | -| `common.configmap.YARN_RESOURCEMANAGER_HA_RM_IDS` | If resourcemanager HA is enabled, please set the HA IPs | `nil` | -| `common.configmap.YARN_APPLICATION_STATUS_ADDRESS` | If resourcemanager is single, you only need to replace ds1 to actual resourcemanager hostname, otherwise keep default | `http://ds1:%s/ws/v1/cluster/apps/%s` | -| `common.configmap.HADOOP_HOME` | Set `HADOOP_HOME` for DolphinScheduler's task environment | `/opt/soft/hadoop` | -| `common.configmap.HADOOP_CONF_DIR` | Set `HADOOP_CONF_DIR` for DolphinScheduler's task environment | `/opt/soft/hadoop/etc/hadoop` | -| `common.configmap.SPARK_HOME` | Set `SPARK_HOME` for DolphinScheduler's task environment | `/opt/soft/spark` | -| `common.configmap.PYTHON_LAUNCHER` | Set `PYTHON_LAUNCHER` for DolphinScheduler's task environment | `/usr/bin/python` | -| `common.configmap.JAVA_HOME` | Set `JAVA_HOME` for DolphinScheduler's task environment | `/opt/java/openjdk` | -| `common.configmap.HIVE_HOME` | Set `HIVE_HOME` for DolphinScheduler's task environment | `/opt/soft/hive` | -| `common.configmap.FLINK_HOME` | Set `FLINK_HOME` for DolphinScheduler's task environment | `/opt/soft/flink` | -| `common.configmap.DATAX_LAUNCHER` | Set `DATAX_LAUNCHER` for DolphinScheduler's task environment | `/opt/soft/datax` | -| `common.sharedStoragePersistence.enabled` | Set `common.sharedStoragePersistence.enabled` to `true` to mount a shared storage volume for Hadoop, Spark binary and etc | `false` | -| `common.sharedStoragePersistence.mountPath` | The mount path for the shared storage volume | `/opt/soft` | -| `common.sharedStoragePersistence.accessModes` | `PersistentVolumeClaim` access modes, must be `ReadWriteMany` | `[ReadWriteMany]` | -| `common.sharedStoragePersistence.storageClassName` | Shared Storage persistent volume storage class, must support the access mode: ReadWriteMany | `-` | -| `common.sharedStoragePersistence.storage` | `PersistentVolumeClaim` size | `20Gi` | -| `common.fsFileResourcePersistence.enabled` | Set `common.fsFileResourcePersistence.enabled` to `true` to mount a new file resource volume for `api` and `worker` | `false` | -| `common.fsFileResourcePersistence.accessModes` | `PersistentVolumeClaim` access modes, must be `ReadWriteMany` | `[ReadWriteMany]` | -| `common.fsFileResourcePersistence.storageClassName` | Resource persistent volume storage class, must support the access mode: ReadWriteMany | `-` | -| `common.fsFileResourcePersistence.storage` | `PersistentVolumeClaim` size | `20Gi` | -|
| | | -| `master.enabled` | Enable or disable the Master component | true | -| `master.podManagementPolicy` | PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down | `Parallel` | -| `master.replicas` | Replicas is the desired number of replicas of the given Template | `3` | -| `master.annotations` | The `annotations` for master server | `{}` | -| `master.affinity` | If specified, the pod's scheduling constraints | `{}` | -| `master.nodeSelector` | NodeSelector is a selector which must be true for the pod to fit on a node | `{}` | -| `master.tolerations` | If specified, the pod's tolerations | `{}` | -| `master.resources` | The `resource` limit and request config for master server | `{}` | -| `master.env.JAVA_OPTS` | The jvm options for master server | `-Xms1g -Xmx1g -Xmn512m` | -| `master.env.MASTER_EXEC_THREADS` | Master execute thread number to limit process instances | `100` | -| `master.env.MASTER_EXEC_TASK_NUM` | Master execute task number in parallel per process instance | `20` | -| `master.env.MASTER_DISPATCH_TASK_NUM` | Master dispatch task number per batch | `3` | -| `master.env.MASTER_HOST_SELECTOR` | Master host selector to select a suitable worker, optional values include Random, RoundRobin, LowerWeight | `LowerWeight` | -| `master.env.MASTER_HEARTBEAT_INTERVAL` | Master heartbeat interval, the unit is second | `10s` | -| `master.env.MASTER_TASK_COMMIT_RETRYTIMES` | Master commit task retry times | `5` | -| `master.env.MASTER_TASK_COMMIT_INTERVAL` | master commit task interval, the unit is second | `1s` | -| `master.env.MASTER_MAX_CPULOAD_AVG` | Master max cpuload avg, only higher than the system cpu load average, master server can schedule | `-1` (`the number of cpu cores * 2`) | -| `master.env.MASTER_RESERVED_MEMORY` | Master reserved memory, only lower than system available memory, master server can schedule, the unit is G | `0.3` | -| `master.livenessProbe.enabled` | Turn on and off liveness probe | `true` | -| `master.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | -| `master.livenessProbe.periodSeconds` | How often to perform the probe | `30` | -| `master.livenessProbe.timeoutSeconds` | When the probe times out | `5` | -| `master.livenessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `master.livenessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `master.readinessProbe.enabled` | Turn on and off readiness probe | `true` | -| `master.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` | -| `master.readinessProbe.periodSeconds` | How often to perform the probe | `30` | -| `master.readinessProbe.timeoutSeconds` | When the probe times out | `5` | -| `master.readinessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `master.readinessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `master.persistentVolumeClaim.enabled` | Set `master.persistentVolumeClaim.enabled` to `true` to mount a new volume for `master` | `false` | -| `master.persistentVolumeClaim.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `master.persistentVolumeClaim.storageClassName` | `Master` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `master.persistentVolumeClaim.storage` | `PersistentVolumeClaim` size | `20Gi` | -|
| | | -| `worker.enabled` | Enable or disable the Worker component | true | -| `worker.podManagementPolicy` | PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down | `Parallel` | -| `worker.replicas` | Replicas is the desired number of replicas of the given Template | `3` | -| `worker.annotations` | The `annotations` for worker server | `{}` | -| `worker.affinity` | If specified, the pod's scheduling constraints | `{}` | -| `worker.nodeSelector` | NodeSelector is a selector which must be true for the pod to fit on a node | `{}` | -| `worker.tolerations` | If specified, the pod's tolerations | `{}` | -| `worker.resources` | The `resource` limit and request config for worker server | `{}` | -| `worker.env.WORKER_EXEC_THREADS` | Worker execute thread number to limit task instances | `100` | -| `worker.env.WORKER_HEARTBEAT_INTERVAL` | Worker heartbeat interval, the unit is second | `10s` | -| `worker.env.WORKER_MAX_CPU_LOAD_AVG` | Worker max cpu load avg, only higher than the system cpu load average, worker server can be dispatched tasks | `-1` (`the number of cpu cores * 2`) | -| `worker.env.WORKER_RESERVED_MEMORY` | Worker reserved memory, only lower than system available memory, worker server can be dispatched tasks, the unit is G | `0.3` | -| `worker.env.HOST_WEIGHT` | Worker host weight to dispatch tasks | `100` | -| `worker.livenessProbe.enabled` | Turn on and off liveness probe | `true` | -| `worker.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | -| `worker.livenessProbe.periodSeconds` | How often to perform the probe | `30` | -| `worker.livenessProbe.timeoutSeconds` | When the probe times out | `5` | -| `worker.livenessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `worker.livenessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `worker.readinessProbe.enabled` | Turn on and off readiness probe | `true` | -| `worker.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` | -| `worker.readinessProbe.periodSeconds` | How often to perform the probe | `30` | -| `worker.readinessProbe.timeoutSeconds` | When the probe times out | `5` | -| `worker.readinessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `worker.readinessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `worker.persistentVolumeClaim.enabled` | Set `worker.persistentVolumeClaim.enabled` to `true` to enable `persistentVolumeClaim` for `worker` | `false` | -| `worker.persistentVolumeClaim.dataPersistentVolume.enabled` | Set `worker.persistentVolumeClaim.dataPersistentVolume.enabled` to `true` to mount a data volume for `worker` | `false` | -| `worker.persistentVolumeClaim.dataPersistentVolume.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `worker.persistentVolumeClaim.dataPersistentVolume.storageClassName` | `Worker` data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `worker.persistentVolumeClaim.dataPersistentVolume.storage` | `PersistentVolumeClaim` size | `20Gi` | -| `worker.persistentVolumeClaim.logsPersistentVolume.enabled` | Set `worker.persistentVolumeClaim.logsPersistentVolume.enabled` to `true` to mount a logs volume for `worker` | `false` | -| `worker.persistentVolumeClaim.logsPersistentVolume.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `worker.persistentVolumeClaim.logsPersistentVolume.storageClassName` | `Worker` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `worker.persistentVolumeClaim.logsPersistentVolume.storage` | `PersistentVolumeClaim` size | `20Gi` | -|
| | | -| `alert.enabled` | Enable or disable the Alert-Server component | true | -| `alert.replicas` | Replicas is the desired number of replicas of the given Template | `1` | -| `alert.strategy.type` | Type of deployment. Can be "Recreate" or "RollingUpdate" | `RollingUpdate` | -| `alert.strategy.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods | `25%` | -| `alert.strategy.rollingUpdate.maxUnavailable` | The maximum number of pods that can be unavailable during the update | `25%` | -| `alert.annotations` | The `annotations` for alert server | `{}` | -| `alert.affinity` | If specified, the pod's scheduling constraints | `{}` | -| `alert.nodeSelector` | NodeSelector is a selector which must be true for the pod to fit on a node | `{}` | -| `alert.tolerations` | If specified, the pod's tolerations | `{}` | -| `alert.resources` | The `resource` limit and request config for alert server | `{}` | -| `alert.configmap.ALERT_SERVER_OPTS` | The jvm options for alert server | `-Xms512m -Xmx512m -Xmn256m` | -| `alert.configmap.XLS_FILE_PATH` | XLS file path | `/tmp/xls` | -| `alert.configmap.MAIL_SERVER_HOST` | Mail `SERVER HOST ` | `nil` | -| `alert.configmap.MAIL_SERVER_PORT` | Mail `SERVER PORT` | `nil` | -| `alert.configmap.MAIL_SENDER` | Mail `SENDER` | `nil` | -| `alert.configmap.MAIL_USER` | Mail `USER` | `nil` | -| `alert.configmap.MAIL_PASSWD` | Mail `PASSWORD` | `nil` | -| `alert.configmap.MAIL_SMTP_STARTTLS_ENABLE` | Mail `SMTP STARTTLS` enable | `false` | -| `alert.configmap.MAIL_SMTP_SSL_ENABLE` | Mail `SMTP SSL` enable | `false` | -| `alert.configmap.MAIL_SMTP_SSL_TRUST` | Mail `SMTP SSL TRUST` | `nil` | -| `alert.configmap.ENTERPRISE_WECHAT_ENABLE` | `Enterprise Wechat` enable | `false` | -| `alert.configmap.ENTERPRISE_WECHAT_CORP_ID` | `Enterprise Wechat` corp id | `nil` | -| `alert.configmap.ENTERPRISE_WECHAT_SECRET` | `Enterprise Wechat` secret | `nil` | -| `alert.configmap.ENTERPRISE_WECHAT_AGENT_ID` | `Enterprise Wechat` agent id | `nil` | -| `alert.configmap.ENTERPRISE_WECHAT_USERS` | `Enterprise Wechat` users | `nil` | -| `alert.livenessProbe.enabled` | Turn on and off liveness probe | `true` | -| `alert.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | -| `alert.livenessProbe.periodSeconds` | How often to perform the probe | `30` | -| `alert.livenessProbe.timeoutSeconds` | When the probe times out | `5` | -| `alert.livenessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `alert.livenessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `alert.readinessProbe.enabled` | Turn on and off readiness probe | `true` | -| `alert.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` | -| `alert.readinessProbe.periodSeconds` | How often to perform the probe | `30` | -| `alert.readinessProbe.timeoutSeconds` | When the probe times out | `5` | -| `alert.readinessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `alert.readinessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `alert.persistentVolumeClaim.enabled` | Set `alert.persistentVolumeClaim.enabled` to `true` to mount a new volume for `alert` | `false` | -| `alert.persistentVolumeClaim.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `alert.persistentVolumeClaim.storageClassName` | `Alert` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `alert.persistentVolumeClaim.storage` | `PersistentVolumeClaim` size | `20Gi` | -|
| | | -| `api.enabled` | Enable or disable the API-Server component | true | -| `api.replicas` | Replicas is the desired number of replicas of the given Template | `1` | -| `api.strategy.type` | Type of deployment. Can be "Recreate" or "RollingUpdate" | `RollingUpdate` | -| `api.strategy.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods | `25%` | -| `api.strategy.rollingUpdate.maxUnavailable` | The maximum number of pods that can be unavailable during the update | `25%` | -| `api.annotations` | The `annotations` for api server | `{}` | -| `api.affinity` | If specified, the pod's scheduling constraints | `{}` | -| `api.nodeSelector` | NodeSelector is a selector which must be true for the pod to fit on a node | `{}` | -| `api.tolerations` | If specified, the pod's tolerations | `{}` | -| `api.resources` | The `resource` limit and request config for api server | `{}` | -| `api.configmap.API_SERVER_OPTS` | The jvm options for api server | `-Xms512m -Xmx512m -Xmn256m` | -| `api.livenessProbe.enabled` | Turn on and off liveness probe | `true` | -| `api.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | -| `api.livenessProbe.periodSeconds` | How often to perform the probe | `30` | -| `api.livenessProbe.timeoutSeconds` | When the probe times out | `5` | -| `api.livenessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `api.livenessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `api.readinessProbe.enabled` | Turn on and off readiness probe | `true` | -| `api.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` | -| `api.readinessProbe.periodSeconds` | How often to perform the probe | `30` | -| `api.readinessProbe.timeoutSeconds` | When the probe times out | `5` | -| `api.readinessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `api.readinessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `api.persistentVolumeClaim.enabled` | Set `api.persistentVolumeClaim.enabled` to `true` to mount a new volume for `api` | `false` | -| `api.persistentVolumeClaim.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `api.persistentVolumeClaim.storageClassName` | `api` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `api.persistentVolumeClaim.storage` | `PersistentVolumeClaim` size | `20Gi` | -| `api.service.type` | `type` determines how the Service is exposed. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer | `ClusterIP` | -| `api.service.clusterIP` | `clusterIP` is the IP address of the service and is usually assigned randomly by the master | `nil` | -| `api.service.nodePort` | `nodePort` is the port on each node on which this service is exposed when type=NodePort | `nil` | -| `api.service.externalIPs` | `externalIPs` is a list of IP addresses for which nodes in the cluster will also accept traffic for this service | `[]` | -| `api.service.externalName` | `externalName` is the external reference that kubedns or equivalent will return as a CNAME record for this service | `nil` | -| `api.service.loadBalancerIP` | `loadBalancerIP` when service.type is LoadBalancer. LoadBalancer will get created with the IP specified in this field | `nil` | -| `api.service.annotations` | `annotations` may need to be set when service.type is LoadBalancer | `{}` | -| `api.taskTypeFilter.enabled` | Enable 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. | `false` | -| `api.taskTypeFilter.task` | Task type ref: [task-type-config.yaml](https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-api/src/main/resources/task-type-config.yaml) | `{}` | -|
| | | -| `ingress.enabled` | Enable ingress | `false` | -| `ingress.host` | Ingress host | `dolphinscheduler.org` | -| `ingress.path` | Ingress path | `/dolphinscheduler` | -| `ingress.tls.enabled` | Enable ingress tls | `false` | -| `ingress.tls.secretName` | Ingress tls secret name | `dolphinscheduler-tls` | - +Ref: [DolphinScheduler Helm Charts](https://github.com/apache/dolphinscheduler/blob/dev/deploy/kubernetes/dolphinscheduler/README.md) diff --git a/docs/docs/zh/guide/installation/kubernetes.md b/docs/docs/zh/guide/installation/kubernetes.md index f2156f36bb..5998789d99 100644 --- a/docs/docs/zh/guide/installation/kubernetes.md +++ b/docs/docs/zh/guide/installation/kubernetes.md @@ -527,259 +527,4 @@ helm install dolphinscheduler-gpu-worker . \ ## 附录-配置 -| Parameter | Description | Default | -|----------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------| -| `timezone` | World time and date for cities in all time zones | `Asia/Shanghai` | -|
| | | -| `image.repository` | Docker image repository for the DolphinScheduler | `apache/dolphinscheduler` | -| `image.tag` | Docker image version for the DolphinScheduler | `latest` | -| `image.pullPolicy` | Image pull policy. Options: Always, Never, IfNotPresent | `IfNotPresent` | -| `image.pullSecret` | Image pull secret. An optional reference to secret in the same namespace to use for pulling any of the images | `nil` | -|
| | | -| `postgresql.enabled` | If not exists external PostgreSQL, by default, the DolphinScheduler will use a internal PostgreSQL | `true` | -| `postgresql.postgresqlUsername` | The username for internal PostgreSQL | `root` | -| `postgresql.postgresqlPassword` | The password for internal PostgreSQL | `root` | -| `postgresql.postgresqlDatabase` | The database for internal PostgreSQL | `dolphinscheduler` | -| `postgresql.persistence.enabled` | Set `postgresql.persistence.enabled` to `true` to mount a new volume for internal PostgreSQL | `false` | -| `postgresql.persistence.size` | `PersistentVolumeClaim` size | `20Gi` | -| `postgresql.persistence.storageClass` | PostgreSQL data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `minio.enabled` | Deploy minio and configure it as the default storage for DolphinScheduler, note this is for demo only, not for production. | `false` | -| `externalDatabase.type` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database type will use it | `postgresql` | -| `externalDatabase.driver` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database driver will use it | `org.postgresql.Driver` | -| `externalDatabase.host` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database host will use it | `localhost` | -| `externalDatabase.port` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database port will use it | `5432` | -| `externalDatabase.username` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database username will use it | `root` | -| `externalDatabase.password` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database password will use it | `root` | -| `externalDatabase.database` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database database will use it | `dolphinscheduler` | -| `externalDatabase.params` | If exists external PostgreSQL, and set `postgresql.enabled` value to false. DolphinScheduler's database params will use it | `characterEncoding=utf8` | -|
| | | -| `zookeeper.enabled` | If not exists external ZooKeeper, by default, the DolphinScheduler will use a internal ZooKeeper | `true` | -| `zookeeper.service.port` | The port of zookeeper | `2181` | -| `zookeeper.fourlwCommandsWhitelist` | A list of comma separated Four Letter Words commands to use | `srvr,ruok,wchs,cons` | -| `zookeeper.persistence.enabled` | Set `zookeeper.persistence.enabled` to `true` to mount a new volume for internal ZooKeeper | `false` | -| `zookeeper.persistence.size` | `PersistentVolumeClaim` size | `20Gi` | -| `zookeeper.persistence.storageClass` | ZooKeeper data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `registryEtcd.enabled` | If you want to use Etcd for your registry center, change this value to true. And set `zookeeper.enabled` to false | `false` | -| `registryEtcd.endpoints` | Etcd endpoints | `""` | -| `registryEtcd.namespace` | Etcd namespace | `dolphinscheduler` | -| `registryEtcd.user` | Etcd user | `""` | -| `registryEtcd.passWord` | Etcd passWord | `""` | -| `registryEtcd.authority` | Etcd authority | `""` | -| `registryEtcd.ssl.enabled` | If your Etcd server has configured with ssl, change this value to true. About certification files you can see [here](https://github.com/etcd-io/jetcd/blob/main/docs/SslConfig.md) for how to convert. | `false` | -| `registryEtcd.ssl.certFile` | CertFile file path | `etcd-certs/ca.crt` | -| `registryEtcd.ssl.keyCertChainFile` | keyCertChainFile file path | `etcd-certs/client.crt` | -| `registryEtcd.ssl.keyFile` | keyFile file path | `etcd-certs/client.pem` | -| `registryJdbc.enabled` | If you want to use JDbc for your registry center, change this value to true. And set `zookeeper.enabled` and `registryEtcd.enabled` to false | `false` | -| `registryJdbc.termRefreshInterval` | Used to schedule refresh the ephemeral data/ lock | `2s` | -| `registryJdbc.termExpireTimes` | Used to calculate the expire time | `3` | -| `registryJdbc.hikariConfig.driverClassName` | 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 | `com.mysql.cj.jdbc.Driver` | -| `registryJdbc.hikariConfig.jdbcurl` | 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 | `jdbc:mysql://` | -| `registryJdbc.hikariConfig.username` | 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.password` | 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 | `""` | -| `externalRegistry.registryPluginName` | If exists external registry and set `zookeeper.enable` && `registryEtcd.enabled` && `registryJdbc.enabled` to `false`, specify the external registry plugin name | `zookeeper` | -| `externalRegistry.registryServers` | If exists external registry and set `zookeeper.enable` && `registryEtcd.enabled` && `registryJdbc.enabled` to `false`, specify the external registry servers | `127.0.0.1:2181` | -|
| | `PASSWORD` | -| `security.authentication.type` | Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO) | `ldap://ldap.forumsys.com:389/` | -| `security.authentication.ldap.urls` | LDAP urls | `dc=example,dc=com` | -| `security.authentication.ldap.basedn` | LDAP base dn | `cn=read-only-admin,dc=example,dc=com` | -| `security.authentication.ldap.username` | LDAP username | `password` | -| `security.authentication.ldap.password` | LDAP password | `read-only-admin` | -| `security.authentication.ldap.user.admin` | Admin user account when you log-in with LDAP | `uid` | -| `security.authentication.ldap.user.identityattribute` | LDAP user identity attribute | `mail` | -| `security.authentication.ldap.user.emailattribute` | LDAP user email attribute | `CREATE` | -| `security.authentication.ldap.user.notexistaction` | action when ldap user is not exist,default value: CREATE. Optional values include(CREATE,DENY) | `false` | -| `security.authentication.ldap.ssl.enable` | LDAP ssl switch | `false` | -| `security.authentication.ldap.ssl.truststore` | LDAP jks file absolute path, do not change this value | `/opt/ldapkeystore.jks` | -| `security.authentication.ldap.ssl.jksbase64content` | LDAP jks file base64 content | `""` | -| `security.authentication.ldap.ssl.truststorepassword` | LDAP jks password | `""` | -|
| | | -| `common.configmap.DOLPHINSCHEDULER_OPTS` | The jvm options for dolphinscheduler, suitable for all servers | `""` | -| `common.configmap.DATA_BASEDIR_PATH` | User data directory path, self configuration, please make sure the directory exists and have read write permissions | `/tmp/dolphinscheduler` | -| `common.configmap.RESOURCE_STORAGE_TYPE` | Resource storage type: HDFS, S3, OSS, GCS, ABS, NONE | `HDFS` | -| `common.configmap.RESOURCE_UPLOAD_PATH` | Resource store on HDFS/S3 path, please make sure the directory exists on hdfs and have read write permissions | `/dolphinscheduler` | -| `common.configmap.FS_DEFAULT_FS` | Resource storage file system like `file:///`, `hdfs://mycluster:8020` or `s3a://dolphinscheduler` | `file:///` | -| `common.configmap.FS_S3A_ENDPOINT` | S3 endpoint when `common.configmap.RESOURCE_STORAGE_TYPE` is set to `S3` | `s3.xxx.amazonaws.com` | -| `common.configmap.FS_S3A_ACCESS_KEY` | S3 access key when `common.configmap.RESOURCE_STORAGE_TYPE` is set to `S3` | `xxxxxxx` | -| `common.configmap.FS_S3A_SECRET_KEY` | S3 secret key when `common.configmap.RESOURCE_STORAGE_TYPE` is set to `S3` | `xxxxxxx` | -| `common.configmap.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE` | Whether to startup kerberos | `false` | -| `common.configmap.JAVA_SECURITY_KRB5_CONF_PATH` | The java.security.krb5.conf path | `/opt/krb5.conf` | -| `common.configmap.LOGIN_USER_KEYTAB_USERNAME` | The login user from keytab username | `hdfs@HADOOP.COM` | -| `common.configmap.LOGIN_USER_KEYTAB_PATH` | The login user from keytab path | `/opt/hdfs.keytab` | -| `common.configmap.KERBEROS_EXPIRE_TIME` | The kerberos expire time, the unit is hour | `2` | -| `common.configmap.HDFS_ROOT_USER` | The HDFS root user who must have the permission to create directories under the HDFS root path | `hdfs` | -| `common.configmap.RESOURCE_MANAGER_HTTPADDRESS_PORT` | Set resource manager httpaddress port for yarn | `8088` | -| `common.configmap.YARN_RESOURCEMANAGER_HA_RM_IDS` | If resourcemanager HA is enabled, please set the HA IPs | `nil` | -| `common.configmap.YARN_APPLICATION_STATUS_ADDRESS` | If resourcemanager is single, you only need to replace ds1 to actual resourcemanager hostname, otherwise keep default | `http://ds1:%s/ws/v1/cluster/apps/%s` | -| `common.configmap.HADOOP_HOME` | Set `HADOOP_HOME` for DolphinScheduler's task environment | `/opt/soft/hadoop` | -| `common.configmap.HADOOP_CONF_DIR` | Set `HADOOP_CONF_DIR` for DolphinScheduler's task environment | `/opt/soft/hadoop/etc/hadoop` | -| `common.configmap.SPARK_HOME` | Set `SPARK_HOME` for DolphinScheduler's task environment | `/opt/soft/spark` | -| `common.configmap.PYTHON_LAUNCHER` | Set `PYTHON_LAUNCHER` for DolphinScheduler's task environment | `/usr/bin/python` | -| `common.configmap.JAVA_HOME` | Set `JAVA_HOME` for DolphinScheduler's task environment | `/opt/java/openjdk` | -| `common.configmap.HIVE_HOME` | Set `HIVE_HOME` for DolphinScheduler's task environment | `/opt/soft/hive` | -| `common.configmap.FLINK_HOME` | Set `FLINK_HOME` for DolphinScheduler's task environment | `/opt/soft/flink` | -| `common.configmap.DATAX_LAUNCHER` | Set `DATAX_LAUNCHER` for DolphinScheduler's task environment | `/opt/soft/datax` | -| `common.sharedStoragePersistence.enabled` | Set `common.sharedStoragePersistence.enabled` to `true` to mount a shared storage volume for Hadoop, Spark binary and etc | `false` | -| `common.sharedStoragePersistence.mountPath` | The mount path for the shared storage volume | `/opt/soft` | -| `common.sharedStoragePersistence.accessModes` | `PersistentVolumeClaim` access modes, must be `ReadWriteMany` | `[ReadWriteMany]` | -| `common.sharedStoragePersistence.storageClassName` | Shared Storage persistent volume storage class, must support the access mode: ReadWriteMany | `-` | -| `common.sharedStoragePersistence.storage` | `PersistentVolumeClaim` size | `20Gi` | -| `common.fsFileResourcePersistence.enabled` | Set `common.fsFileResourcePersistence.enabled` to `true` to mount a new file resource volume for `api` and `worker` | `false` | -| `common.fsFileResourcePersistence.accessModes` | `PersistentVolumeClaim` access modes, must be `ReadWriteMany` | `[ReadWriteMany]` | -| `common.fsFileResourcePersistence.storageClassName` | Resource persistent volume storage class, must support the access mode: ReadWriteMany | `-` | -| `common.fsFileResourcePersistence.storage` | `PersistentVolumeClaim` size | `20Gi` | -|
| | | -| `master.enabled` | Enable or disable the Master component | true | -| `master.podManagementPolicy` | PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down | `Parallel` | -| `master.replicas` | Replicas is the desired number of replicas of the given Template | `3` | -| `master.annotations` | The `annotations` for master server | `{}` | -| `master.affinity` | If specified, the pod's scheduling constraints | `{}` | -| `master.nodeSelector` | NodeSelector is a selector which must be true for the pod to fit on a node | `{}` | -| `master.tolerations` | If specified, the pod's tolerations | `{}` | -| `master.resources` | The `resource` limit and request config for master server | `{}` | -| `master.env.JAVA_OPTS` | The jvm options for master server | `-Xms1g -Xmx1g -Xmn512m` | -| `master.env.MASTER_EXEC_THREADS` | Master execute thread number to limit process instances | `100` | -| `master.env.MASTER_EXEC_TASK_NUM` | Master execute task number in parallel per process instance | `20` | -| `master.env.MASTER_DISPATCH_TASK_NUM` | Master dispatch task number per batch | `3` | -| `master.env.MASTER_HOST_SELECTOR` | Master host selector to select a suitable worker, optional values include Random, RoundRobin, LowerWeight | `LowerWeight` | -| `master.env.MASTER_HEARTBEAT_INTERVAL` | Master heartbeat interval, the unit is second | `10s` | -| `master.env.MASTER_TASK_COMMIT_RETRYTIMES` | Master commit task retry times | `5` | -| `master.env.MASTER_TASK_COMMIT_INTERVAL` | master commit task interval, the unit is second | `1s` | -| `master.env.MASTER_MAX_CPULOAD_AVG` | Master max cpuload avg, only higher than the system cpu load average, master server can schedule | `-1` (`the number of cpu cores * 2`) | -| `master.env.MASTER_RESERVED_MEMORY` | Master reserved memory, only lower than system available memory, master server can schedule, the unit is G | `0.3` | -| `master.livenessProbe.enabled` | Turn on and off liveness probe | `true` | -| `master.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | -| `master.livenessProbe.periodSeconds` | How often to perform the probe | `30` | -| `master.livenessProbe.timeoutSeconds` | When the probe times out | `5` | -| `master.livenessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `master.livenessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `master.readinessProbe.enabled` | Turn on and off readiness probe | `true` | -| `master.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` | -| `master.readinessProbe.periodSeconds` | How often to perform the probe | `30` | -| `master.readinessProbe.timeoutSeconds` | When the probe times out | `5` | -| `master.readinessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `master.readinessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `master.persistentVolumeClaim.enabled` | Set `master.persistentVolumeClaim.enabled` to `true` to mount a new volume for `master` | `false` | -| `master.persistentVolumeClaim.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `master.persistentVolumeClaim.storageClassName` | `Master` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `master.persistentVolumeClaim.storage` | `PersistentVolumeClaim` size | `20Gi` | -|
| | | -| `worker.enabled` | Enable or disable the Worker component | true | -| `worker.podManagementPolicy` | PodManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down | `Parallel` | -| `worker.replicas` | Replicas is the desired number of replicas of the given Template | `3` | -| `worker.annotations` | The `annotations` for worker server | `{}` | -| `worker.affinity` | If specified, the pod's scheduling constraints | `{}` | -| `worker.nodeSelector` | NodeSelector is a selector which must be true for the pod to fit on a node | `{}` | -| `worker.tolerations` | If specified, the pod's tolerations | `{}` | -| `worker.resources` | The `resource` limit and request config for worker server | `{}` | -| `worker.env.WORKER_EXEC_THREADS` | Worker execute thread number to limit task instances | `100` | -| `worker.env.WORKER_HEARTBEAT_INTERVAL` | Worker heartbeat interval, the unit is second | `10s` | -| `worker.env.WORKER_MAX_CPU_LOAD_AVG` | Worker max cpu load avg, only higher than the system cpu load average, worker server can be dispatched tasks | `-1` (`the number of cpu cores * 2`) | -| `worker.env.WORKER_RESERVED_MEMORY` | Worker reserved memory, only lower than system available memory, worker server can be dispatched tasks, the unit is G | `0.3` | -| `worker.env.HOST_WEIGHT` | Worker host weight to dispatch tasks | `100` | -| `worker.livenessProbe.enabled` | Turn on and off liveness probe | `true` | -| `worker.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | -| `worker.livenessProbe.periodSeconds` | How often to perform the probe | `30` | -| `worker.livenessProbe.timeoutSeconds` | When the probe times out | `5` | -| `worker.livenessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `worker.livenessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `worker.readinessProbe.enabled` | Turn on and off readiness probe | `true` | -| `worker.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` | -| `worker.readinessProbe.periodSeconds` | How often to perform the probe | `30` | -| `worker.readinessProbe.timeoutSeconds` | When the probe times out | `5` | -| `worker.readinessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `worker.readinessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `worker.persistentVolumeClaim.enabled` | Set `worker.persistentVolumeClaim.enabled` to `true` to enable `persistentVolumeClaim` for `worker` | `false` | -| `worker.persistentVolumeClaim.dataPersistentVolume.enabled` | Set `worker.persistentVolumeClaim.dataPersistentVolume.enabled` to `true` to mount a data volume for `worker` | `false` | -| `worker.persistentVolumeClaim.dataPersistentVolume.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `worker.persistentVolumeClaim.dataPersistentVolume.storageClassName` | `Worker` data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `worker.persistentVolumeClaim.dataPersistentVolume.storage` | `PersistentVolumeClaim` size | `20Gi` | -| `worker.persistentVolumeClaim.logsPersistentVolume.enabled` | Set `worker.persistentVolumeClaim.logsPersistentVolume.enabled` to `true` to mount a logs volume for `worker` | `false` | -| `worker.persistentVolumeClaim.logsPersistentVolume.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `worker.persistentVolumeClaim.logsPersistentVolume.storageClassName` | `Worker` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `worker.persistentVolumeClaim.logsPersistentVolume.storage` | `PersistentVolumeClaim` size | `20Gi` | -|
| | | -| `alert.enabled` | Enable or disable the Alert-Server component | true | -| `alert.replicas` | Replicas is the desired number of replicas of the given Template | `1` | -| `alert.strategy.type` | Type of deployment. Can be "Recreate" or "RollingUpdate" | `RollingUpdate` | -| `alert.strategy.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods | `25%` | -| `alert.strategy.rollingUpdate.maxUnavailable` | The maximum number of pods that can be unavailable during the update | `25%` | -| `alert.annotations` | The `annotations` for alert server | `{}` | -| `alert.affinity` | If specified, the pod's scheduling constraints | `{}` | -| `alert.nodeSelector` | NodeSelector is a selector which must be true for the pod to fit on a node | `{}` | -| `alert.tolerations` | If specified, the pod's tolerations | `{}` | -| `alert.resources` | The `resource` limit and request config for alert server | `{}` | -| `alert.configmap.ALERT_SERVER_OPTS` | The jvm options for alert server | `-Xms512m -Xmx512m -Xmn256m` | -| `alert.configmap.XLS_FILE_PATH` | XLS file path | `/tmp/xls` | -| `alert.configmap.MAIL_SERVER_HOST` | Mail `SERVER HOST ` | `nil` | -| `alert.configmap.MAIL_SERVER_PORT` | Mail `SERVER PORT` | `nil` | -| `alert.configmap.MAIL_SENDER` | Mail `SENDER` | `nil` | -| `alert.configmap.MAIL_USER` | Mail `USER` | `nil` | -| `alert.configmap.MAIL_PASSWD` | Mail `PASSWORD` | `nil` | -| `alert.configmap.MAIL_SMTP_STARTTLS_ENABLE` | Mail `SMTP STARTTLS` enable | `false` | -| `alert.configmap.MAIL_SMTP_SSL_ENABLE` | Mail `SMTP SSL` enable | `false` | -| `alert.configmap.MAIL_SMTP_SSL_TRUST` | Mail `SMTP SSL TRUST` | `nil` | -| `alert.configmap.ENTERPRISE_WECHAT_ENABLE` | `Enterprise Wechat` enable | `false` | -| `alert.configmap.ENTERPRISE_WECHAT_CORP_ID` | `Enterprise Wechat` corp id | `nil` | -| `alert.configmap.ENTERPRISE_WECHAT_SECRET` | `Enterprise Wechat` secret | `nil` | -| `alert.configmap.ENTERPRISE_WECHAT_AGENT_ID` | `Enterprise Wechat` agent id | `nil` | -| `alert.configmap.ENTERPRISE_WECHAT_USERS` | `Enterprise Wechat` users | `nil` | -| `alert.livenessProbe.enabled` | Turn on and off liveness probe | `true` | -| `alert.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | -| `alert.livenessProbe.periodSeconds` | How often to perform the probe | `30` | -| `alert.livenessProbe.timeoutSeconds` | When the probe times out | `5` | -| `alert.livenessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `alert.livenessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `alert.readinessProbe.enabled` | Turn on and off readiness probe | `true` | -| `alert.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` | -| `alert.readinessProbe.periodSeconds` | How often to perform the probe | `30` | -| `alert.readinessProbe.timeoutSeconds` | When the probe times out | `5` | -| `alert.readinessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `alert.readinessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `alert.persistentVolumeClaim.enabled` | Set `alert.persistentVolumeClaim.enabled` to `true` to mount a new volume for `alert` | `false` | -| `alert.persistentVolumeClaim.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `alert.persistentVolumeClaim.storageClassName` | `Alert` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `alert.persistentVolumeClaim.storage` | `PersistentVolumeClaim` size | `20Gi` | -|
| | | -| `api.enabled` | Enable or disable the API-Server component | true | -| `api.replicas` | Replicas is the desired number of replicas of the given Template | `1` | -| `api.strategy.type` | Type of deployment. Can be "Recreate" or "RollingUpdate" | `RollingUpdate` | -| `api.strategy.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods | `25%` | -| `api.strategy.rollingUpdate.maxUnavailable` | The maximum number of pods that can be unavailable during the update | `25%` | -| `api.annotations` | The `annotations` for api server | `{}` | -| `api.affinity` | If specified, the pod's scheduling constraints | `{}` | -| `api.nodeSelector` | NodeSelector is a selector which must be true for the pod to fit on a node | `{}` | -| `api.tolerations` | If specified, the pod's tolerations | `{}` | -| `api.resources` | The `resource` limit and request config for api server | `{}` | -| `api.configmap.API_SERVER_OPTS` | The jvm options for api server | `-Xms512m -Xmx512m -Xmn256m` | -| `api.livenessProbe.enabled` | Turn on and off liveness probe | `true` | -| `api.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` | -| `api.livenessProbe.periodSeconds` | How often to perform the probe | `30` | -| `api.livenessProbe.timeoutSeconds` | When the probe times out | `5` | -| `api.livenessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `api.livenessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `api.readinessProbe.enabled` | Turn on and off readiness probe | `true` | -| `api.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` | -| `api.readinessProbe.periodSeconds` | How often to perform the probe | `30` | -| `api.readinessProbe.timeoutSeconds` | When the probe times out | `5` | -| `api.readinessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` | -| `api.readinessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` | -| `api.persistentVolumeClaim.enabled` | Set `api.persistentVolumeClaim.enabled` to `true` to mount a new volume for `api` | `false` | -| `api.persistentVolumeClaim.accessModes` | `PersistentVolumeClaim` access modes | `[ReadWriteOnce]` | -| `api.persistentVolumeClaim.storageClassName` | `api` logs data persistent volume storage class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` | -| `api.persistentVolumeClaim.storage` | `PersistentVolumeClaim` size | `20Gi` | -| `api.service.type` | `type` determines how the Service is exposed. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer | `ClusterIP` | -| `api.service.clusterIP` | `clusterIP` is the IP address of the service and is usually assigned randomly by the master | `nil` | -| `api.service.nodePort` | `nodePort` is the port on each node on which this service is exposed when type=NodePort | `nil` | -| `api.service.externalIPs` | `externalIPs` is a list of IP addresses for which nodes in the cluster will also accept traffic for this service | `[]` | -| `api.service.externalName` | `externalName` is the external reference that kubedns or equivalent will return as a CNAME record for this service | `nil` | -| `api.service.loadBalancerIP` | `loadBalancerIP` when service.type is LoadBalancer. LoadBalancer will get created with the IP specified in this field | `nil` | -| `api.service.annotations` | `annotations` may need to be set when service.type is LoadBalancer | `{}` | -| `api.taskTypeFilter.enabled` | Enable 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. | `false` | -| `api.taskTypeFilter.task` | Task type ref: [task-type-config.yaml](https://github.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-api/src/main/resources/task-type-config.yaml) | `{}` | -|
| | | -| `ingress.enabled` | Enable ingress | `false` | -| `ingress.host` | Ingress host | `dolphinscheduler.org` | -| `ingress.path` | Ingress path | `/dolphinscheduler` | -| `ingress.tls.enabled` | Enable ingress tls | `false` | -| `ingress.tls.secretName` | Ingress tls secret name | `dolphinscheduler-tls` | - +参考 [DolphinScheduler Helm Charts](https://github.com/apache/dolphinscheduler/blob/dev/deploy/kubernetes/dolphinscheduler/README.md) diff --git a/pom.xml b/pom.xml index 023e941a96..260524b1e5 100755 --- a/pom.xml +++ b/pom.xml @@ -828,5 +828,37 @@ false + + helm-doc + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + + helm-doc + + exec + + validate + + docker + ${project.basedir} + + run + --rm + --volume + ${project.basedir}/deploy/kubernetes:/helm-docs + jnorwood/helm-docs:v1.11.3 + + + + + + + +