#
# 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.
#

# Default values for dolphinscheduler-chart.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

nameOverride: ""
fullnameOverride: ""

timezone: "Asia/Shanghai"

image:
  registry: "apache"
  repository: "dolphinscheduler"
  tag: "latest"
  pullPolicy: "IfNotPresent"
  pullSecrets: []

# If not exists external database, by default, Dolphinscheduler's database will use it.
postgresql:
  enabled: true
  postgresqlUsername: "root"
  postgresqlPassword: "root"
  postgresqlDatabase: "dolphinscheduler"
  persistence:
    enabled: false
    size: "20Gi"
    storageClass: "-"

# If exists external database, and set postgresql.enable value to false.
# external database will be used, otherwise Dolphinscheduler's database will be used.
externalDatabase:
  type: "postgresql"
  driver: "org.postgresql.Driver"
  host: "localhost"
  port: "5432"
  username: "root"
  password: "root"
  database: "dolphinscheduler"
  # multi params should join with & char
  params: "characterEncoding=utf8"

# If not exists external zookeeper, by default, Dolphinscheduler's zookeeper will use it.
zookeeper:
  enabled: true
  taskQueue: "zookeeper"
  config: null
  service:
    port: "2181"
  persistence:
    enabled: false
    size: "20Gi"
    storageClass: "-"

# If exists external zookeeper, and set zookeeper.enable value to false.
# If zookeeper.enable is false,  Dolphinscheduler's zookeeper will use it.
externalZookeeper:
  taskQueue: "zookeeper"
  zookeeperQuorum: "127.0.0.1:2181"
  zookeeperRoot: "/dolphinscheduler"

common:
  configmap:
    DOLPHINSCHEDULER_ENV_PATH: "/tmp/dolphinscheduler/env"
    DOLPHINSCHEDULER_DATA_BASEDIR_PATH: "/tmp/dolphinscheduler/files"
    RESOURCE_STORAGE_TYPE: "NONE"
    RESOURCE_UPLOAD_PATH: "/ds"
    FS_DEFAULT_FS: "s3a://xxxx"
    FS_S3A_ENDPOINT: "s3.xxx.amazonaws.com"
    FS_S3A_ACCESS_KEY: "xxxxxxx"
    FS_S3A_SECRET_KEY: "xxxxxxx"

master:
  podManagementPolicy: "Parallel"
  replicas: "3"
  # 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: []
  # 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: {}
  # The jvm options for java instance startup
  jvmOptions: ""
  resources: {}
  # limits:
  #   memory: "18Gi"
  #   cpu: "4"
  # requests:
  #   memory: "2Gi"
  #   cpu: "500m"
  # You can use annotations to attach arbitrary non-identifying metadata to objects. 
  # Clients such as tools and libraries can retrieve this metadata.
  annotations: {}
  ## 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
  configmap:
    MASTER_EXEC_THREADS: "100"
    MASTER_EXEC_TASK_NUM: "20"
    MASTER_HEARTBEAT_INTERVAL: "10"
    MASTER_TASK_COMMIT_RETRYTIMES: "5"
    MASTER_TASK_COMMIT_INTERVAL: "1000"
    MASTER_MAX_CPULOAD_AVG: "100"
    MASTER_RESERVED_MEMORY: "0.1"
    MASTER_LISTEN_PORT: "5678"
  livenessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    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
  readinessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    successThreshold: "1"
  ## volumeClaimTemplates is a list of claims that pods are allowed to reference.
  ## 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:
    enabled: false
    accessModes:
    - "ReadWriteOnce"
    storageClassName: "-"
    storage: "20Gi"

worker:
  podManagementPolicy: "Parallel"
  replicas: "3"
  # 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: []
  # 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: {}
  # The jvm options for java instance startup
  jvmOptions: ""
  resources: {}
  # limits:
  #   memory: "18Gi"
  #   cpu: "4"
  # requests:
  #   memory: "2Gi"
  #   cpu: "500m"
  # You can use annotations to attach arbitrary non-identifying metadata to objects. 
  # Clients such as tools and libraries can retrieve this metadata.
  annotations: {}
  ## 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
  livenessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    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
  readinessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    successThreshold: "1"
  configmap:
    WORKER_EXEC_THREADS: "100"
    WORKER_HEARTBEAT_INTERVAL: "10"
    WORKER_FETCH_TASK_NUM: "3"
    WORKER_MAX_CPULOAD_AVG: "100"
    WORKER_RESERVED_MEMORY: "0.1"
    WORKER_LISTEN_PORT: "1234"
    WORKER_GROUP: "default"
    WORKER_WEIGHT: "100"
    DOLPHINSCHEDULER_DATA_BASEDIR_PATH: "/tmp/dolphinscheduler"
    DOLPHINSCHEDULER_ENV:
    - "export HADOOP_HOME=/opt/soft/hadoop"
    - "export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop"
    - "export SPARK_HOME1=/opt/soft/spark1"
    - "export SPARK_HOME2=/opt/soft/spark2"
    - "export PYTHON_HOME=/opt/soft/python"
    - "export JAVA_HOME=/opt/soft/java"
    - "export HIVE_HOME=/opt/soft/hive"
    - "export FLINK_HOME=/opt/soft/flink"
    - "export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$PATH"
  ## volumeClaimTemplates is a list of claims that pods are allowed to reference.
  ## 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:
    enabled: false
    ## dolphinscheduler data volume
    dataPersistentVolume:
      enabled: false
      accessModes:
      - "ReadWriteOnce"
      storageClassName: "-"
      storage: "20Gi"
    ## dolphinscheduler logs volume
    logsPersistentVolume:
      enabled: false
      accessModes:
      - "ReadWriteOnce"
      storageClassName: "-"
      storage: "20Gi"

