This is an automated email from the ASF dual-hosted git repository.

chenxingchun pushed a commit to branch 1.3.6-prepare
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/1.3.6-prepare by this push:
     new 964505e  [1.3.6-prepare][Feature-5100][K8s] Support task scalability 
on K8s such as Spark, Flink and DataX
     new 0de8ab3  Merge pull request #5101 from 
chengshiwen/1.3.6-prepare-support-k8s-task-scalability
964505e is described below

commit 964505ed726617a791982b6b966afa4bf8a6a0a4
Author: chengshiwen <[email protected]>
AuthorDate: Thu Mar 18 23:19:02 2021 +0800

    [1.3.6-prepare][Feature-5100][K8s] Support task scalability on K8s such as 
Spark, Flink and DataX
---
 docker/docker-swarm/docker-compose.yml             |  5 +++
 docker/docker-swarm/docker-stack.yml               |  2 +
 docker/kubernetes/dolphinscheduler/README.md       | 49 ++++++++++++----------
 .../templates/pvc-dolphinscheduler-shared.yaml     | 37 ++++++++++++++++
 .../statefulset-dolphinscheduler-master.yaml       | 19 +++++++++
 .../statefulset-dolphinscheduler-worker.yaml       |  9 ++++
 docker/kubernetes/dolphinscheduler/values.yaml     |  9 ++++
 7 files changed, 108 insertions(+), 22 deletions(-)

diff --git a/docker/docker-swarm/docker-compose.yml 
b/docker/docker-swarm/docker-compose.yml
index 86638ca..b2c1e0d 100644
--- a/docker/docker-swarm/docker-compose.yml
+++ b/docker/docker-swarm/docker-compose.yml
@@ -154,6 +154,8 @@ services:
       DATABASE_DATABASE: dolphinscheduler
       DATABASE_PARAMS: characterEncoding=utf8
       ZOOKEEPER_QUORUM: dolphinscheduler-zookeeper:2181
+      HADOOP_HOME: "/opt/soft/hadoop"
+      HADOOP_CONF_DIR: "/opt/soft/hadoop/etc/hadoop"
     healthcheck:
       test: ["CMD", "/root/checkpoint.sh", "MasterServer"]
       interval: 30s
@@ -164,6 +166,7 @@ services:
     - dolphinscheduler-zookeeper
     volumes:
     - dolphinscheduler-logs:/opt/dolphinscheduler/logs
+    - dolphinscheduler-shared-local:/opt/soft
     restart: unless-stopped
     networks:
     - dolphinscheduler
@@ -226,6 +229,7 @@ services:
     volumes:
     - dolphinscheduler-worker-data:/tmp/dolphinscheduler
     - dolphinscheduler-logs:/opt/dolphinscheduler/logs
+    - dolphinscheduler-shared-local:/opt/soft
     - dolphinscheduler-resource-local:/dolphinscheduler
     restart: unless-stopped
     networks:
@@ -241,4 +245,5 @@ volumes:
   dolphinscheduler-zookeeper:
   dolphinscheduler-worker-data:
   dolphinscheduler-logs:
+  dolphinscheduler-shared-local:
   dolphinscheduler-resource-local:
\ No newline at end of file
diff --git a/docker/docker-swarm/docker-stack.yml 
b/docker/docker-swarm/docker-stack.yml
index a17920e..5490fdc 100644
--- a/docker/docker-swarm/docker-stack.yml
+++ b/docker/docker-swarm/docker-stack.yml
@@ -150,6 +150,8 @@ services:
       DATABASE_DATABASE: dolphinscheduler
       DATABASE_PARAMS: characterEncoding=utf8
       ZOOKEEPER_QUORUM: dolphinscheduler-zookeeper:2181
+      HADOOP_HOME: "/opt/soft/hadoop"
+      HADOOP_CONF_DIR: "/opt/soft/hadoop/etc/hadoop"
     healthcheck:
       test: ["CMD", "/root/checkpoint.sh", "MasterServer"]
       interval: 30s
diff --git a/docker/kubernetes/dolphinscheduler/README.md 
b/docker/kubernetes/dolphinscheduler/README.md
index db7c023..880340f 100644
--- a/docker/kubernetes/dolphinscheduler/README.md
+++ b/docker/kubernetes/dolphinscheduler/README.md
@@ -92,8 +92,8 @@ The configuration file is `values.yaml`, and the following 
tables lists the conf
 | `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      | `-`            
                                       |
+| `postgresql.persistence.size`                                                
     | `PersistentVolumeClaim` size                                             
                                                      | `20Gi`                  
                              |
+| `postgresql.persistence.storageClass`                                        
     | PostgreSQL data persistent volume storage class. If set to "-", 
storageClassName: "", which disables dynamic provisioning      | `-`            
                                       |
 | `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`         
                                  |
@@ -107,8 +107,8 @@ The configuration file is `values.yaml`, and the following 
tables lists the conf
 | `zookeeper.fourlwCommandsWhitelist`                                          
     | A list of comma separated Four Letter Words commands to use              
                                                      | `srvr,ruok,wchs,cons`   
                              |
 | `zookeeper.service.port`                                                     
     | ZooKeeper port                                                           
                                                      | `2181`                  
                              |
 | `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       | `-`           
                                        |
+| `zookeeper.persistence.size`                                                 
     | `PersistentVolumeClaim` size                                             
                                                      | `20Gi`                  
                              |
+| `zookeeper.persistence.storageClass`                                         
     | Zookeeper data persistent volume storage class. If set to "-", 
storageClassName: "", which disables dynamic provisioning       | `-`           
                                        |
 | `zookeeper.zookeeperRoot`                                                    
     | Specify dolphinscheduler root directory in Zookeeper                     
                                                      | `/dolphinscheduler`     
                              |
 | `externalZookeeper.zookeeperQuorum`                                          
     | If exists external Zookeeper, and set `zookeeper.enabled` value to 
false. Specify Zookeeper quorum                             | `127.0.0.1:2181`  
                                    |
 | `externalZookeeper.zookeeperRoot`                                            
     | If exists external Zookeeper, and set `zookeeper.enabled` value to 
false. Specify dolphinscheduler root directory in Zookeeper | 
`/dolphinscheduler`                                   |
@@ -121,10 +121,15 @@ The configuration file is `values.yaml`, and the 
following tables lists the conf
 | `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.DOLPHINSCHEDULER_ENV`                                      
     | System env path, self configuration, please read `values.yaml`           
                                                      | `[]`                    
                              |
+| `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`                  
                              |
+| `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.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`                     
                              |
@@ -155,9 +160,9 @@ The configuration file is `values.yaml`, and the following 
tables lists the conf
 | `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`                  
                              |
+| `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.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`                     
                              |
@@ -188,13 +193,13 @@ The configuration file is `values.yaml`, and the 
following tables lists the conf
 | `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.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`                  
                              |
+| `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.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`         
                              |
@@ -233,9 +238,9 @@ The configuration file is `values.yaml`, and the following 
tables lists the conf
 | `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`                  
                              |
+| `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.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`         
                              |
@@ -260,9 +265,9 @@ The configuration file is `values.yaml`, and the following 
tables lists the conf
 | `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.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`                  
                              |
 |                                                                              
     |                                                                          
                                                      |                         
                              |
 | `ingress.enabled`                                                            
     | Enable ingress                                                           
                                                      | `false`                 
                              |
 | `ingress.host`                                                               
     | Ingress host                                                             
                                                      | `dolphinscheduler.org`  
                              |
diff --git 
a/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-shared.yaml 
b/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-shared.yaml
new file mode 100644
index 0000000..fc65efc
--- /dev/null
+++ 
b/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-shared.yaml
@@ -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.
+#
+{{- if .Values.common.sharedStoragePersistence.enabled }}
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: {{ include "dolphinscheduler.fullname" . }}-shared
+  labels:
+    app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-shared
+    app.kubernetes.io/instance: {{ .Release.Name }}
+    app.kubernetes.io/managed-by: {{ .Release.Service }}
+  annotations:
+    "helm.sh/resource-policy": keep
+spec:
+  accessModes:
+  {{- range .Values.common.sharedStoragePersistence.accessModes }}
+    - {{ . | quote }}
+  {{- end }}
+  storageClassName: {{ 
.Values.common.sharedStoragePersistence.storageClassName | quote }}
+  resources:
+    requests:
+      storage: {{ .Values.common.sharedStoragePersistence.storage | quote }}
+{{- end }}
\ No newline at end of file
diff --git 
a/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-master.yaml
 