alert:
  strategy:
    type: "RollingUpdate"
    rollingUpdate:
      maxSurge: "25%"
      maxUnavailable: "25%"
  replicas: "1"
  # 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: []
  # 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: {}
  # The jvm options for java instance startup
  jvmOptions: ""
  resources: {}
  # limits:
  #   memory: "4Gi"
  #   cpu: "1"
  # requests:
  #   memory: "2Gi"
  #   cpu: "500m"
  # You can use annotations to attach arbitrary non-identifying metadata to objects. 
  # Clients such as tools and libraries can retrieve this metadata.
  annotations: {}
  ## 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
  configmap:
    ALERT_PLUGIN_DIR: "/opt/dolphinscheduler/alert/plugin"
    XLS_FILE_PATH: "/tmp/xls"
    MAIL_SERVER_HOST: ""
    MAIL_SERVER_PORT: ""
    MAIL_SENDER: ""
    MAIL_USER: ""
    MAIL_PASSWD: ""
    MAIL_SMTP_STARTTLS_ENABLE: false
    MAIL_SMTP_SSL_ENABLE: false
    MAIL_SMTP_SSL_TRUST: ""
    ENTERPRISE_WECHAT_ENABLE: false
    ENTERPRISE_WECHAT_CORP_ID: ""
    ENTERPRISE_WECHAT_SECRET: ""
    ENTERPRISE_WECHAT_AGENT_ID: ""
    ENTERPRISE_WECHAT_USERS: ""
  livenessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    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
  readinessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    successThreshold: "1"
  ## volumeClaimTemplates is a list of claims that pods are allowed to reference.
  ## 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:
    enabled: false
    accessModes:
    - "ReadWriteOnce"
    storageClassName: "-"
    storage: "20Gi"

api:
  strategy:
    type: "RollingUpdate"
    rollingUpdate:
      maxSurge: "25%"
      maxUnavailable: "25%"
  replicas: "1"
  # 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: []
  # 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: {}
  # The jvm options for java instance startup
  jvmOptions: ""
  resources: {}
  # limits:
  #   memory: "4Gi"
  #   cpu: "2"
  # requests:
  #   memory: "2Gi"
  #   cpu: "500m"
  # You can use annotations to attach arbitrary non-identifying metadata to objects. 
  # Clients such as tools and libraries can retrieve this metadata.
  annotations: {}
  ## 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
  livenessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    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
  readinessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    successThreshold: "1"
  ## volumeClaimTemplates is a list of claims that pods are allowed to reference.
  ## 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:
    enabled: false
    accessModes:
    - "ReadWriteOnce"
    storageClassName: "-"
    storage: "20Gi"

frontend:
  strategy:
    type: "RollingUpdate"
    rollingUpdate:
      maxSurge: "25%"
      maxUnavailable: "25%"
  replicas: "1"
  # 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: []
  # 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: {}
  resources: {}
  # limits:
  #     memory: "256Mi"
  #     cpu: "1"
  #   requests:
  #     memory: "256Mi"
  #     cpu: "500m"
  # You can use annotations to attach arbitrary non-identifying metadata to objects. 
  # Clients such as tools and libraries can retrieve this metadata.
  annotations: {}
  ## 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
  livenessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    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
  readinessProbe:
    enabled: true
    initialDelaySeconds: "30"
    periodSeconds: "30"
    timeoutSeconds: "5"
    failureThreshold: "3"
    successThreshold: "1"
  ## volumeClaimTemplates is a list of claims that pods are allowed to reference.
  ## 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:
    enabled: false
    accessModes:
    - "ReadWriteOnce"
    storageClassName: "-"
    storage: "20Gi"

ingress:
  enabled: false
  host: "dolphinscheduler.org"
  path: "/"
  tls:
    enabled: false
    hosts:
      - "dolphinscheduler.org"
    secretName: "dolphinscheduler-tls"