b/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-master.yaml
index 48f3742..92515ca 100644
--- 
a/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-master.yaml
+++ 
b/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-master.yaml
@@ -217,6 +217,13 @@ spec:
           volumeMounts:
             - mountPath: "/opt/dolphinscheduler/logs"
               name: {{ include "dolphinscheduler.fullname" . }}-master
+            - mountPath: 
"/opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh"
+              subPath: "dolphinscheduler_env.sh"
+              name: {{ include "dolphinscheduler.fullname" . }}-common-env
+            {{- if .Values.common.sharedStoragePersistence.enabled }}
+            - mountPath: {{ .Values.common.sharedStoragePersistence.mountPath 
| quote }}
+              name: {{ include "dolphinscheduler.fullname" . }}-shared
+            {{- end }}
       volumes:
         - name: {{ include "dolphinscheduler.fullname" . }}-master
           {{- if .Values.master.persistentVolumeClaim.enabled }}
@@ -225,6 +232,18 @@ spec:
           {{- else }}
           emptyDir: {}
           {{- end }}
+        - name: {{ include "dolphinscheduler.fullname" . }}-common-env
+          configMap:
+            defaultMode: 0777
+            name: {{ include "dolphinscheduler.fullname" . }}-common
+            items:
+              - key: DOLPHINSCHEDULER_ENV
+                path: dolphinscheduler_env.sh
+        {{- if .Values.common.sharedStoragePersistence.enabled }}
+        - name: {{ include "dolphinscheduler.fullname" . }}-shared
+          persistentVolumeClaim:
+            claimName: {{ include "dolphinscheduler.fullname" . }}-shared
+        {{- end }}
   {{- if .Values.master.persistentVolumeClaim.enabled }}
   volumeClaimTemplates:
     - metadata:
diff --git 
a/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-worker.yaml
 
b/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-worker.yaml
index 9fd8add..9a452be 100644
--- 
a/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-worker.yaml
+++ 
b/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-worker.yaml
@@ -301,6 +301,10 @@ spec:
             - mountPath: 
"/opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh"
               subPath: "dolphinscheduler_env.sh"
               name: {{ include "dolphinscheduler.fullname" . }}-common-env
+            {{- if .Values.common.sharedStoragePersistence.enabled }}
+            - mountPath: {{ .Values.common.sharedStoragePersistence.mountPath 
| quote }}
+              name: {{ include "dolphinscheduler.fullname" . }}-shared
+            {{- end }}
             {{- if .Values.common.fsFileResourcePersistence.enabled }}
             - mountPath: {{ .Values.common.configmap.RESOURCE_UPLOAD_PATH | 
quote }}
               name: {{ include "dolphinscheduler.fullname" . }}-fs-file
@@ -327,6 +331,11 @@ spec:
             items:
               - key: DOLPHINSCHEDULER_ENV
                 path: dolphinscheduler_env.sh
+        {{- if .Values.common.sharedStoragePersistence.enabled }}
+        - name: {{ include "dolphinscheduler.fullname" . }}-shared
+          persistentVolumeClaim:
+            claimName: {{ include "dolphinscheduler.fullname" . }}-shared
+        {{- end }}
         {{- if .Values.common.fsFileResourcePersistence.enabled }}
         - name: {{ include "dolphinscheduler.fullname" . }}-fs-file
           persistentVolumeClaim:
diff --git a/docker/kubernetes/dolphinscheduler/values.yaml 
b/docker/kubernetes/dolphinscheduler/values.yaml
index a99ebc2..cc8e709 100644
--- a/docker/kubernetes/dolphinscheduler/values.yaml
+++ b/docker/kubernetes/dolphinscheduler/values.yaml
@@ -89,6 +89,15 @@ common:
     - "export FLINK_HOME=/opt/soft/flink"
     - "export DATAX_HOME=/opt/soft/datax"
     - "export 
PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$PATH"
+  ## Shared storage persistence mounted into master and worker, such as 
Hadoop, Spark, Flink and DataX binary package
+  sharedStoragePersistence:
+    enabled: false
+    mountPath: "/opt/soft"
+    accessModes:
+    - "ReadWriteMany"
+    ## storageClassName must support the access mode: ReadWriteMany
+    storageClassName: "-"
+    storage: "20Gi"
   ## If RESOURCE_STORAGE_TYPE is HDFS and FS_DEFAULT_FS is file:///, 
fsFileResourcePersistence should be enabled for resource storage
   fsFileResourcePersistence:
     enabled: false

Reply via email to