diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 0103282ae3..c8c90dc26a 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -2,7 +2,6 @@
name: Bug report
about: Create a report to help us improve
title: "[Bug][Module Name] Bug title "
-labels: bug
assignees: ''
---
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index 4053490497..82d811e880 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -2,7 +2,6 @@
name: Feature request
about: Suggest an idea for this project
title: "[Feature][Module Name] Feature title"
-labels: new feature
assignees: ''
---
diff --git a/.github/ISSUE_TEMPLATE/improvement_suggestion.md b/.github/ISSUE_TEMPLATE/improvement_suggestion.md
index 9376e20418..544d98eae5 100644
--- a/.github/ISSUE_TEMPLATE/improvement_suggestion.md
+++ b/.github/ISSUE_TEMPLATE/improvement_suggestion.md
@@ -2,7 +2,6 @@
name: Improvement suggestion
about: Improvement suggestion for this project
title: "[Improvement][Module Name] Improvement title"
-labels: improvement
assignees: ''
---
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
index 6fdb06ea6c..961d82476e 100644
--- a/.github/ISSUE_TEMPLATE/question.md
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -2,7 +2,6 @@
name: Question
about: Have a question wanted to be help
title: "[Question] Question title"
-labels: question
assignees: ''
---
diff --git a/.github/workflows/ci_backend.yml b/.github/workflows/ci_backend.yml
index 7b245d77ef..e19336eab3 100644
--- a/.github/workflows/ci_backend.yml
+++ b/.github/workflows/ci_backend.yml
@@ -49,7 +49,7 @@ jobs:
with:
submodule: true
- name: Check License Header
- uses: apache/skywalking-eyes@9bd5feb
+ uses: apache/skywalking-eyes@ec88b7d850018c8983f87729ea88549e100c5c82
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
diff --git a/.github/workflows/ci_e2e.yml b/.github/workflows/ci_e2e.yml
index 3e781056d0..cab1eeda61 100644
--- a/.github/workflows/ci_e2e.yml
+++ b/.github/workflows/ci_e2e.yml
@@ -33,7 +33,7 @@ jobs:
with:
submodule: true
- name: Check License Header
- uses: apache/skywalking-eyes@9bd5feb
+ uses: apache/skywalking-eyes@ec88b7d850018c8983f87729ea88549e100c5c82
- uses: actions/cache@v1
with:
path: ~/.m2/repository
diff --git a/.github/workflows/ci_ut.yml b/.github/workflows/ci_ut.yml
index 09542d97f1..bb1e8c83a9 100644
--- a/.github/workflows/ci_ut.yml
+++ b/.github/workflows/ci_ut.yml
@@ -36,7 +36,7 @@ jobs:
with:
submodule: true
- name: Check License Header
- uses: apache/skywalking-eyes@9bd5feb
+ uses: apache/skywalking-eyes@ec88b7d850018c8983f87729ea88549e100c5c82
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Only enable review / suggestion here
- uses: actions/cache@v1
diff --git a/.gitignore b/.gitignore
index 6717162b37..9011db1479 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,10 @@
.target
.idea/
target/
+dist/
+all-dependencies.txt
+self-modules.txt
+third-party-dependencies.txt
.settings
.nbproject
.classpath
diff --git a/README.md b/README.md
index ede405baa7..f306a398b5 100644
--- a/README.md
+++ b/README.md
@@ -7,46 +7,44 @@ Dolphin Scheduler Official Website
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=apache-dolphinscheduler&metric=alert_status)](https://sonarcloud.io/dashboard?id=apache-dolphinscheduler)
-> Dolphin Scheduler for Big Data
-
[![Stargazers over time](https://starchart.cc/apache/incubator-dolphinscheduler.svg)](https://starchart.cc/apache/incubator-dolphinscheduler)
[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
[![CN doc](https://img.shields.io/badge/文档-中文版-blue.svg)](README_zh_CN.md)
-### Design features:
+### Design Features:
-Dolphin Scheduler is a distributed and easy-to-extend visual DAG workflow scheduling system. It dedicates to solving the complex dependencies in data processing to make the scheduling system `out of the box` for the data processing process.
+DolphinScheduler is a distributed and extensible workflow scheduler platform with powerful DAG visual interfaces, dedicated to solving complex job dependencies in the data pipeline and providing various types of jobs available `out of the box`.
Its main objectives are as follows:
- Associate the tasks according to the dependencies of the tasks in a DAG graph, which can visualize the running state of the task in real-time.
- - Support many task types: Shell, MR, Spark, SQL (MySQL, PostgreSQL, hive, spark SQL), Python, Sub_Process, Procedure, etc.
- - Support process scheduling, dependency scheduling, manual scheduling, manual pause/stop/recovery, support for failed retry/alarm, recovery from specified nodes, Kill task, etc.
- - Support the priority of process & task, task failover, and task timeout alarm or failure.
- - Support process global parameters and node custom parameter settings.
- - Support online upload/download of resource files, management, etc. Support online file creation and editing.
- - Support task log online viewing and scrolling, online download log, etc.
- - Implement cluster HA, decentralize Master cluster and Worker cluster through Zookeeper.
+ - Support various task types: Shell, MR, Spark, SQL (MySQL, PostgreSQL, hive, spark SQL), Python, Sub_Process, Procedure, etc.
+ - Support scheduling of workflows and dependencies, manual scheduling to pause/stop/recover task, support failure task retry/alarm, recover specified nodes from failure, kill task, etc.
+ - Support the priority of workflows & tasks, task failover, and task timeout alarm or failure.
+ - Support workflow global parameters and node customized parameter settings.
+ - Support online upload/download/management of resource files, etc. Support online file creation and editing.
+ - Support task log online viewing and scrolling and downloading, etc.
+ - Have implemented cluster HA, decentralize Master cluster and Worker cluster through Zookeeper.
- Support the viewing of Master/Worker CPU load, memory, and CPU usage metrics.
- - Support presenting tree or Gantt chart of workflow history as well as the statistics results of task & process status in each workflow.
- - Support backfilling data.
+ - Support displaying workflow history in tree/Gantt chart, as well as statistical analysis on the task status & process status in each workflow.
+ - Support back-filling data.
- Support multi-tenant.
- Support internationalization.
- - There are more waiting for partners to explore...
+ - More features waiting for partners to explore...
-### What's in Dolphin Scheduler
+### What's in DolphinScheduler
Stability | Easy to use | Features | Scalability |
-- | -- | -- | --
-Decentralized multi-master and multi-worker | Visualization process defines key information such as task status, task type, retry times, task running machine, visual variables, and so on at a glance. | Support pause, recover operation | Support custom task types
-HA is supported by itself | All process definition operations are visualized, dragging tasks to draw DAGs, configuring data sources and resources. At the same time, for third-party systems, the API mode operation is provided. | Users on Dolphin Scheduler can achieve many-to-one or one-to-one mapping relationship through tenants and Hadoop users, which is very important for scheduling large data jobs. | The scheduler uses distributed scheduling, and the overall scheduling capability will increase linearly with the scale of the cluster. Master and Worker support dynamic online and offline.
-Overload processing: Overload processing: By using the task queue mechanism, the number of schedulable tasks on a single machine can be flexibly configured. Machine jam can be avoided with high tolerance to numbers of tasks cached in task queue. | One-click deployment | Support traditional shell tasks, and big data platform task scheduling: MR, Spark, SQL (MySQL, PostgreSQL, hive, spark SQL), Python, Procedure, Sub_Process | |
+Decentralized multi-master and multi-worker | Visualization of workflow key information, such as task status, task type, retry times, task operation machine information, visual variables, and so on at a glance. | Support pause, recover operation | Support customized task types
+support HA | Visualization of all workflow operations, dragging tasks to draw DAGs, configuring data sources and resources. At the same time, for third-party systems, provide API mode operations. | Users on DolphinScheduler can achieve many-to-one or one-to-one mapping relationship through tenants and Hadoop users, which is very important for scheduling large data jobs. | The scheduler supports distributed scheduling, and the overall scheduling capability will increase linearly with the scale of the cluster. Master and Worker support dynamic adjustment.
+Overload processing: By using the task queue mechanism, the number of schedulable tasks on a single machine can be flexibly configured. Machine jam can be avoided with high tolerance to numbers of tasks cached in task queue. | One-click deployment | Support traditional shell tasks, and big data platform task scheduling: MR, Spark, SQL (MySQL, PostgreSQL, hive, spark SQL), Python, Procedure, Sub_Process | |
-### System partial screenshot
+### User Interface Screenshots
![home page](https://user-images.githubusercontent.com/15833811/75218288-bf286400-57d4-11ea-8263-d639c6511d5f.jpg)
![dag](https://user-images.githubusercontent.com/15833811/75236750-3374fe80-57f9-11ea-857d-62a66a5a559d.png)
@@ -57,13 +55,9 @@ Overload processing: Overload processing: By using the task queue mechanism, the
![security](https://user-images.githubusercontent.com/15833811/75236441-bfd2f180-57f8-11ea-88bd-f24311e01b7e.png)
![treeview](https://user-images.githubusercontent.com/15833811/75217191-3fe56100-57d1-11ea-8856-f19180d9a879.png)
+### QuickStart in Docker
+Please referer the official website document:[[QuickStart in Docker](https://dolphinscheduler.apache.org/en-us/docs/1.3.4/user_doc/docker-deployment.html)]
-### Recent R&D plan
-The work plan of Dolphin Scheduler: [R&D plan](https://github.com/apache/incubator-dolphinscheduler/projects/1), which `In Develop` card shows the features that are currently being developed and TODO card lists what needs to be done(including feature ideas).
-
-### How to contribute
-
-Welcome to participate in contributing, please refer to this website to find out more: [[How to contribute](https://dolphinscheduler.apache.org/en-us/docs/development/contribute.html)]
### How to Build
@@ -80,14 +74,16 @@ dolphinscheduler-dist/target/apache-dolphinscheduler-incubating-${latest.release
### Thanks
-Dolphin Scheduler is based on a lot of excellent open-source projects, such as google guava, guice, grpc, netty, ali bonecp, quartz, and many open-source projects of Apache and so on.
-We would like to express our deep gratitude to all the open-source projects which contribute to making the dream of Dolphin Scheduler comes true. We hope that we are not only the beneficiaries of open-source, but also give back to the community. Besides, we expect the partners who have the same passion and conviction to open-source will join in and contribute to the open-source community!
-
+DolphinScheduler is based on a lot of excellent open-source projects, such as google guava, guice, grpc, netty, ali bonecp, quartz, and many open-source projects of Apache and so on.
+We would like to express our deep gratitude to all the open-source projects used in Dolphin Scheduler. We hope that we are not only the beneficiaries of open-source, but also give back to the community. Besides, we hope everyone who have the same enthusiasm and passion for open source could join in and contribute to the open-source community!
### Get Help
-1. Submit an issue
+1. Submit an [[issue](https://github.com/apache/incubator-dolphinscheduler/issues/new/choose)]
1. Subscribe to the mail list: https://dolphinscheduler.apache.org/en-us/docs/development/subscribe.html, then email dev@dolphinscheduler.apache.org
+### How to Contribute
+The community welcomes everyone to participate in contributing, please refer to this website to find out more: [[How to contribute](https://dolphinscheduler.apache.org/en-us/community/development/contribute.html)]
+
### License
Please refer to the [LICENSE](https://github.com/apache/incubator-dolphinscheduler/blob/dev/LICENSE) file.
diff --git a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-worker.xml b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-worker.xml
index 1ae7a1a765..e5a3adf9f6 100644
--- a/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-worker.xml
+++ b/ambari_plugin/common-services/DOLPHIN/1.3.3/configuration/dolphin-worker.xml
@@ -15,53 +15,64 @@
~ limitations under the License.
-->
-
- worker.exec.threads
- 100
-
- int
-
- worker execute thread num
-
-
-
- worker.heartbeat.interval
- 10
-
- int
-
- worker heartbeat interval
-
-
-
- worker.max.cpuload.avg
- 100
-
- int
-
- only less than cpu avg load, worker server can work. default value : the number of cpu cores * 2
-
-
-
- worker.reserved.memory
- 0.3
- only larger than reserved memory, worker server can work. default value : physical memory * 1/10, unit is G.
-
-
-
-
- worker.listen.port
- 1234
-
- int
-
- worker listen port
-
-
-
- worker.groups
- default
- default worker group
-
-
+
+ worker.exec.threads
+ 100
+
+ int
+
+ worker execute thread num
+
+
+
+ worker.heartbeat.interval
+ 10
+
+ int
+
+ worker heartbeat interval
+
+
+
+ worker.max.cpuload.avg
+ 100
+
+ int
+
+ only less than cpu avg load, worker server can work. default value : the number of cpu cores * 2
+
+
+
+
+ worker.reserved.memory
+ 0.3
+ only larger than reserved memory, worker server can work. default value : physical memory * 1/10,
+ unit is G.
+
+
+
+
+ worker.listen.port
+ 1234
+
+ int
+
+ worker listen port
+
+
+
+ worker.groups
+ default
+ default worker group
+
+
+
+ worker.weigth
+ 100
+
+ int
+
+ worker weight
+
+
\ No newline at end of file
diff --git a/docker/build/Dockerfile b/docker/build/Dockerfile
index 7b0f09c539..a33cf490b1 100644
--- a/docker/build/Dockerfile
+++ b/docker/build/Dockerfile
@@ -15,55 +15,37 @@
# limitations under the License.
#
-FROM nginx:alpine
+FROM openjdk:8-jdk-alpine
ARG VERSION
ENV TZ Asia/Shanghai
ENV LANG C.UTF-8
-ENV DEBIAN_FRONTEND noninteractive
+ENV DOCKER true
-#1. install dos2unix shadow bash openrc python sudo vim wget iputils net-tools ssh pip tini kazoo.
-#If install slowly, you can replcae alpine's mirror with aliyun's mirror, Example:
-#RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories
+# 1. install command/library/software
+# If install slowly, you can replcae alpine's mirror with aliyun's mirror, Example:
+# RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories
+# RUN sed -i 's/dl-cdn.alpinelinux.org/mirror.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
RUN apk update && \
- apk add --update --no-cache dos2unix shadow bash openrc python2 python3 sudo vim wget iputils net-tools openssh-server py-pip tini && \
- apk add --update --no-cache procps && \
- openrc boot && \
- pip install kazoo
+ apk add --no-cache tzdata dos2unix bash python2 python3 procps sudo shadow tini postgresql-client && \
+ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
+ apk del tzdata && \
+ rm -rf /var/cache/apk/*
-#2. install jdk
-RUN apk add --update --no-cache openjdk8
-ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
-ENV PATH $JAVA_HOME/bin:$PATH
-
-#3. add dolphinscheduler
+# 2. add dolphinscheduler
ADD ./apache-dolphinscheduler-incubating-${VERSION}-dolphinscheduler-bin.tar.gz /opt/
-RUN mv /opt/apache-dolphinscheduler-incubating-${VERSION}-dolphinscheduler-bin/ /opt/dolphinscheduler/
+RUN ln -s /opt/apache-dolphinscheduler-incubating-${VERSION}-dolphinscheduler-bin /opt/dolphinscheduler
ENV DOLPHINSCHEDULER_HOME /opt/dolphinscheduler
-#4. install database, if use mysql as your backend database, the `mysql-client` package should be installed
-RUN apk add --update --no-cache postgresql postgresql-contrib
-
-#5. modify nginx
-RUN echo "daemon off;" >> /etc/nginx/nginx.conf && \
- rm -rf /etc/nginx/conf.d/*
-COPY ./conf/nginx/dolphinscheduler.conf /etc/nginx/conf.d
-
-#6. add configuration and modify permissions and set soft links
+# 3. add configuration and modify permissions and set soft links
COPY ./checkpoint.sh /root/checkpoint.sh
COPY ./startup-init-conf.sh /root/startup-init-conf.sh
COPY ./startup.sh /root/startup.sh
COPY ./conf/dolphinscheduler/*.tpl /opt/dolphinscheduler/conf/
COPY ./conf/dolphinscheduler/logback/* /opt/dolphinscheduler/conf/
-COPY conf/dolphinscheduler/env/dolphinscheduler_env.sh /opt/dolphinscheduler/conf/env/
-RUN chmod +x /root/checkpoint.sh && \
- chmod +x /root/startup-init-conf.sh && \
- chmod +x /root/startup.sh && \
- chmod +x /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh && \
- chmod +x /opt/dolphinscheduler/script/*.sh && \
- chmod +x /opt/dolphinscheduler/bin/*.sh && \
- dos2unix /root/checkpoint.sh && \
+COPY ./conf/dolphinscheduler/env/dolphinscheduler_env.sh /opt/dolphinscheduler/conf/env/
+RUN dos2unix /root/checkpoint.sh && \
dos2unix /root/startup-init-conf.sh && \
dos2unix /root/startup.sh && \
dos2unix /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh && \
@@ -71,13 +53,10 @@ RUN chmod +x /root/checkpoint.sh && \
dos2unix /opt/dolphinscheduler/bin/*.sh && \
rm -rf /bin/sh && \
ln -s /bin/bash /bin/sh && \
- mkdir -p /tmp/xls && \
- #7. remove apk index cache and disable coredup for sudo
- rm -rf /var/cache/apk/* && \
+ mkdir -p /var/mail /tmp/xls && \
echo "Set disable_coredump false" >> /etc/sudo.conf
-
-#8. expose port
-EXPOSE 2181 2888 3888 5432 5678 1234 12345 50051 8888
+# 4. expose port
+EXPOSE 5678 1234 12345 50051
ENTRYPOINT ["/sbin/tini", "--", "/root/startup.sh"]
diff --git a/docker/build/README.md b/docker/build/README.md
index 951f2d6b51..3a2a1666bb 100644
--- a/docker/build/README.md
+++ b/docker/build/README.md
@@ -15,9 +15,9 @@ Official Website: https://dolphinscheduler.apache.org
#### You can start a dolphinscheduler instance
```
-$ docker run -dit --name dolphinscheduler \
+$ docker run -dit --name dolphinscheduler \
-e DATABASE_USERNAME=test -e DATABASE_PASSWORD=test -e DATABASE_DATABASE=dolphinscheduler \
--p 8888:8888 \
+-p 12345:12345 \
dolphinscheduler all
```
@@ -33,7 +33,7 @@ You can specify **existing postgres service**. Example:
$ docker run -dit --name dolphinscheduler \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
--p 8888:8888 \
+-p 12345:12345 \
dolphinscheduler all
```
@@ -43,7 +43,7 @@ You can specify **existing zookeeper service**. Example:
$ docker run -dit --name dolphinscheduler \
-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" -e DATABASE_DATABASE="dolphinscheduler" \
--p 8888:8888 \
+-p 12345:12345 \
dolphinscheduler all
```
@@ -90,14 +90,6 @@ $ docker run -dit --name dolphinscheduler \
dolphinscheduler alert-server
```
-* Start a **frontend**, For example:
-
-```
-$ docker run -dit --name dolphinscheduler \
--e FRONTEND_API_SERVER_HOST="192.168.x.x" -e FRONTEND_API_SERVER_PORT="12345" \
--p 8888:8888 \
-dolphinscheduler frontend
-```
**Note**: You must be specify `DATABASE_HOST` `DATABASE_PORT` `DATABASE_DATABASE` `DATABASE_USERNAME` `DATABASE_PASSWORD` `ZOOKEEPER_QUORUM` when start a standalone dolphinscheduler server.
@@ -146,7 +138,7 @@ This environment variable sets the host for database. The default value is `127.
This environment variable sets the port for database. The default value is `5432`.
-**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `master-server`, `worker-server`, `api-server`, `alert-server`.
+**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `master-server`, `worker-server`, `api-server`, `alert-server`.
**`DATABASE_USERNAME`**
@@ -306,18 +298,6 @@ This environment variable sets enterprise wechat agent id for `alert-server`. Th
This environment variable sets enterprise wechat users for `alert-server`. The default value is empty.
-**`FRONTEND_API_SERVER_HOST`**
-
-This environment variable sets api server host for `frontend`. The default value is `127.0.0.1`.
-
-**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `api-server`.
-
-**`FRONTEND_API_SERVER_PORT`**
-
-This environment variable sets api server port for `frontend`. The default value is `123451`.
-
-**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `api-server`.
-
## Initialization scripts
If you would like to do additional initialization in an image derived from this one, add one or more environment variable under `/root/start-init-conf.sh`, and modify template files in `/opt/dolphinscheduler/conf/*.tpl`.
@@ -326,7 +306,7 @@ For example, to add an environment variable `API_SERVER_PORT` in `/root/start-in
```
export API_SERVER_PORT=5555
-```
+```
and to modify `/opt/dolphinscheduler/conf/application-api.properties.tpl` template file, add server port:
```
@@ -343,8 +323,4 @@ $(cat ${DOLPHINSCHEDULER_HOME}/conf/${line})
EOF
" > ${DOLPHINSCHEDULER_HOME}/conf/${line%.*}
done
-
-echo "generate nginx config"
-sed -i "s/FRONTEND_API_SERVER_HOST/${FRONTEND_API_SERVER_HOST}/g" /etc/nginx/conf.d/dolphinscheduler.conf
-sed -i "s/FRONTEND_API_SERVER_PORT/${FRONTEND_API_SERVER_PORT}/g" /etc/nginx/conf.d/dolphinscheduler.conf
```
diff --git a/docker/build/README_zh_CN.md b/docker/build/README_zh_CN.md
index c4339a945c..ffa0020dcd 100644
--- a/docker/build/README_zh_CN.md
+++ b/docker/build/README_zh_CN.md
@@ -15,9 +15,9 @@ Official Website: https://dolphinscheduler.apache.org
#### 你可以运行一个dolphinscheduler实例
```
-$ docker run -dit --name dolphinscheduler \
+$ docker run -dit --name dolphinscheduler \
-e DATABASE_USERNAME=test -e DATABASE_PASSWORD=test -e DATABASE_DATABASE=dolphinscheduler \
--p 8888:8888 \
+-p 12345:12345 \
dolphinscheduler all
```
@@ -33,7 +33,7 @@ dolphinscheduler all
$ docker run -dit --name dolphinscheduler \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
--p 8888:8888 \
+-p 12345:12345 \
dolphinscheduler all
```
@@ -43,7 +43,7 @@ dolphinscheduler all
$ docker run -dit --name dolphinscheduler \
-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" -e DATABASE_DATABASE="dolphinscheduler" \
--p 8888:8888 \
+-p 12345:12345 \
dolphinscheduler all
```
@@ -90,15 +90,6 @@ $ docker run -dit --name dolphinscheduler \
dolphinscheduler alert-server
```
-* 启动一个 **frontend**, 如下:
-
-```
-$ docker run -dit --name dolphinscheduler \
--e FRONTEND_API_SERVER_HOST="192.168.x.x" -e FRONTEND_API_SERVER_PORT="12345" \
--p 8888:8888 \
-dolphinscheduler frontend
-```
-
**注意**: 当你运行dolphinscheduler中的部分服务时,你必须指定这些环境变量 `DATABASE_HOST` `DATABASE_PORT` `DATABASE_DATABASE` `DATABASE_USERNAME` `DATABASE_PASSWORD` `ZOOKEEPER_QUORUM`。
## 如何构建一个docker镜像
@@ -306,18 +297,6 @@ Dolphin Scheduler映像使用了几个容易遗漏的环境变量。虽然这些
配置`alert-server`的邮件服务企业微信`USERS`,默认值 `空`。
-**`FRONTEND_API_SERVER_HOST`**
-
-配置`frontend`的连接`api-server`的地址,默认值 `127.0.0.1`。
-
-**Note**: 当单独运行`api-server`时,你应该指定`api-server`这个值。
-
-**`FRONTEND_API_SERVER_PORT`**
-
-配置`frontend`的连接`api-server`的端口,默认值 `12345`。
-
-**Note**: 当单独运行`api-server`时,你应该指定`api-server`这个值。
-
## 初始化脚本
如果你想在编译的时候或者运行的时候附加一些其它的操作及新增一些环境变量,你可以在`/root/start-init-conf.sh`文件中进行修改,同时如果涉及到配置文件的修改,请在`/opt/dolphinscheduler/conf/*.tpl`中修改相应的配置文件
@@ -326,7 +305,7 @@ Dolphin Scheduler映像使用了几个容易遗漏的环境变量。虽然这些
```
export API_SERVER_PORT=5555
-```
+```
当添加以上环境变量后,你应该在相应的模板文件`/opt/dolphinscheduler/conf/application-api.properties.tpl`中添加这个环境变量配置:
```
@@ -343,8 +322,4 @@ $(cat ${DOLPHINSCHEDULER_HOME}/conf/${line})
EOF
" > ${DOLPHINSCHEDULER_HOME}/conf/${line%.*}
done
-
-echo "generate nginx config"
-sed -i "s/FRONTEND_API_SERVER_HOST/${FRONTEND_API_SERVER_HOST}/g" /etc/nginx/conf.d/dolphinscheduler.conf
-sed -i "s/FRONTEND_API_SERVER_PORT/${FRONTEND_API_SERVER_PORT}/g" /etc/nginx/conf.d/dolphinscheduler.conf
```
diff --git a/docker/build/checkpoint.sh b/docker/build/checkpoint.sh
old mode 100644
new mode 100755
diff --git a/docker/build/conf/dolphinscheduler/env/dolphinscheduler_env.sh b/docker/build/conf/dolphinscheduler/env/dolphinscheduler_env.sh
old mode 100644
new mode 100755
index 78c8f98bc1..7fd39335ae
--- a/docker/build/conf/dolphinscheduler/env/dolphinscheduler_env.sh
+++ b/docker/build/conf/dolphinscheduler/env/dolphinscheduler_env.sh
@@ -15,6 +15,14 @@
# limitations under the License.
#
-export PYTHON_HOME=/usr/bin/python2
+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=/usr/bin/python
export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
-export PATH=$PYTHON_HOME/bin:$JAVA_HOME/bin:$PATH
+export HIVE_HOME=/opt/soft/hive
+export FLINK_HOME=/opt/soft/flink
+export DATAX_HOME=/opt/soft/datax/bin/datax.py
+
+export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$DATAX_HOME:$PATH
diff --git a/docker/build/conf/dolphinscheduler/logback/logback-alert.xml b/docker/build/conf/dolphinscheduler/logback/logback-alert.xml
index 1718947dd1..eec78385db 100644
--- a/docker/build/conf/dolphinscheduler/logback/logback-alert.xml
+++ b/docker/build/conf/dolphinscheduler/logback/logback-alert.xml
@@ -20,14 +20,6 @@
-
-
-
- [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
-
- UTF-8
-
- ${log.base}/dolphinscheduler-alert.log
@@ -45,7 +37,6 @@
-
diff --git a/docker/build/conf/dolphinscheduler/logback/logback-api.xml b/docker/build/conf/dolphinscheduler/logback/logback-api.xml
index 2df90d8392..6d29f8af5f 100644
--- a/docker/build/conf/dolphinscheduler/logback/logback-api.xml
+++ b/docker/build/conf/dolphinscheduler/logback/logback-api.xml
@@ -20,14 +20,6 @@
-
-
-
- [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
-
- UTF-8
-
-
@@ -55,7 +47,6 @@
-
diff --git a/docker/build/conf/dolphinscheduler/logback/logback-master.xml b/docker/build/conf/dolphinscheduler/logback/logback-master.xml
index 7410c01f05..d1bfb67aa1 100644
--- a/docker/build/conf/dolphinscheduler/logback/logback-master.xml
+++ b/docker/build/conf/dolphinscheduler/logback/logback-master.xml
@@ -20,14 +20,6 @@
-
-
-
- [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
-
- UTF-8
-
-
@@ -74,7 +66,6 @@
-
diff --git a/docker/build/conf/dolphinscheduler/logback/logback-worker.xml b/docker/build/conf/dolphinscheduler/logback/logback-worker.xml
index be1d0acde5..b7e08dd846 100644
--- a/docker/build/conf/dolphinscheduler/logback/logback-worker.xml
+++ b/docker/build/conf/dolphinscheduler/logback/logback-worker.xml
@@ -20,14 +20,6 @@
-
-
-
- [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
-
- UTF-8
-
-
-
diff --git a/docker/build/conf/nginx/dolphinscheduler.conf b/docker/build/conf/nginx/dolphinscheduler.conf
deleted file mode 100644
index a594385a0e..0000000000
--- a/docker/build/conf/nginx/dolphinscheduler.conf
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# 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.
-#
-
-server {
- listen 8888;
- server_name localhost;
- #charset koi8-r;
- #access_log /var/log/nginx/host.access.log main;
- location / {
- root /opt/dolphinscheduler/ui;
- index index.html index.html;
- }
- location /dolphinscheduler/ui{
- alias /opt/dolphinscheduler/ui;
- }
- location /dolphinscheduler {
- proxy_pass http://FRONTEND_API_SERVER_HOST:FRONTEND_API_SERVER_PORT;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header x_real_ipP $remote_addr;
- proxy_set_header remote_addr $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_http_version 1.1;
- proxy_connect_timeout 300s;
- proxy_read_timeout 300s;
- proxy_send_timeout 300s;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- }
- #error_page 404 /404.html;
- # redirect server error pages to the static page /50x.html
- #
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root /usr/share/nginx/html;
- }
-}
diff --git a/docker/build/conf/zookeeper/zoo.cfg b/docker/build/conf/zookeeper/zoo.cfg
deleted file mode 100644
index 94f92d0620..0000000000
--- a/docker/build/conf/zookeeper/zoo.cfg
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# 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.
-#
-
-# The number of milliseconds of each tick
-tickTime=2000
-# The number of ticks that the initial
-# synchronization phase can take
-initLimit=10
-# The number of ticks that can pass between
-# sending a request and getting an acknowledgement
-syncLimit=5
-# the directory where the snapshot is stored.
-# do not use /tmp for storage, /tmp here is just
-# example sakes.
-dataDir=/tmp/zookeeper
-# the port at which the clients will connect
-clientPort=2181
-# the maximum number of client connections.
-# increase this if you need to handle more clients
-#maxClientCnxns=60
-#
-# Be sure to read the maintenance section of the
-# administrator guide before turning on autopurge.
-#
-# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
-#
-# The number of snapshots to retain in dataDir
-#autopurge.snapRetainCount=3
-# Purge task interval in hours
-# Set to "0" to disable auto purge feature
-#autopurge.purgeInterval=1
-#Four Letter Words commands:stat,ruok,conf,isro
-4lw.commands.whitelist=*
diff --git a/docker/build/hooks/build b/docker/build/hooks/build
old mode 100644
new mode 100755
index 6362fdd299..ce7362bf55
--- a/docker/build/hooks/build
+++ b/docker/build/hooks/build
@@ -48,7 +48,12 @@ echo -e "mv $(pwd)/dolphinscheduler-dist/target/apache-dolphinscheduler-incubati
mv "$(pwd)"/dolphinscheduler-dist/target/apache-dolphinscheduler-incubating-"${VERSION}"-dolphinscheduler-bin.tar.gz $(pwd)/docker/build/
# docker build
-echo -e "docker build --build-arg VERSION=${VERSION} -t $DOCKER_REPO:${VERSION} $(pwd)/docker/build/\n"
-sudo docker build --build-arg VERSION="${VERSION}" -t $DOCKER_REPO:"${VERSION}" "$(pwd)/docker/build/"
+BUILD_COMMAND="docker build --build-arg VERSION=${VERSION} -t $DOCKER_REPO:${VERSION} $(pwd)/docker/build/"
+echo -e "$BUILD_COMMAND\n"
+if (docker info 2> /dev/null | grep -i "ERROR"); then
+ sudo $BUILD_COMMAND
+else
+ $BUILD_COMMAND
+fi
echo "------ dolphinscheduler end - build -------"
diff --git a/docker/build/hooks/push b/docker/build/hooks/push
old mode 100644
new mode 100755
diff --git a/docker/build/startup-init-conf.sh b/docker/build/startup-init-conf.sh
old mode 100644
new mode 100755
index d5cd86f1a4..c3aadcd673
--- a/docker/build/startup-init-conf.sh
+++ b/docker/build/startup-init-conf.sh
@@ -39,9 +39,9 @@ export DATABASE_PARAMS=${DATABASE_PARAMS:-"characterEncoding=utf8"}
export DOLPHINSCHEDULER_ENV_PATH=${DOLPHINSCHEDULER_ENV_PATH:-"/opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh"}
export DOLPHINSCHEDULER_DATA_BASEDIR_PATH=${DOLPHINSCHEDULER_DATA_BASEDIR_PATH:-"/tmp/dolphinscheduler"}
export DOLPHINSCHEDULER_OPTS=${DOLPHINSCHEDULER_OPTS:-""}
-export RESOURCE_STORAGE_TYPE=${RESOURCE_STORAGE_TYPE:-"NONE"}
-export RESOURCE_UPLOAD_PATH=${RESOURCE_UPLOAD_PATH:-"/ds"}
-export FS_DEFAULT_FS=${FS_DEFAULT_FS:-"s3a://xxxx"}
+export RESOURCE_STORAGE_TYPE=${RESOURCE_STORAGE_TYPE:-"HDFS"}
+export RESOURCE_UPLOAD_PATH=${RESOURCE_UPLOAD_PATH:-"/dolphinscheduler"}
+export FS_DEFAULT_FS=${FS_DEFAULT_FS:-"file:///"}
export FS_S3A_ENDPOINT=${FS_S3A_ENDPOINT:-"s3.xxx.amazonaws.com"}
export FS_S3A_ACCESS_KEY=${FS_S3A_ACCESS_KEY:-"xxxxxxx"}
export FS_S3A_SECRET_KEY=${FS_S3A_SECRET_KEY:-"xxxxxxx"}
@@ -81,7 +81,7 @@ export WORKER_WEIGHT=${WORKER_WEIGHT:-"100"}
#============================================================================
# alert plugin dir
export ALERT_PLUGIN_DIR=${ALERT_PLUGIN_DIR:-"/opt/dolphinscheduler"}
-# XLS FILE
+# xls file
export XLS_FILE_PATH=${XLS_FILE_PATH:-"/tmp/xls"}
# mail
export MAIL_SERVER_HOST=${MAIL_SERVER_HOST:-""}
@@ -99,12 +99,6 @@ export ENTERPRISE_WECHAT_SECRET=${ENTERPRISE_WECHAT_SECRET:-""}
export ENTERPRISE_WECHAT_AGENT_ID=${ENTERPRISE_WECHAT_AGENT_ID:-""}
export ENTERPRISE_WECHAT_USERS=${ENTERPRISE_WECHAT_USERS:-""}
-#============================================================================
-# Frontend
-#============================================================================
-export FRONTEND_API_SERVER_HOST=${FRONTEND_API_SERVER_HOST:-"127.0.0.1"}
-export FRONTEND_API_SERVER_PORT=${FRONTEND_API_SERVER_PORT:-"12345"}
-
echo "generate app config"
ls ${DOLPHINSCHEDULER_HOME}/conf/ | grep ".tpl" | while read line; do
eval "cat << EOF
@@ -112,7 +106,3 @@ $(cat ${DOLPHINSCHEDULER_HOME}/conf/${line})
EOF
" > ${DOLPHINSCHEDULER_HOME}/conf/${line%.*}
done
-
-echo "generate nginx config"
-sed -i "s/FRONTEND_API_SERVER_HOST/${FRONTEND_API_SERVER_HOST}/g" /etc/nginx/conf.d/dolphinscheduler.conf
-sed -i "s/FRONTEND_API_SERVER_PORT/${FRONTEND_API_SERVER_PORT}/g" /etc/nginx/conf.d/dolphinscheduler.conf
\ No newline at end of file
diff --git a/docker/build/startup.sh b/docker/build/startup.sh
old mode 100644
new mode 100755
index 0511788d48..8bd1895cc0
--- a/docker/build/startup.sh
+++ b/docker/build/startup.sh
@@ -22,8 +22,8 @@ DOLPHINSCHEDULER_BIN=${DOLPHINSCHEDULER_HOME}/bin
DOLPHINSCHEDULER_SCRIPT=${DOLPHINSCHEDULER_HOME}/script
DOLPHINSCHEDULER_LOGS=${DOLPHINSCHEDULER_HOME}/logs
-# start database
-initDatabase() {
+# wait database
+waitDatabase() {
echo "test ${DATABASE_TYPE} service"
while ! nc -z ${DATABASE_HOST} ${DATABASE_PORT}; do
counter=$((counter+1))
@@ -43,19 +43,22 @@ initDatabase() {
exit 1
fi
else
- v=$(sudo -u postgres PGPASSWORD=${DATABASE_PASSWORD} psql -h ${DATABASE_HOST} -p ${DATABASE_PORT} -U ${DATABASE_USERNAME} -d ${DATABASE_DATABASE} -tAc "select 1")
+ v=$(PGPASSWORD=${DATABASE_PASSWORD} psql -h ${DATABASE_HOST} -p ${DATABASE_PORT} -U ${DATABASE_USERNAME} -d ${DATABASE_DATABASE} -tAc "select 1")
if [ "$(echo ${v} | grep 'FATAL' | wc -l)" -eq 1 ]; then
echo "Error: Can't connect to database...${v}"
exit 1
fi
fi
+}
+# init database
+initDatabase() {
echo "import sql data"
${DOLPHINSCHEDULER_SCRIPT}/create-dolphinscheduler.sh
}
-# start zk
-initZK() {
+# wait zk
+waitZK() {
echo "connect remote zookeeper"
echo "${ZOOKEEPER_QUORUM}" | awk -F ',' 'BEGIN{ i=1 }{ while( i <= NF ){ print $i; i++ } }' | while read line; do
while ! nc -z ${line%:*} ${line#*:}; do
@@ -70,12 +73,6 @@ initZK() {
done
}
-# start nginx
-initNginx() {
- echo "start nginx"
- nginx &
-}
-
# start master-server
initMasterServer() {
echo "start master-server"
@@ -115,59 +112,54 @@ initAlertServer() {
printUsage() {
echo -e "Dolphin Scheduler is a distributed and easy-to-expand visual DAG workflow scheduling system,"
echo -e "dedicated to solving the complex dependencies in data processing, making the scheduling system out of the box for data processing.\n"
- echo -e "Usage: [ all | master-server | worker-server | api-server | alert-server | frontend ]\n"
- printf "%-13s: %s\n" "all" "Run master-server, worker-server, api-server, alert-server and frontend."
+ echo -e "Usage: [ all | master-server | worker-server | api-server | alert-server ]\n"
+ printf "%-13s: %s\n" "all" "Run master-server, worker-server, api-server and alert-server"
printf "%-13s: %s\n" "master-server" "MasterServer is mainly responsible for DAG task split, task submission monitoring."
- printf "%-13s: %s\n" "worker-server" "WorkerServer is mainly responsible for task execution and providing log services.."
- printf "%-13s: %s\n" "api-server" "ApiServer is mainly responsible for processing requests from the front-end UI layer."
+ printf "%-13s: %s\n" "worker-server" "WorkerServer is mainly responsible for task execution and providing log services."
+ printf "%-13s: %s\n" "api-server" "ApiServer is mainly responsible for processing requests and providing the front-end UI layer."
printf "%-13s: %s\n" "alert-server" "AlertServer mainly include Alarms."
- printf "%-13s: %s\n" "frontend" "Frontend mainly provides various visual operation interfaces of the system."
}
# init config file
source /root/startup-init-conf.sh
-LOGFILE=/var/log/nginx/access.log
case "$1" in
(all)
- initZK
+ waitZK
+ waitDatabase
initDatabase
initMasterServer
initWorkerServer
initApiServer
initAlertServer
initLoggerServer
- initNginx
- LOGFILE=/var/log/nginx/access.log
+ LOGFILE=${DOLPHINSCHEDULER_LOGS}/dolphinscheduler-api-server.log
;;
(master-server)
- initZK
- initDatabase
+ waitZK
+ waitDatabase
initMasterServer
LOGFILE=${DOLPHINSCHEDULER_LOGS}/dolphinscheduler-master.log
;;
(worker-server)
- initZK
- initDatabase
+ waitZK
+ waitDatabase
initWorkerServer
initLoggerServer
LOGFILE=${DOLPHINSCHEDULER_LOGS}/dolphinscheduler-worker.log
;;
(api-server)
- initZK
+ waitZK
+ waitDatabase
initDatabase
initApiServer
LOGFILE=${DOLPHINSCHEDULER_LOGS}/dolphinscheduler-api-server.log
;;
(alert-server)
- initDatabase
+ waitDatabase
initAlertServer
LOGFILE=${DOLPHINSCHEDULER_LOGS}/dolphinscheduler-alert.log
;;
- (frontend)
- initNginx
- LOGFILE=/var/log/nginx/access.log
- ;;
(help)
printUsage
exit 1
@@ -179,8 +171,7 @@ case "$1" in
esac
# init directories and log files
-mkdir -p ${DOLPHINSCHEDULER_LOGS} && mkdir -p /var/log/nginx/ && cat /dev/null >> ${LOGFILE}
+mkdir -p ${DOLPHINSCHEDULER_LOGS} && cat /dev/null >> ${LOGFILE}
echo "tail begin"
exec bash -c "tail -n 1 -f ${LOGFILE}"
-
diff --git a/docker/docker-swarm/check b/docker/docker-swarm/check
old mode 100644
new mode 100755
index 59203c5b3e..f4093664da
--- a/docker/docker-swarm/check
+++ b/docker/docker-swarm/check
@@ -25,7 +25,7 @@ else
echo "Server start failed "$server_num
exit 1
fi
-ready=`curl http://127.0.0.1:8888/dolphinscheduler/login -d 'userName=admin&userPassword=dolphinscheduler123' -v | grep "login success" | wc -l`
+ready=`curl http://127.0.0.1:12345/dolphinscheduler/login -d 'userName=admin&userPassword=dolphinscheduler123' -v | grep "login success" | wc -l`
if [ $ready -eq 1 ]
then
echo "Servers is ready"
diff --git a/docker/docker-swarm/docker-compose.yml b/docker/docker-swarm/docker-compose.yml
index 349b3ad790..04a9bc556d 100644
--- a/docker/docker-swarm/docker-compose.yml
+++ b/docker/docker-swarm/docker-compose.yml
@@ -31,6 +31,7 @@ services:
volumes:
- dolphinscheduler-postgresql:/bitnami/postgresql
- dolphinscheduler-postgresql-initdb:/docker-entrypoint-initdb.d
+ restart: unless-stopped
networks:
- dolphinscheduler
@@ -45,13 +46,14 @@ services:
ZOO_4LW_COMMANDS_WHITELIST: srvr,ruok,wchs,cons
volumes:
- dolphinscheduler-zookeeper:/bitnami/zookeeper
+ restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-api:
image: apache/dolphinscheduler:latest
container_name: dolphinscheduler-api
- command: ["api-server"]
+ command: api-server
ports:
- 12345:12345
environment:
@@ -62,6 +64,9 @@ services:
DATABASE_PASSWORD: root
DATABASE_DATABASE: dolphinscheduler
ZOOKEEPER_QUORUM: dolphinscheduler-zookeeper:2181
+ RESOURCE_STORAGE_TYPE: HDFS
+ RESOURCE_UPLOAD_PATH: /dolphinscheduler
+ FS_DEFAULT_FS: file:///
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "ApiApplicationServer"]
interval: 30s
@@ -72,37 +77,16 @@ services:
- dolphinscheduler-postgresql
- dolphinscheduler-zookeeper
volumes:
- - ./dolphinscheduler-logs:/opt/dolphinscheduler/logs
- networks:
- - dolphinscheduler
-
- dolphinscheduler-frontend:
- image: apache/dolphinscheduler:latest
- container_name: dolphinscheduler-frontend
- command: ["frontend"]
- ports:
- - 8888:8888
- environment:
- TZ: Asia/Shanghai
- FRONTEND_API_SERVER_HOST: dolphinscheduler-api
- FRONTEND_API_SERVER_PORT: 12345
- healthcheck:
- test: ["CMD", "nc", "-z", "localhost", "8888"]
- interval: 30s
- timeout: 5s
- retries: 3
- start_period: 30s
- depends_on:
- - dolphinscheduler-api
- volumes:
- - ./dolphinscheduler-logs:/var/log/nginx
+ - dolphinscheduler-logs:/opt/dolphinscheduler/logs
+ - dolphinscheduler-resource-local:/dolphinscheduler
+ restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-alert:
image: apache/dolphinscheduler:latest
container_name: dolphinscheduler-alert
- command: ["alert-server"]
+ command: alert-server
environment:
TZ: Asia/Shanghai
XLS_FILE_PATH: "/tmp/xls"
@@ -133,14 +117,15 @@ services:
depends_on:
- dolphinscheduler-postgresql
volumes:
- - ./dolphinscheduler-logs:/opt/dolphinscheduler/logs
+ - dolphinscheduler-logs:/opt/dolphinscheduler/logs
+ restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-master:
image: apache/dolphinscheduler:latest
container_name: dolphinscheduler-master
- command: ["master-server"]
+ command: master-server
ports:
- 5678:5678
environment:
@@ -168,14 +153,15 @@ services:
- dolphinscheduler-postgresql
- dolphinscheduler-zookeeper
volumes:
- - ./dolphinscheduler-logs:/opt/dolphinscheduler/logs
+ - dolphinscheduler-logs:/opt/dolphinscheduler/logs
+ restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-worker:
image: apache/dolphinscheduler:latest
container_name: dolphinscheduler-worker
- command: ["worker-server"]
+ command: worker-server
ports:
- 1234:1234
- 50051:50051
@@ -188,30 +174,40 @@ services:
WORKER_RESERVED_MEMORY: "0.1"
WORKER_GROUP: "default"
WORKER_WEIGHT: "100"
- DOLPHINSCHEDULER_DATA_BASEDIR_PATH: "/tmp/dolphinscheduler"
+ DOLPHINSCHEDULER_DATA_BASEDIR_PATH: /tmp/dolphinscheduler
+ 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: ""
DATABASE_HOST: dolphinscheduler-postgresql
DATABASE_PORT: 5432
DATABASE_USERNAME: root
DATABASE_PASSWORD: root
DATABASE_DATABASE: dolphinscheduler
ZOOKEEPER_QUORUM: dolphinscheduler-zookeeper:2181
+ RESOURCE_STORAGE_TYPE: HDFS
+ RESOURCE_UPLOAD_PATH: /dolphinscheduler
+ FS_DEFAULT_FS: file:///
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "WorkerServer"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
- depends_on:
+ depends_on:
- dolphinscheduler-postgresql
- dolphinscheduler-zookeeper
volumes:
- - type: bind
- source: ./dolphinscheduler_env.sh
- target: /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh
- - type: volume
- source: dolphinscheduler-worker-data
- target: /tmp/dolphinscheduler
- - ./dolphinscheduler-logs:/opt/dolphinscheduler/logs
+ - ./dolphinscheduler_env.sh:/opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh
+ - dolphinscheduler-worker-data:/tmp/dolphinscheduler
+ - dolphinscheduler-logs:/opt/dolphinscheduler/logs
+ - dolphinscheduler-resource-local:/dolphinscheduler
+ restart: unless-stopped
networks:
- dolphinscheduler
@@ -224,7 +220,5 @@ volumes:
dolphinscheduler-postgresql-initdb:
dolphinscheduler-zookeeper:
dolphinscheduler-worker-data:
-
-configs:
- dolphinscheduler-worker-task-env:
- file: ./dolphinscheduler_env.sh
\ No newline at end of file
+ dolphinscheduler-logs:
+ 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 dff4a47b2c..39c36347bb 100644
--- a/docker/docker-swarm/docker-stack.yml
+++ b/docker/docker-swarm/docker-stack.yml
@@ -20,13 +20,13 @@ services:
dolphinscheduler-postgresql:
image: bitnami/postgresql:latest
+ ports:
+ - 5432:5432
environment:
TZ: Asia/Shanghai
POSTGRESQL_USERNAME: root
POSTGRESQL_PASSWORD: root
POSTGRESQL_DATABASE: dolphinscheduler
- ports:
- - 5432:5432
volumes:
- dolphinscheduler-postgresql:/bitnami/postgresql
networks:
@@ -37,12 +37,12 @@ services:
dolphinscheduler-zookeeper:
image: bitnami/zookeeper:latest
+ ports:
+ - 2181:2181
environment:
TZ: Asia/Shanghai
ALLOW_ANONYMOUS_LOGIN: "yes"
ZOO_4LW_COMMANDS_WHITELIST: srvr,ruok,wchs,cons
- ports:
- - 2181:2181
volumes:
- dolphinscheduler-zookeeper:/bitnami/zookeeper
networks:
@@ -53,7 +53,9 @@ services:
dolphinscheduler-api:
image: apache/dolphinscheduler:latest
- command: ["api-server"]
+ command: api-server
+ ports:
+ - 12345:12345
environment:
TZ: Asia/Shanghai
DATABASE_HOST: dolphinscheduler-postgresql
@@ -62,39 +64,17 @@ services:
DATABASE_PASSWORD: root
DATABASE_DATABASE: dolphinscheduler
ZOOKEEPER_QUORUM: dolphinscheduler-zookeeper:2181
- ports:
- - 12345:12345
+ RESOURCE_STORAGE_TYPE: HDFS
+ RESOURCE_UPLOAD_PATH: /dolphinscheduler
+ FS_DEFAULT_FS: file:///
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "ApiApplicationServer"]
- interval: 30
+ interval: 30s
timeout: 5s
retries: 3
start_period: 30s
volumes:
- dolphinscheduler-logs:/opt/dolphinscheduler/logs
- networks:
- - dolphinscheduler
- deploy:
- mode: replicated
- replicas: 1
-
- dolphinscheduler-frontend:
- image: apache/dolphinscheduler:latest
- command: ["frontend"]
- ports:
- - 8888:8888
- environment:
- TZ: Asia/Shanghai
- FRONTEND_API_SERVER_HOST: dolphinscheduler-api
- FRONTEND_API_SERVER_PORT: 12345
- healthcheck:
- test: ["CMD", "nc", "-z", "localhost", "8888"]
- interval: 30
- timeout: 5s
- retries: 3
- start_period: 30s
- volumes:
- - dolphinscheduler-logs:/var/log/nginx
networks:
- dolphinscheduler
deploy:
@@ -103,7 +83,7 @@ services:
dolphinscheduler-alert:
image: apache/dolphinscheduler:latest
- command: ["alert-server"]
+ command: alert-server
environment:
TZ: Asia/Shanghai
XLS_FILE_PATH: "/tmp/xls"
@@ -127,13 +107,13 @@ services:
DATABASE_DATABASE: dolphinscheduler
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "AlertServer"]
- interval: 30
+ interval: 30s
timeout: 5s
retries: 3
start_period: 30s
volumes:
- dolphinscheduler-logs:/opt/dolphinscheduler/logs
- networks:
+ networks:
- dolphinscheduler
deploy:
mode: replicated
@@ -141,10 +121,10 @@ services:
dolphinscheduler-master:
image: apache/dolphinscheduler:latest
- command: ["master-server"]
- ports:
+ command: master-server
+ ports:
- 5678:5678
- environment:
+ environment:
TZ: Asia/Shanghai
MASTER_EXEC_THREADS: "100"
MASTER_EXEC_TASK_NUM: "20"
@@ -161,7 +141,7 @@ services:
ZOOKEEPER_QUORUM: dolphinscheduler-zookeeper:2181
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "MasterServer"]
- interval: 30
+ interval: 30s
timeout: 5s
retries: 3
start_period: 30s
@@ -175,11 +155,11 @@ services:
dolphinscheduler-worker:
image: apache/dolphinscheduler:latest
- command: ["worker-server"]
- ports:
+ command: worker-server
+ ports:
- 1234:1234
- 50051:50051
- environment:
+ environment:
TZ: Asia/Shanghai
WORKER_EXEC_THREADS: "100"
WORKER_HEARTBEAT_INTERVAL: "10"
@@ -188,25 +168,37 @@ services:
WORKER_RESERVED_MEMORY: "0.1"
WORKER_GROUP: "default"
WORKER_WEIGHT: "100"
- DOLPHINSCHEDULER_DATA_BASEDIR_PATH: "/tmp/dolphinscheduler"
+ DOLPHINSCHEDULER_DATA_BASEDIR_PATH: /tmp/dolphinscheduler
+ 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: ""
DATABASE_HOST: dolphinscheduler-postgresql
DATABASE_PORT: 5432
DATABASE_USERNAME: root
DATABASE_PASSWORD: root
DATABASE_DATABASE: dolphinscheduler
ZOOKEEPER_QUORUM: dolphinscheduler-zookeeper:2181
+ RESOURCE_STORAGE_TYPE: HDFS
+ RESOURCE_UPLOAD_PATH: /dolphinscheduler
+ FS_DEFAULT_FS: file:///
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "WorkerServer"]
- interval: 30
+ interval: 30s
timeout: 5s
retries: 3
start_period: 30s
- volumes:
- - dolphinscheduler-worker-data:/tmp/dolphinscheduler
- - dolphinscheduler-logs:/opt/dolphinscheduler/logs
configs:
- source: dolphinscheduler-worker-task-env
target: /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh
+ volumes:
+ - dolphinscheduler-worker-data:/tmp/dolphinscheduler
+ - dolphinscheduler-logs:/opt/dolphinscheduler/logs
networks:
- dolphinscheduler
deploy:
diff --git a/docker/docker-swarm/dolphinscheduler_env.sh b/docker/docker-swarm/dolphinscheduler_env.sh
old mode 100644
new mode 100755
index 654318cb41..7fd39335ae
--- a/docker/docker-swarm/dolphinscheduler_env.sh
+++ b/docker/docker-swarm/dolphinscheduler_env.sh
@@ -15,6 +15,14 @@
# limitations under the License.
#
-export PYTHON_HOME=/usr/bin/python2
+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=/usr/bin/python
export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
-export PATH=$PYTHON_HOME:$JAVA_HOME/bin:$PATH
\ No newline at end of file
+export HIVE_HOME=/opt/soft/hive
+export FLINK_HOME=/opt/soft/flink
+export DATAX_HOME=/opt/soft/datax/bin/datax.py
+
+export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$DATAX_HOME:$PATH
diff --git a/docker/kubernetes/dolphinscheduler/Chart.yaml b/docker/kubernetes/dolphinscheduler/Chart.yaml
index 9d640869dd..1e0ca755b9 100644
--- a/docker/kubernetes/dolphinscheduler/Chart.yaml
+++ b/docker/kubernetes/dolphinscheduler/Chart.yaml
@@ -22,7 +22,7 @@ home: https://dolphinscheduler.apache.org
icon: https://dolphinscheduler.apache.org/img/hlogo_colorful.svg
keywords:
- dolphinscheduler
-- Scheduler
+- scheduler
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
@@ -35,18 +35,18 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
-version: 1.0.0
+version: 1.2.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
-appVersion: 1.3.0
+appVersion: 1.4.0
dependencies:
- name: postgresql
- version: 8.x.x
+ version: 10.x.x
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- name: zookeeper
- version: 5.x.x
+ version: 6.x.x
repository: https://charts.bitnami.com/bitnami
condition: zookeeper.enabled
diff --git a/docker/kubernetes/dolphinscheduler/README.md b/docker/kubernetes/dolphinscheduler/README.md
index 0691b1ed2e..318c3a9132 100644
--- a/docker/kubernetes/dolphinscheduler/README.md
+++ b/docker/kubernetes/dolphinscheduler/README.md
@@ -7,19 +7,20 @@ This chart bootstraps a [Dolphin Scheduler](https://dolphinscheduler.apache.org)
## Prerequisites
-- Kubernetes 1.10+
+- Helm 3.1.0+
+- Kubernetes 1.12+
- PV provisioner support in the underlying infrastructure
## Installing the Chart
-To install the chart with the release name `my-release`:
+To install the chart with the release name `dolphinscheduler`:
```bash
$ git clone https://github.com/apache/incubator-dolphinscheduler.git
-$ cd incubator-dolphinscheduler/kubernetes/dolphinscheduler
+$ cd incubator-dolphinscheduler/docker/kubernetes/dolphinscheduler
$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm dependency update .
-$ helm install --name dolphinscheduler .
+$ helm install dolphinscheduler .
```
These commands deploy Dolphin Scheduler on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
@@ -30,7 +31,7 @@ These commands deploy Dolphin Scheduler on the Kubernetes cluster in the default
To uninstall/delete the `dolphinscheduler` deployment:
```bash
-$ helm delete --purge dolphinscheduler
+$ helm uninstall dolphinscheduler
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
@@ -220,32 +221,6 @@ The following tables lists the configurable parameters of the Dolphins Scheduler
| `api.persistentVolumeClaim.storageClassName` | `api` logs data Persistent Volume Storage Class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` |
| `api.persistentVolumeClaim.storage` | `PersistentVolumeClaim` Size | `20Gi` |
| | | |
-| `frontend.strategy.type` | Type of deployment. Can be "Recreate" or "RollingUpdate" | `RollingUpdate` |
-| `frontend.strategy.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods | `25%` |
-| `frontend.strategy.rollingUpdate.maxUnavailable` | The maximum number of pods that can be unavailable during the update | `25%` |
-| `frontend.replicas` | Replicas is the desired number of replicas of the given Template | `1` |
-| `frontend.nodeSelector` | NodeSelector is a selector which must be true for the pod to fit on a node | `{}` |
-| `frontend.tolerations` | If specified, the pod's tolerations | `{}` |
-| `frontend.affinity` | If specified, the pod's scheduling constraints | `{}` |
-| `frontend.resources` | The `resource` limit and request config for frontend server. | `{}` |
-| `frontend.annotations` | The `annotations` for frontend server. | `{}` |
-| `frontend.livenessProbe.enabled` | Turn on and off liveness probe | `true` |
-| `frontend.livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `30` |
-| `frontend.livenessProbe.periodSeconds` | How often to perform the probe | `30` |
-| `frontend.livenessProbe.timeoutSeconds` | When the probe times out | `5` |
-| `frontend.livenessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` |
-| `frontend.livenessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` |
-| `frontend.readinessProbe.enabled` | Turn on and off readiness probe | `true` |
-| `frontend.readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `30` |
-| `frontend.readinessProbe.periodSeconds` | How often to perform the probe | `30` |
-| `frontend.readinessProbe.timeoutSeconds` | When the probe times out | `5` |
-| `frontend.readinessProbe.failureThreshold` | Minimum consecutive successes for the probe | `3` |
-| `frontend.readinessProbe.successThreshold` | Minimum consecutive failures for the probe | `1` |
-| `frontend.persistentVolumeClaim.enabled` | Set `frontend.persistentVolumeClaim.enabled` to `true` to mount a new volume for `frontend` | `false` |
-| `frontend.persistentVolumeClaim.accessModes` | `PersistentVolumeClaim` Access Modes | `[ReadWriteOnce]` |
-| `frontend.persistentVolumeClaim.storageClassName` | `frontend` logs data Persistent Volume Storage Class. If set to "-", storageClassName: "", which disables dynamic provisioning | `-` |
-| `frontend.persistentVolumeClaim.storage` | `PersistentVolumeClaim` Size | `20Gi` |
-| | | |
| `ingress.enabled` | Enable ingress | `false` |
| `ingress.host` | Ingress host | `dolphinscheduler.org` |
| `ingress.path` | Ingress path | `/` |
diff --git a/docker/kubernetes/dolphinscheduler/requirements.yaml b/docker/kubernetes/dolphinscheduler/requirements.yaml
deleted file mode 100644
index e219975995..0000000000
--- a/docker/kubernetes/dolphinscheduler/requirements.yaml
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# 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.
-#
-dependencies:
-- name: postgresql
- version: 8.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: postgresql.enabled
-- name: zookeeper
- version: 5.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: redis.enabled
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/requirements.yaml~HEAD b/docker/kubernetes/dolphinscheduler/requirements.yaml~HEAD
deleted file mode 100644
index e219975995..0000000000
--- a/docker/kubernetes/dolphinscheduler/requirements.yaml~HEAD
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# 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.
-#
-dependencies:
-- name: postgresql
- version: 8.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: postgresql.enabled
-- name: zookeeper
- version: 5.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: redis.enabled
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/requirements.yaml~HEAD_0 b/docker/kubernetes/dolphinscheduler/requirements.yaml~HEAD_0
deleted file mode 100644
index e219975995..0000000000
--- a/docker/kubernetes/dolphinscheduler/requirements.yaml~HEAD_0
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# 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.
-#
-dependencies:
-- name: postgresql
- version: 8.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: postgresql.enabled
-- name: zookeeper
- version: 5.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: redis.enabled
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/requirements.yaml~dev b/docker/kubernetes/dolphinscheduler/requirements.yaml~dev
deleted file mode 100644
index e219975995..0000000000
--- a/docker/kubernetes/dolphinscheduler/requirements.yaml~dev
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# 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.
-#
-dependencies:
-- name: postgresql
- version: 8.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: postgresql.enabled
-- name: zookeeper
- version: 5.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: redis.enabled
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/requirements.yaml~dev_0 b/docker/kubernetes/dolphinscheduler/requirements.yaml~dev_0
deleted file mode 100644
index e219975995..0000000000
--- a/docker/kubernetes/dolphinscheduler/requirements.yaml~dev_0
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# 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.
-#
-dependencies:
-- name: postgresql
- version: 8.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: postgresql.enabled
-- name: zookeeper
- version: 5.x.x
- repository: https://charts.bitnami.com/bitnami
- condition: redis.enabled
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/templates/NOTES.txt b/docker/kubernetes/dolphinscheduler/templates/NOTES.txt
index 256c53ca57..8afe766d27 100644
--- a/docker/kubernetes/dolphinscheduler/templates/NOTES.txt
+++ b/docker/kubernetes/dolphinscheduler/templates/NOTES.txt
@@ -15,9 +15,9 @@
# limitations under the License.
#
-** Please be patient while the chart is being deployed **
+** Please be patient while the chart Dolphinscheduler {{ .Chart.AppVersion }} is being deployed **
-1. Get the Dolphinscheduler URL by running:
+Get the Dolphinscheduler URL by running:
{{- if .Values.ingress.enabled }}
@@ -26,6 +26,6 @@
{{- else }}
- kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "dolphinscheduler.fullname" . }}-frontend 8888:8888
+ kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "dolphinscheduler.fullname" . }}-api 12345:12345
{{- end }}
diff --git a/docker/kubernetes/dolphinscheduler/templates/_helpers.tpl b/docker/kubernetes/dolphinscheduler/templates/_helpers.tpl
index 1f121dfea8..ccfc746645 100644
--- a/docker/kubernetes/dolphinscheduler/templates/_helpers.tpl
+++ b/docker/kubernetes/dolphinscheduler/templates/_helpers.tpl
@@ -135,7 +135,7 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
Create a default dolphinscheduler worker base dir.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
-{{- define "dolphinscheduler.worker.base.dir" -}}
-{{- $name := default "/tmp/dolphinscheduler" .Values.worker.configmap.DOLPHINSCHEDULER_DATA_BASEDIR_PATH -}}
+{{- define "dolphinscheduler.data.basedir.path" -}}
+{{- $name := default "/tmp/dolphinscheduler" .Values.common.configmap.DOLPHINSCHEDULER_DATA_BASEDIR_PATH -}}
{{- printf "%s" $name | trunc 63 | trimSuffix "/" -}}
{{- end -}}
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-alert.yaml b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-alert.yaml
index 2c5b76c3f0..2c7dd67c57 100644
--- a/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-alert.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-alert.yaml
@@ -24,6 +24,7 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
data:
+ DOLPHINSCHEDULER_OPTS: {{ .Values.alert.configmap.DOLPHINSCHEDULER_OPTS | quote }}
ALERT_PLUGIN_DIR: {{ .Values.alert.configmap.ALERT_PLUGIN_DIR | quote }}
XLS_FILE_PATH: {{ .Values.alert.configmap.XLS_FILE_PATH | quote }}
MAIL_SERVER_HOST: {{ .Values.alert.configmap.MAIL_SERVER_HOST | quote }}
diff --git a/docker/kubernetes/dolphinscheduler/templates/svc-dolphinscheduler-frontend.yaml b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-api.yaml
similarity index 69%
rename from docker/kubernetes/dolphinscheduler/templates/svc-dolphinscheduler-frontend.yaml
rename to docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-api.yaml
index 60d0d6e7b5..3845f1f67c 100644
--- a/docker/kubernetes/dolphinscheduler/templates/svc-dolphinscheduler-frontend.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-api.yaml
@@ -14,22 +14,15 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+{{- if .Values.api.configmap }}
apiVersion: v1
-kind: Service
+kind: ConfigMap
metadata:
- name: {{ include "dolphinscheduler.fullname" . }}-frontend
+ name: {{ include "dolphinscheduler.fullname" . }}-api
labels:
- app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-frontend
+ app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-api
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
-spec:
- ports:
- - port: 8888
- targetPort: tcp-port
- protocol: TCP
- name: tcp-port
- selector:
- app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-frontend
- app.kubernetes.io/instance: {{ .Release.Name }}
- app.kubernetes.io/managed-by: {{ .Release.Service }}
- app.kubernetes.io/component: frontend
\ No newline at end of file
+data:
+ DOLPHINSCHEDULER_OPTS: {{ .Values.api.configmap.DOLPHINSCHEDULER_OPTS | quote }}
+{{- end }}
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-common.yaml b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-common.yaml
index 931f6d48e4..1fcb5b5992 100644
--- a/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-common.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-common.yaml
@@ -24,12 +24,14 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
data:
- DOLPHINSCHEDULER_ENV_PATH: {{ .Values.common.configmap.DOLPHINSCHEDULER_ENV_PATH | quote }}
- DOLPHINSCHEDULER_DATA_BASEDIR_PATH: {{ .Values.common.configmap.DOLPHINSCHEDULER_DATA_BASEDIR_PATH | quote }}
+ DOLPHINSCHEDULER_ENV: |-
+ {{- range .Values.common.configmap.DOLPHINSCHEDULER_ENV }}
+ {{ . }}
+ {{- end }}
+ DOLPHINSCHEDULER_DATA_BASEDIR_PATH: {{ include "dolphinscheduler.data.basedir.path" . | quote }}
RESOURCE_STORAGE_TYPE: {{ .Values.common.configmap.RESOURCE_STORAGE_TYPE | quote }}
RESOURCE_UPLOAD_PATH: {{ .Values.common.configmap.RESOURCE_UPLOAD_PATH | quote }}
FS_DEFAULT_FS: {{ .Values.common.configmap.FS_DEFAULT_FS | quote }}
FS_S3A_ENDPOINT: {{ .Values.common.configmap.FS_S3A_ENDPOINT | quote }}
FS_S3A_ACCESS_KEY: {{ .Values.common.configmap.FS_S3A_ACCESS_KEY | quote }}
- FS_S3A_SECRET_KEY: {{ .Values.common.configmap.FS_S3A_SECRET_KEY | quote }}
{{- end }}
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-master.yaml b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-master.yaml
index da82d639cb..7c1be7717e 100644
--- a/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-master.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-master.yaml
@@ -24,6 +24,7 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
data:
+ DOLPHINSCHEDULER_OPTS: {{ .Values.master.configmap.DOLPHINSCHEDULER_OPTS | quote }}
MASTER_EXEC_THREADS: {{ .Values.master.configmap.MASTER_EXEC_THREADS | quote }}
MASTER_EXEC_TASK_NUM: {{ .Values.master.configmap.MASTER_EXEC_TASK_NUM | quote }}
MASTER_HEARTBEAT_INTERVAL: {{ .Values.master.configmap.MASTER_HEARTBEAT_INTERVAL | quote }}
@@ -32,5 +33,4 @@ data:
MASTER_MAX_CPULOAD_AVG: {{ .Values.master.configmap.MASTER_MAX_CPULOAD_AVG | quote }}
MASTER_RESERVED_MEMORY: {{ .Values.master.configmap.MASTER_RESERVED_MEMORY | quote }}
MASTER_LISTEN_PORT: {{ .Values.master.configmap.MASTER_LISTEN_PORT | quote }}
- DOLPHINSCHEDULER_DATA_BASEDIR_PATH: {{ include "dolphinscheduler.worker.base.dir" . | quote }}
{{- end }}
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-worker.yaml b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-worker.yaml
index 569341c225..78b6ed1036 100644
--- a/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-worker.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/configmap-dolphinscheduler-worker.yaml
@@ -24,17 +24,12 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
data:
+ DOLPHINSCHEDULER_OPTS: {{ .Values.worker.configmap.DOLPHINSCHEDULER_OPTS | quote }}
WORKER_EXEC_THREADS: {{ .Values.worker.configmap.WORKER_EXEC_THREADS | quote }}
WORKER_HEARTBEAT_INTERVAL: {{ .Values.worker.configmap.WORKER_HEARTBEAT_INTERVAL | quote }}
- WORKER_FETCH_TASK_NUM: {{ .Values.worker.configmap.WORKER_FETCH_TASK_NUM | quote }}
WORKER_MAX_CPULOAD_AVG: {{ .Values.worker.configmap.WORKER_MAX_CPULOAD_AVG | quote }}
WORKER_RESERVED_MEMORY: {{ .Values.worker.configmap.WORKER_RESERVED_MEMORY | quote }}
WORKER_LISTEN_PORT: {{ .Values.worker.configmap.WORKER_LISTEN_PORT | quote }}
WORKER_GROUP: {{ .Values.worker.configmap.WORKER_GROUP | quote }}
WORKER_WEIGHT: {{ .Values.worker.configmap.WORKER_WEIGHT | quote }}
- DOLPHINSCHEDULER_DATA_BASEDIR_PATH: {{ include "dolphinscheduler.worker.base.dir" . | quote }}
- dolphinscheduler_env.sh: |-
- {{- range .Values.worker.configmap.DOLPHINSCHEDULER_ENV }}
- {{ . }}
- {{- end }}
{{- end }}
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-alert.yaml b/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-alert.yaml
index fb9a23786b..e4a2b21ffa 100644
--- a/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-alert.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-alert.yaml
@@ -57,35 +57,6 @@ spec:
{{- if .Values.alert.tolerations }}
tolerations: {{- toYaml . | nindent 8 }}
{{- end }}
- initContainers:
- - name: init-database
- image: busybox:1.31.0
- command:
- - /bin/sh
- - -ec
- - |
- while ! nc -z ${DATABASE_HOST} ${DATABASE_PORT}; do
- counter=$((counter+1))
- if [ $counter == 5 ]; then
- echo "Error: Couldn't connect to database."
- exit 1
- fi
- echo "Trying to connect to database at ${DATABASE_HOST}:${DATABASE_PORT}. Attempt $counter."
- sleep 60
- done
- env:
- - name: DATABASE_HOST
- {{- if .Values.postgresql.enabled }}
- value: {{ template "dolphinscheduler.postgresql.fullname" . }}
- {{- else }}
- value: {{ .Values.externalDatabase.host | quote }}
- {{- end }}
- - name: DATABASE_PORT
- {{- if .Values.postgresql.enabled }}
- value: "5432"
- {{- else }}
- value: {{ .Values.externalDatabase.port | quote }}
- {{- end }}
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
- name: {{ include "dolphinscheduler.image.pullSecrets" . }}
@@ -93,14 +64,17 @@ spec:
containers:
- name: {{ include "dolphinscheduler.fullname" . }}-alert
image: {{ include "dolphinscheduler.image.repository" . | quote }}
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
args:
- "alert-server"
- imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- - name: DOLPHINSCHEDULER_OPTS
- value: {{ default "" .Values.alert.jvmOptions }}
- name: TZ
value: {{ .Values.timezone }}
+ - name: DOLPHINSCHEDULER_OPTS
+ valueFrom:
+ configMapKeyRef:
+ key: DOLPHINSCHEDULER_OPTS
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
- name: ALERT_PLUGIN_DIR
valueFrom:
configMapKeyRef:
@@ -228,36 +202,6 @@ spec:
{{- else }}
value: {{ .Values.externalDatabase.params | quote }}
{{- end }}
- - name: RESOURCE_STORAGE_TYPE
- valueFrom:
- configMapKeyRef:
- key: RESOURCE_STORAGE_TYPE
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: RESOURCE_UPLOAD_PATH
- valueFrom:
- configMapKeyRef:
- key: RESOURCE_UPLOAD_PATH
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: FS_DEFAULT_FS
- valueFrom:
- configMapKeyRef:
- key: FS_DEFAULT_FS
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: FS_S3A_ENDPOINT
- valueFrom:
- configMapKeyRef:
- key: FS_S3A_ENDPOINT
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: FS_S3A_ACCESS_KEY
- valueFrom:
- configMapKeyRef:
- key: FS_S3A_ACCESS_KEY
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: FS_S3A_SECRET_KEY
- valueFrom:
- configMapKeyRef:
- key: FS_S3A_SECRET_KEY
- name: {{ include "dolphinscheduler.fullname" . }}-common
{{- if .Values.alert.resources }}
resources:
limits:
diff --git a/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-api.yaml b/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-api.yaml
index 92c2c72398..563f9ebbf9 100644
--- a/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-api.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-api.yaml
@@ -57,35 +57,6 @@ spec:
{{- if .Values.api.tolerations }}
tolerations: {{- toYaml . | nindent 8 }}
{{- end }}
- initContainers:
- - name: init-database
- image: busybox:1.31.0
- command:
- - /bin/sh
- - -ec
- - |
- while ! nc -z ${DATABASE_HOST} ${DATABASE_PORT}; do
- counter=$((counter+1))
- if [ $counter == 5 ]; then
- echo "Error: Couldn't connect to database."
- exit 1
- fi
- echo "Trying to connect to database at ${DATABASE_HOST}:${DATABASE_PORT}. Attempt $counter."
- sleep 60
- done
- env:
- - name: DATABASE_HOST
- {{- if .Values.postgresql.enabled }}
- value: {{ template "dolphinscheduler.postgresql.fullname" . }}
- {{- else }}
- value: {{ .Values.externalDatabase.host | quote }}
- {{- end }}
- - name: DATABASE_PORT
- {{- if .Values.postgresql.enabled }}
- value: "5432"
- {{- else }}
- value: {{ .Values.externalDatabase.port | quote }}
- {{- end }}
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
- name: {{ include "dolphinscheduler.image.pullSecrets" . }}
@@ -93,17 +64,20 @@ spec:
containers:
- name: {{ include "dolphinscheduler.fullname" . }}-api
image: {{ include "dolphinscheduler.image.repository" . | quote }}
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
args:
- "api-server"
ports:
- containerPort: 12345
name: tcp-port
- imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- - name: DOLPHINSCHEDULER_OPTS
- value: {{ default "" .Values.api.jvmOptions }}
- name: TZ
value: {{ .Values.timezone }}
+ - name: DOLPHINSCHEDULER_OPTS
+ valueFrom:
+ configMapKeyRef:
+ key: DOLPHINSCHEDULER_OPTS
+ name: {{ include "dolphinscheduler.fullname" . }}-api
- name: DATABASE_TYPE
{{- if .Values.postgresql.enabled }}
value: "postgresql"
@@ -164,7 +138,7 @@ spec:
{{- end }}
- name: ZOOKEEPER_ROOT
{{- if .Values.zookeeper.enabled }}
- value: "/dolphinscheduler"
+ value: {{ .Values.zookeeper.zookeeperRoot }}
{{- else }}
value: {{ .Values.externalZookeeper.zookeeperRoot }}
{{- end }}
@@ -183,6 +157,7 @@ spec:
configMapKeyRef:
key: FS_DEFAULT_FS
name: {{ include "dolphinscheduler.fullname" . }}-common
+ {{- if eq .Values.common.configmap.RESOURCE_STORAGE_TYPE "S3" }}
- name: FS_S3A_ENDPOINT
valueFrom:
configMapKeyRef:
@@ -195,9 +170,10 @@ spec:
name: {{ include "dolphinscheduler.fullname" . }}-common
- name: FS_S3A_SECRET_KEY
valueFrom:
- configMapKeyRef:
- key: FS_S3A_SECRET_KEY
- name: {{ include "dolphinscheduler.fullname" . }}-common
+ secretKeyRef:
+ key: fs-s3a-secret-key
+ name: {{ printf "%s-%s" .Release.Name "fs-s3a" }}
+ {{- end }}
{{- if .Values.api.resources }}
resources:
limits:
diff --git a/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-frontend.yaml b/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-frontend.yaml
deleted file mode 100644
index 04b9408d9f..0000000000
--- a/docker/kubernetes/dolphinscheduler/templates/deployment-dolphinscheduler-frontend.yaml
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# 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.
-#
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: {{ include "dolphinscheduler.fullname" . }}-frontend
- labels:
- app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-frontend
- app.kubernetes.io/instance: {{ .Release.Name }}
- app.kubernetes.io/managed-by: {{ .Release.Service }}
- app.kubernetes.io/component: frontend
-spec:
- replicas: {{ .Values.frontend.replicas }}
- selector:
- matchLabels:
- app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-frontend
- app.kubernetes.io/instance: {{ .Release.Name }}
- app.kubernetes.io/managed-by: {{ .Release.Service }}
- app.kubernetes.io/component: frontend
- strategy:
- type: {{ .Values.frontend.strategy.type | quote }}
- rollingUpdate:
- maxSurge: {{ .Values.frontend.strategy.rollingUpdate.maxSurge | quote }}
- maxUnavailable: {{ .Values.frontend.strategy.rollingUpdate.maxUnavailable | quote }}
- template:
- metadata:
- labels:
- app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-frontend
- app.kubernetes.io/instance: {{ .Release.Name }}
- app.kubernetes.io/managed-by: {{ .Release.Service }}
- app.kubernetes.io/component: frontend
- {{- if .Values.alert.annotations }}
- annotations:
- {{- toYaml .Values.alert.annotations | nindent 8 }}
- {{- end }}
- spec:
- {{- if .Values.frontend.affinity }}
- affinity: {{- toYaml .Values.frontend.affinity | nindent 8 }}
- {{- end }}
- {{- if .Values.frontend.nodeSelector }}
- nodeSelector: {{- toYaml .Values.frontend.nodeSelector | nindent 8 }}
- {{- end }}
- {{- if .Values.frontend.tolerations }}
- tolerations: {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- if .Values.image.pullSecrets }}
- imagePullSecrets:
- - name: {{ include "dolphinscheduler.image.pullSecrets" . }}
- {{- end }}
- containers:
- - name: {{ include "dolphinscheduler.fullname" . }}-frontend
- image: {{ include "dolphinscheduler.image.repository" . | quote }}
- args:
- - "frontend"
- ports:
- - containerPort: 8888
- name: tcp-port
- imagePullPolicy: {{ .Values.image.pullPolicy }}
- env:
- - name: TZ
- value: {{ .Values.timezone }}
- - name: FRONTEND_API_SERVER_HOST
- value: '{{ include "dolphinscheduler.fullname" . }}-api'
- - name: FRONTEND_API_SERVER_PORT
- value: "12345"
- {{- if .Values.frontend.resources }}
- resources:
- limits:
- memory: {{ .Values.frontend.resources.limits.memory | quote }}
- cpu: {{ .Values.frontend.resources.limits.cpu | quote }}
- requests:
- memory: {{ .Values.frontend.resources.requests.memory | quote }}
- cpu: {{ .Values.frontend.resources.requests.cpu | quote }}
- {{- end }}
- {{- if .Values.frontend.livenessProbe.enabled }}
- livenessProbe:
- tcpSocket:
- port: 8888
- initialDelaySeconds: {{ .Values.frontend.livenessProbe.initialDelaySeconds }}
- periodSeconds: {{ .Values.frontend.livenessProbe.periodSeconds }}
- timeoutSeconds: {{ .Values.frontend.livenessProbe.timeoutSeconds }}
- successThreshold: {{ .Values.frontend.livenessProbe.successThreshold }}
- failureThreshold: {{ .Values.frontend.livenessProbe.failureThreshold }}
- {{- end }}
- {{- if .Values.frontend.readinessProbe.enabled }}
- readinessProbe:
- tcpSocket:
- port: 8888
- initialDelaySeconds: {{ .Values.frontend.readinessProbe.initialDelaySeconds }}
- periodSeconds: {{ .Values.frontend.readinessProbe.periodSeconds }}
- timeoutSeconds: {{ .Values.frontend.readinessProbe.timeoutSeconds }}
- successThreshold: {{ .Values.frontend.readinessProbe.successThreshold }}
- failureThreshold: {{ .Values.frontend.readinessProbe.failureThreshold }}
- {{- end }}
- volumeMounts:
- - mountPath: "/var/log/nginx"
- name: {{ include "dolphinscheduler.fullname" . }}-frontend
- volumes:
- - name: {{ include "dolphinscheduler.fullname" . }}-frontend
- {{- if .Values.frontend.persistentVolumeClaim.enabled }}
- persistentVolumeClaim:
- claimName: {{ include "dolphinscheduler.fullname" . }}-frontend
- {{- else }}
- emptyDir: {}
- {{- end }}
\ No newline at end of file
diff --git a/docker/kubernetes/dolphinscheduler/templates/ingress.yaml b/docker/kubernetes/dolphinscheduler/templates/ingress.yaml
index d0f923dcf1..6edc82b12a 100644
--- a/docker/kubernetes/dolphinscheduler/templates/ingress.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/ingress.yaml
@@ -30,7 +30,7 @@ spec:
paths:
- path: {{ .Values.ingress.path }}
backend:
- serviceName: {{ include "dolphinscheduler.fullname" . }}-frontend
+ serviceName: {{ include "dolphinscheduler.fullname" . }}-api
servicePort: tcp-port
{{- if .Values.ingress.tls.enabled }}
tls:
diff --git a/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-alert.yaml b/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-alert.yaml
index 7f74cd94ae..fd5e88afb9 100644
--- a/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-alert.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-alert.yaml
@@ -25,7 +25,7 @@ metadata:
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
accessModes:
- {{- range .Values.alert.persistentVolumeClaim.accessModes }}
+ {{- range .Values.alert.persistentVolumeClaim.accessModes }}
- {{ . | quote }}
{{- end }}
storageClassName: {{ .Values.alert.persistentVolumeClaim.storageClassName | quote }}
diff --git a/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-api.yaml b/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-api.yaml
index c1074cc2b1..48292966ad 100644
--- a/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-api.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-api.yaml
@@ -25,7 +25,7 @@ metadata:
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
accessModes:
- {{- range .Values.api.persistentVolumeClaim.accessModes }}
+ {{- range .Values.api.persistentVolumeClaim.accessModes }}
- {{ . | quote }}
{{- end }}
storageClassName: {{ .Values.api.persistentVolumeClaim.storageClassName | quote }}
diff --git a/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-frontend.yaml b/docker/kubernetes/dolphinscheduler/templates/secret-external-fs-s3a.yaml
similarity index 66%
rename from docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-frontend.yaml
rename to docker/kubernetes/dolphinscheduler/templates/secret-external-fs-s3a.yaml
index ac9fe02a9e..78e7440392 100644
--- a/docker/kubernetes/dolphinscheduler/templates/pvc-dolphinscheduler-frontend.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/secret-external-fs-s3a.yaml
@@ -14,22 +14,16 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-{{- if .Values.frontend.persistentVolumeClaim.enabled }}
+{{- if eq .Values.common.configmap.RESOURCE_STORAGE_TYPE "S3" }}
apiVersion: v1
-kind: PersistentVolumeClaim
+kind: Secret
metadata:
- name: {{ include "dolphinscheduler.fullname" . }}-frontend
+ name: {{ printf "%s-%s" .Release.Name "fs-s3a" }}
labels:
- app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-frontend
+ app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-fs-s3a
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
-spec:
- accessModes:
- {{- range .Values.frontend.persistentVolumeClaim.accessModes }}
- - {{ . | quote }}
- {{- end }}
- storageClassName: {{ .Values.frontend.persistentVolumeClaim.storageClassName | quote }}
- resources:
- requests:
- storage: {{ .Values.frontend.persistentVolumeClaim.storage | quote }}
+type: Opaque
+data:
+ fs-s3a-secret-key: {{ .Values.common.configmap.FS_S3A_SECRET_KEY | b64enc | 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 e9dc7919ca..85633a9f33 100644
--- a/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-master.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-master.yaml
@@ -54,59 +54,6 @@ spec:
{{- if .Values.master.tolerations }}
tolerations: {{- toYaml . | nindent 8 }}
{{- end }}
- initContainers:
- - name: init-zookeeper
- image: busybox:1.31.0
- command:
- - /bin/sh
- - -ec
- - |
- echo "${ZOOKEEPER_QUORUM}" | awk -F ',' 'BEGIN{ i=1 }{ while( i <= NF ){ print $i; i++ } }' | while read line; do
- while ! nc -z ${line%:*} ${line#*:}; do
- counter=$((counter+1))
- if [ $counter == 5 ]; then
- echo "Error: Couldn't connect to zookeeper."
- exit 1
- fi
- echo "Trying to connect to zookeeper at ${line}. Attempt $counter."
- sleep 60
- done
- done
- env:
- - name: ZOOKEEPER_QUORUM
- {{- if .Values.zookeeper.enabled }}
- value: "{{ template "dolphinscheduler.zookeeper.quorum" . }}"
- {{- else }}
- value: {{ .Values.externalZookeeper.zookeeperQuorum }}
- {{- end }}
- - name: init-database
- image: busybox:1.31.0
- command:
- - /bin/sh
- - -ec
- - |
- while ! nc -z ${DATABASE_HOST} ${DATABASE_PORT}; do
- counter=$((counter+1))
- if [ $counter == 5 ]; then
- echo "Error: Couldn't connect to database."
- exit 1
- fi
- echo "Trying to connect to database at ${DATABASE_HOST}:${DATABASE_PORT}. Attempt $counter."
- sleep 60
- done
- env:
- - name: DATABASE_HOST
- {{- if .Values.postgresql.enabled }}
- value: {{ template "dolphinscheduler.postgresql.fullname" . }}
- {{- else }}
- value: {{ .Values.externalDatabase.host | quote }}
- {{- end }}
- - name: DATABASE_PORT
- {{- if .Values.postgresql.enabled }}
- value: "5432"
- {{- else }}
- value: {{ .Values.externalDatabase.port | quote }}
- {{- end }}
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
- name: {{ include "dolphinscheduler.image.pullSecrets" . }}
@@ -114,17 +61,20 @@ spec:
containers:
- name: {{ include "dolphinscheduler.fullname" . }}-master
image: {{ include "dolphinscheduler.image.repository" . | quote }}
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
args:
- "master-server"
ports:
- containerPort: {{ .Values.master.configmap.MASTER_LISTEN_PORT }}
name: "master-port"
- imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- - name: DOLPHINSCHEDULER_OPTS
- value: {{ default "" .Values.master.jvmOptions }}
- name: TZ
value: {{ .Values.timezone }}
+ - name: DOLPHINSCHEDULER_OPTS
+ valueFrom:
+ configMapKeyRef:
+ key: DOLPHINSCHEDULER_OPTS
+ name: {{ include "dolphinscheduler.fullname" . }}-master
- name: MASTER_EXEC_THREADS
valueFrom:
configMapKeyRef:
@@ -168,7 +118,7 @@ spec:
- name: DOLPHINSCHEDULER_DATA_BASEDIR_PATH
valueFrom:
configMapKeyRef:
- name: {{ include "dolphinscheduler.fullname" . }}-master
+ name: {{ include "dolphinscheduler.fullname" . }}-common
key: DOLPHINSCHEDULER_DATA_BASEDIR_PATH
- name: DATABASE_TYPE
{{- if .Values.postgresql.enabled }}
@@ -230,40 +180,10 @@ spec:
{{- end }}
- name: ZOOKEEPER_ROOT
{{- if .Values.zookeeper.enabled }}
- value: "/dolphinscheduler"
+ value: {{ .Values.zookeeper.zookeeperRoot }}
{{- else }}
value: {{ .Values.externalZookeeper.zookeeperRoot }}
{{- end }}
- - name: RESOURCE_STORAGE_TYPE
- valueFrom:
- configMapKeyRef:
- key: RESOURCE_STORAGE_TYPE
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: RESOURCE_UPLOAD_PATH
- valueFrom:
- configMapKeyRef:
- key: RESOURCE_UPLOAD_PATH
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: FS_DEFAULT_FS
- valueFrom:
- configMapKeyRef:
- key: FS_DEFAULT_FS
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: FS_S3A_ENDPOINT
- valueFrom:
- configMapKeyRef:
- key: FS_S3A_ENDPOINT
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: FS_S3A_ACCESS_KEY
- valueFrom:
- configMapKeyRef:
- key: FS_S3A_ACCESS_KEY
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: FS_S3A_SECRET_KEY
- valueFrom:
- configMapKeyRef:
- key: FS_S3A_SECRET_KEY
- name: {{ include "dolphinscheduler.fullname" . }}-common
{{- if .Values.master.resources }}
resources:
limits:
diff --git a/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-worker.yaml b/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-worker.yaml
index ae562cc62b..b8a62fa6ae 100644
--- a/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-worker.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/statefulset-dolphinscheduler-worker.yaml
@@ -54,59 +54,6 @@ spec:
{{- if .Values.worker.tolerations }}
tolerations: {{- toYaml . | nindent 8 }}
{{- end }}
- initContainers:
- - name: init-zookeeper
- image: busybox:1.31.0
- command:
- - /bin/sh
- - -ec
- - |
- echo "${ZOOKEEPER_QUORUM}" | awk -F ',' 'BEGIN{ i=1 }{ while( i <= NF ){ print $i; i++ } }' | while read line; do
- while ! nc -z ${line%:*} ${line#*:}; do
- counter=$((counter+1))
- if [ $counter == 5 ]; then
- echo "Error: Couldn't connect to zookeeper."
- exit 1
- fi
- echo "Trying to connect to zookeeper at ${line}. Attempt $counter."
- sleep 60
- done
- done
- env:
- - name: ZOOKEEPER_QUORUM
- {{- if .Values.zookeeper.enabled }}
- value: "{{ template "dolphinscheduler.zookeeper.quorum" . }}"
- {{- else }}
- value: {{ .Values.externalZookeeper.zookeeperQuorum }}
- {{- end }}
- - name: init-database
- image: busybox:1.31.0
- command:
- - /bin/sh
- - -ec
- - |
- while ! nc -z ${DATABASE_HOST} ${DATABASE_PORT}; do
- counter=$((counter+1))
- if [ $counter == 5 ]; then
- echo "Error: Couldn't connect to database."
- exit 1
- fi
- echo "Trying to connect to database at ${DATABASE_HOST}:${DATABASE_PORT}. Attempt $counter."
- sleep 60
- done
- env:
- - name: DATABASE_HOST
- {{- if .Values.postgresql.enabled }}
- value: {{ template "dolphinscheduler.postgresql.fullname" . }}
- {{- else }}
- value: {{ .Values.externalDatabase.host | quote }}
- {{- end }}
- - name: DATABASE_PORT
- {{- if .Values.postgresql.enabled }}
- value: "5432"
- {{- else }}
- value: {{ .Values.externalDatabase.port | quote }}
- {{- end }}
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
- name: {{ include "dolphinscheduler.image.pullSecrets" . }}
@@ -114,29 +61,27 @@ spec:
containers:
- name: {{ include "dolphinscheduler.fullname" . }}-worker
image: {{ include "dolphinscheduler.image.repository" . | quote }}
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
args:
- "worker-server"
ports:
- containerPort: {{ .Values.worker.configmap.WORKER_LISTEN_PORT }}
name: "worker-port"
- containerPort: 50051
- name: "logs-port"
- imagePullPolicy: {{ .Values.image.pullPolicy }}
+ name: "logger-port"
env:
- - name: DOLPHINSCHEDULER_OPTS
- value: {{ default "" .Values.worker.jvmOptions }}
- name: TZ
value: {{ .Values.timezone }}
- - name: WORKER_EXEC_THREADS
+ - name: DOLPHINSCHEDULER_OPTS
valueFrom:
configMapKeyRef:
+ key: DOLPHINSCHEDULER_OPTS
name: {{ include "dolphinscheduler.fullname" . }}-worker
- key: WORKER_EXEC_THREADS
- - name: WORKER_FETCH_TASK_NUM
+ - name: WORKER_EXEC_THREADS
valueFrom:
configMapKeyRef:
name: {{ include "dolphinscheduler.fullname" . }}-worker
- key: WORKER_FETCH_TASK_NUM
+ key: WORKER_EXEC_THREADS
- name: WORKER_HEARTBEAT_INTERVAL
valueFrom:
configMapKeyRef:
@@ -170,8 +115,58 @@ spec:
- name: DOLPHINSCHEDULER_DATA_BASEDIR_PATH
valueFrom:
configMapKeyRef:
- name: {{ include "dolphinscheduler.fullname" . }}-master
+ name: {{ include "dolphinscheduler.fullname" . }}-common
key: DOLPHINSCHEDULER_DATA_BASEDIR_PATH
+ - name: ALERT_PLUGIN_DIR
+ valueFrom:
+ configMapKeyRef:
+ key: ALERT_PLUGIN_DIR
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
+ - name: XLS_FILE_PATH
+ valueFrom:
+ configMapKeyRef:
+ key: XLS_FILE_PATH
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
+ - name: MAIL_SERVER_HOST
+ valueFrom:
+ configMapKeyRef:
+ key: MAIL_SERVER_HOST
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
+ - name: MAIL_SERVER_PORT
+ valueFrom:
+ configMapKeyRef:
+ key: MAIL_SERVER_PORT
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
+ - name: MAIL_SENDER
+ valueFrom:
+ configMapKeyRef:
+ key: MAIL_SENDER
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
+ - name: MAIL_USER
+ valueFrom:
+ configMapKeyRef:
+ key: MAIL_USER
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
+ - name: MAIL_PASSWD
+ valueFrom:
+ configMapKeyRef:
+ key: MAIL_PASSWD
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
+ - name: MAIL_SMTP_STARTTLS_ENABLE
+ valueFrom:
+ configMapKeyRef:
+ key: MAIL_SMTP_STARTTLS_ENABLE
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
+ - name: MAIL_SMTP_SSL_ENABLE
+ valueFrom:
+ configMapKeyRef:
+ key: MAIL_SMTP_SSL_ENABLE
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
+ - name: MAIL_SMTP_SSL_TRUST
+ valueFrom:
+ configMapKeyRef:
+ key: MAIL_SMTP_SSL_TRUST
+ name: {{ include "dolphinscheduler.fullname" . }}-alert
- name: DATABASE_TYPE
{{- if .Values.postgresql.enabled }}
value: "postgresql"
@@ -232,7 +227,7 @@ spec:
{{- end }}
- name: ZOOKEEPER_ROOT
{{- if .Values.zookeeper.enabled }}
- value: "/dolphinscheduler"
+ value: {{ .Values.zookeeper.zookeeperRoot }}
{{- else }}
value: {{ .Values.externalZookeeper.zookeeperRoot }}
{{- end }}
@@ -251,6 +246,7 @@ spec:
configMapKeyRef:
key: FS_DEFAULT_FS
name: {{ include "dolphinscheduler.fullname" . }}-common
+ {{- if eq .Values.common.configmap.RESOURCE_STORAGE_TYPE "S3" }}
- name: FS_S3A_ENDPOINT
valueFrom:
configMapKeyRef:
@@ -263,54 +259,10 @@ spec:
name: {{ include "dolphinscheduler.fullname" . }}-common
- name: FS_S3A_SECRET_KEY
valueFrom:
- configMapKeyRef:
- key: FS_S3A_SECRET_KEY
- name: {{ include "dolphinscheduler.fullname" . }}-common
- - name: XLS_FILE_PATH
- valueFrom:
- configMapKeyRef:
- key: XLS_FILE_PATH
- name: {{ include "dolphinscheduler.fullname" . }}-alert
- - name: MAIL_SERVER_HOST
- valueFrom:
- configMapKeyRef:
- key: MAIL_SERVER_HOST
- name: {{ include "dolphinscheduler.fullname" . }}-alert
- - name: MAIL_SERVER_PORT
- valueFrom:
- configMapKeyRef:
- key: MAIL_SERVER_PORT
- name: {{ include "dolphinscheduler.fullname" . }}-alert
- - name: MAIL_SENDER
- valueFrom:
- configMapKeyRef:
- key: MAIL_SENDER
- name: {{ include "dolphinscheduler.fullname" . }}-alert
- - name: MAIL_USER
- valueFrom:
- configMapKeyRef:
- key: MAIL_USER
- name: {{ include "dolphinscheduler.fullname" . }}-alert
- - name: MAIL_PASSWD
- valueFrom:
- configMapKeyRef:
- key: MAIL_PASSWD
- name: {{ include "dolphinscheduler.fullname" . }}-alert
- - name: MAIL_SMTP_STARTTLS_ENABLE
- valueFrom:
- configMapKeyRef:
- key: MAIL_SMTP_STARTTLS_ENABLE
- name: {{ include "dolphinscheduler.fullname" . }}-alert
- - name: MAIL_SMTP_SSL_ENABLE
- valueFrom:
- configMapKeyRef:
- key: MAIL_SMTP_SSL_ENABLE
- name: {{ include "dolphinscheduler.fullname" . }}-alert
- - name: MAIL_SMTP_SSL_TRUST
- valueFrom:
- configMapKeyRef:
- key: MAIL_SMTP_SSL_TRUST
- name: {{ include "dolphinscheduler.fullname" . }}-alert
+ secretKeyRef:
+ key: fs-s3a-secret-key
+ name: {{ printf "%s-%s" .Release.Name "fs-s3a" }}
+ {{- end }}
- name: ENTERPRISE_WECHAT_ENABLE
valueFrom:
configMapKeyRef:
@@ -372,13 +324,13 @@ spec:
failureThreshold: {{ .Values.worker.readinessProbe.failureThreshold }}
{{- end }}
volumeMounts:
- - mountPath: {{ include "dolphinscheduler.worker.base.dir" . | quote }}
+ - mountPath: {{ include "dolphinscheduler.data.basedir.path" . | quote }}
name: {{ include "dolphinscheduler.fullname" . }}-worker-data
- mountPath: "/opt/dolphinscheduler/logs"
name: {{ include "dolphinscheduler.fullname" . }}-worker-logs
- mountPath: "/opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh"
subPath: "dolphinscheduler_env.sh"
- name: {{ include "dolphinscheduler.fullname" . }}-worker-configmap
+ name: {{ include "dolphinscheduler.fullname" . }}-common-env
volumes:
- name: {{ include "dolphinscheduler.fullname" . }}-worker-data
{{- if .Values.worker.persistentVolumeClaim.dataPersistentVolume.enabled }}
@@ -394,12 +346,12 @@ spec:
{{- else }}
emptyDir: {}
{{- end }}
- - name: {{ include "dolphinscheduler.fullname" . }}-worker-configmap
+ - name: {{ include "dolphinscheduler.fullname" . }}-common-env
configMap:
defaultMode: 0777
- name: {{ include "dolphinscheduler.fullname" . }}-worker
+ name: {{ include "dolphinscheduler.fullname" . }}-common
items:
- - key: dolphinscheduler_env.sh
+ - key: DOLPHINSCHEDULER_ENV
path: dolphinscheduler_env.sh
{{- if .Values.worker.persistentVolumeClaim.enabled }}
volumeClaimTemplates:
diff --git a/docker/kubernetes/dolphinscheduler/templates/svc-dolphinscheduler-worker-headless.yaml b/docker/kubernetes/dolphinscheduler/templates/svc-dolphinscheduler-worker-headless.yaml
index fb3b85b5c3..5c4e75436f 100644
--- a/docker/kubernetes/dolphinscheduler/templates/svc-dolphinscheduler-worker-headless.yaml
+++ b/docker/kubernetes/dolphinscheduler/templates/svc-dolphinscheduler-worker-headless.yaml
@@ -30,9 +30,9 @@ spec:
protocol: TCP
name: worker-port
- port: 50051
- targetPort: logs-port
+ targetPort: logger-port
protocol: TCP
- name: logs-port
+ name: logger-port
selector:
app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-worker
app.kubernetes.io/instance: {{ .Release.Name }}
diff --git a/docker/kubernetes/dolphinscheduler/values.yaml b/docker/kubernetes/dolphinscheduler/values.yaml
index 3261b08401..61201dfaa7 100644
--- a/docker/kubernetes/dolphinscheduler/values.yaml
+++ b/docker/kubernetes/dolphinscheduler/values.yaml
@@ -58,62 +58,74 @@ externalDatabase:
# If not exists external zookeeper, by default, Dolphinscheduler's zookeeper will use it.
zookeeper:
enabled: true
- taskQueue: "zookeeper"
- config: null
+ fourlwCommandsWhitelist: srvr,ruok,wchs,cons
service:
port: "2181"
persistence:
enabled: false
size: "20Gi"
storageClass: "-"
+ zookeeperRoot: "/dolphinscheduler"
# If exists external zookeeper, and set zookeeper.enable value to false.
-# If zookeeper.enable is false, Dolphinscheduler's zookeeper will use it.
+# If zookeeper.enable is false, Dolphinscheduler's zookeeper will use it.
externalZookeeper:
- taskQueue: "zookeeper"
zookeeperQuorum: "127.0.0.1:2181"
zookeeperRoot: "/dolphinscheduler"
common:
+ ## ConfigMap
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"
+ 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=/usr/bin/python"
+ - "export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk"
+ - "export HIVE_HOME=/opt/soft/hive"
+ - "export FLINK_HOME=/opt/soft/flink"
+ - "export DATAX_HOME=/opt/soft/datax/bin/datax.py"
+ - "export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$PATH"
+ DOLPHINSCHEDULER_DATA_BASEDIR_PATH: "/tmp/dolphinscheduler"
+ RESOURCE_STORAGE_TYPE: "HDFS"
+ RESOURCE_UPLOAD_PATH: "/dolphinscheduler"
+ FS_DEFAULT_FS: "file:///"
FS_S3A_ENDPOINT: "s3.xxx.amazonaws.com"
FS_S3A_ACCESS_KEY: "xxxxxxx"
FS_S3A_SECRET_KEY: "xxxxxxx"
master:
+ ## 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: "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/
+ ## 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 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: ""
+ ## Compute Resources required by this container. Cannot be updated.
+ ## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container
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
+ # resources:
+ # limits:
+ # memory: "8Gi"
+ # cpu: "4"
+ # requests:
+ # memory: "2Gi"
+ # cpu: "500m"
+ ## ConfigMap
configmap:
+ DOLPHINSCHEDULER_OPTS: ""
MASTER_EXEC_THREADS: "100"
MASTER_EXEC_TASK_NUM: "20"
MASTER_HEARTBEAT_INTERVAL: "10"
@@ -122,6 +134,8 @@ master:
MASTER_MAX_CPULOAD_AVG: "100"
MASTER_RESERVED_MEMORY: "0.1"
MASTER_LISTEN_PORT: "5678"
+ ## 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"
@@ -138,7 +152,7 @@ master:
timeoutSeconds: "5"
failureThreshold: "3"
successThreshold: "1"
- ## volumeClaimTemplates is a list of claims that pods are allowed to reference.
+ ## 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.
@@ -150,31 +164,43 @@ master:
storage: "20Gi"
worker:
+ ## 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: "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/
+ ## 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 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: ""
+ ## Compute Resources required by this container. Cannot be updated.
+ ## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container
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: {}
+ # resources:
+ # limits:
+ # memory: "8Gi"
+ # cpu: "4"
+ # requests:
+ # memory: "2Gi"
+ # cpu: "500m"
+ ## ConfigMap
+ configmap:
+ DOLPHINSCHEDULER_OPTS: ""
+ WORKER_EXEC_THREADS: "100"
+ WORKER_HEARTBEAT_INTERVAL: "10"
+ WORKER_MAX_CPULOAD_AVG: "100"
+ WORKER_RESERVED_MEMORY: "0.1"
+ WORKER_LISTEN_PORT: "1234"
+ WORKER_GROUP: "default"
+ WORKER_WEIGHT: "100"
## 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:
@@ -193,27 +219,7 @@ worker:
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.
+ ## 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.
@@ -235,38 +241,40 @@ worker:
storage: "20Gi"
alert:
+ ## 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.
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/
+ ## You can use annotations to attach arbitrary non-identifying metadata to objects.
+ ## Clients such as tools and libraries can retrieve this metadata.
+ annotations: {}
+ ## 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/
+ affinity: {}
+ ## Compute Resources required by this container. Cannot be updated.
+ ## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container
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: []
- # 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: ""
+ ## 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
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
+ # resources:
+ # limits:
+ # memory: "2Gi"
+ # cpu: "1"
+ # requests:
+ # memory: "1Gi"
+ # cpu: "500m"
+ ## ConfigMap
configmap:
+ DOLPHINSCHEDULER_OPTS: ""
ALERT_PLUGIN_DIR: "/opt/dolphinscheduler/alert/plugin"
XLS_FILE_PATH: "/tmp/xls"
MAIL_SERVER_HOST: ""
@@ -282,63 +290,6 @@ alert:
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:
@@ -357,10 +308,8 @@ api:
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 represents a reference to a PersistentVolumeClaim in the same namespace.
+ ## More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
persistentVolumeClaim:
enabled: false
accessModes:
@@ -368,34 +317,41 @@ api:
storageClassName: "-"
storage: "20Gi"
-frontend:
+api:
+ ## 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.
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/
+ ## You can use annotations to attach arbitrary non-identifying metadata to objects.
+ ## Clients such as tools and libraries can retrieve this metadata.
+ annotations: {}
+ ## 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/
+ affinity: {}
+ ## Compute Resources required by this container. Cannot be updated.
+ ## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container
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: []
- # 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: {}
+ ## 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
resources: {}
- # limits:
- # memory: "256Mi"
+ # resources:
+ # limits:
+ # memory: "2Gi"
# cpu: "1"
# requests:
- # memory: "256Mi"
+ # memory: "1Gi"
# 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: {}
+ ## ConfigMap
+ configmap:
+ DOLPHINSCHEDULER_OPTS: ""
## 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:
@@ -414,10 +370,8 @@ frontend:
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 represents a reference to a PersistentVolumeClaim in the same namespace.
+ ## More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
persistentVolumeClaim:
enabled: false
accessModes:
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannel.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannel.java
index 7adfacce39..6b13f24d86 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannel.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkAlertChannel.java
@@ -21,7 +21,6 @@ import org.apache.dolphinscheduler.spi.alert.AlertChannel;
import org.apache.dolphinscheduler.spi.alert.AlertData;
import org.apache.dolphinscheduler.spi.alert.AlertInfo;
import org.apache.dolphinscheduler.spi.alert.AlertResult;
-import org.apache.dolphinscheduler.spi.params.PluginParamsTransfer;
import java.util.Map;
@@ -34,8 +33,10 @@ public class DingTalkAlertChannel implements AlertChannel {
public AlertResult process(AlertInfo alertInfo) {
AlertData alertData = alertInfo.getAlertData();
- String alertParams = alertInfo.getAlertParams();
- Map paramsMap = PluginParamsTransfer.getPluginParamsMap(alertParams);
+ Map paramsMap = alertInfo.getAlertParams();
+ if (null == paramsMap) {
+ return new AlertResult("false", "ding talk params is null");
+ }
return new DingTalkSender(paramsMap).sendDingTalkMsg(alertData.getTitle(), alertData.getContent());
}
}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
index c00d13076e..e94da80f20 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
@@ -22,36 +22,24 @@ package org.apache.dolphinscheduler.plugin.alert.dingtalk;
*/
public class DingTalkParamsConstants {
+
+ static final String DING_TALK_PROXY_ENABLE = "isEnableProxy";
+ static final String DING_TALK_WEB_HOOK = "webhook";
+ static final String NAME_DING_TALK_WEB_HOOK = "WebHook";
+ static final String DING_TALK_KEYWORD = "keyword";
+ static final String NAME_DING_TALK_KEYWORD = "Keyword";
+ static final String NAME_DING_TALK_PROXY_ENABLE = "IsEnableProxy";
+ static final String DING_TALK_PROXY = "proxy";
+ static final String NAME_DING_TALK_PROXY = "Proxy";
+ static final String DING_TALK_PORT = "port";
+ static final String NAME_DING_TALK_PORT = "Port";
+ static final String DING_TALK_USER = "user";
+ static final String NAME_DING_TALK_USER = "User";
+ static final String DING_TALK_PASSWORD = "password";
+ static final String NAME_DING_TALK_PASSWORD = "Password";
+
private DingTalkParamsConstants() {
throw new IllegalStateException("Utility class");
}
- static final String DING_TALK_WEB_HOOK = "dingtalk.webhook";
-
- static final String NAME_DING_TALK_WEB_HOOK = "dingTalkWebHook";
-
- static final String DING_TALK_KEYWORD = "dingtalk.keyword";
-
- static final String NAME_DING_TALK_KEYWORD = "dingTalkKeyword";
-
- public static final String DING_TALK_PROXY_ENABLE = "dingtalk.isEnableProxy";
-
- static final String NAME_DING_TALK_PROXY_ENABLE = "dingTalkIsEnableProxy";
-
- static final String DING_TALK_PROXY = "dingtalk.proxy";
-
- static final String NAME_DING_TALK_PROXY = "dingTalkProxy";
-
- static final String DING_TALK_PORT = "dingtalk.port";
-
- static final String NAME_DING_TALK_PORT = "dingTalkPort";
-
- static final String DING_TALK_USER = "dingtalk.user";
-
- static final String NAME_DING_TALK_USER = "dingTalkUser";
-
- static final String DING_TALK_PASSWORD = "dingtalk.password";
-
- static final String NAME_DING_TALK_PASSWORD = "dingTalkPassword";
-
}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
index d152bc89cb..0d87e4779a 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
@@ -75,51 +75,6 @@ public class DingTalkSender {
}
- public AlertResult sendDingTalkMsg(String msg, String charset) {
- AlertResult alertResult;
- try {
- String resp = sendMsg(msg, charset);
- return checkSendDingTalkSendMsgResult(resp);
- } catch (Exception e) {
- logger.info("send ding talk alert msg exception : {}", e.getMessage());
- alertResult = new AlertResult();
- alertResult.setStatus("false");
- alertResult.setMessage("send ding talk alert fail.");
- }
- return alertResult;
- }
-
- private String sendMsg(String msg, String charset) throws IOException {
-
- String msgToJson = textToJsonString(msg + "#" + keyword);
- HttpPost httpPost = constructHttpPost(url, msgToJson, charset);
-
- CloseableHttpClient httpClient;
- if (Boolean.TRUE.equals(enableProxy)) {
- httpClient = getProxyClient(proxy, port, user, password);
- RequestConfig rcf = getProxyConfig(proxy, port);
- httpPost.setConfig(rcf);
- } else {
- httpClient = getDefaultClient();
- }
-
- try {
- CloseableHttpResponse response = httpClient.execute(httpPost);
- String resp;
- try {
- HttpEntity entity = response.getEntity();
- resp = EntityUtils.toString(entity, charset);
- EntityUtils.consume(entity);
- } finally {
- response.close();
- }
- logger.info("Ding Talk send {}, resp: {}", msg, resp);
- return resp;
- } finally {
- httpClient.close();
- }
- }
-
private static HttpPost constructHttpPost(String url, String msg, String charset) {
HttpPost post = new HttpPost(url);
StringEntity entity = new StringEntity(msg, charset);
@@ -155,27 +110,6 @@ public class DingTalkSender {
return JSONUtils.toJsonString(items);
}
- public static class DingTalkSendMsgResponse {
- private Integer errcode;
- private String errmsg;
-
- public Integer getErrcode() {
- return errcode;
- }
-
- public void setErrcode(Integer errcode) {
- this.errcode = errcode;
- }
-
- public String getErrmsg() {
- return errmsg;
- }
-
- public void setErrmsg(String errmsg) {
- this.errmsg = errmsg;
- }
- }
-
private static AlertResult checkSendDingTalkSendMsgResult(String result) {
AlertResult alertResult = new AlertResult();
alertResult.setStatus("false");
@@ -201,4 +135,70 @@ public class DingTalkSender {
return alertResult;
}
+ public AlertResult sendDingTalkMsg(String title, String content) {
+ AlertResult alertResult;
+ try {
+ String resp = sendMsg(title, content);
+ return checkSendDingTalkSendMsgResult(resp);
+ } catch (Exception e) {
+ logger.info("send ding talk alert msg exception : {}", e.getMessage());
+ alertResult = new AlertResult();
+ alertResult.setStatus("false");
+ alertResult.setMessage("send ding talk alert fail.");
+ }
+ return alertResult;
+ }
+
+ private String sendMsg(String title, String content) throws IOException {
+
+ String msgToJson = textToJsonString(title + content + "#" + keyword);
+ HttpPost httpPost = constructHttpPost(url, msgToJson, "UTF-8");
+
+ CloseableHttpClient httpClient;
+ if (Boolean.TRUE.equals(enableProxy)) {
+ httpClient = getProxyClient(proxy, port, user, password);
+ RequestConfig rcf = getProxyConfig(proxy, port);
+ httpPost.setConfig(rcf);
+ } else {
+ httpClient = getDefaultClient();
+ }
+
+ try {
+ CloseableHttpResponse response = httpClient.execute(httpPost);
+ String resp;
+ try {
+ HttpEntity entity = response.getEntity();
+ resp = EntityUtils.toString(entity, "UTF-8");
+ EntityUtils.consume(entity);
+ } finally {
+ response.close();
+ }
+ logger.info("Ding Talk send title :{},content : {}, resp: {}", title, content, resp);
+ return resp;
+ } finally {
+ httpClient.close();
+ }
+ }
+
+ public static class DingTalkSendMsgResponse {
+ private Integer errcode;
+ private String errmsg;
+
+ public Integer getErrcode() {
+ return errcode;
+ }
+
+ public void setErrcode(Integer errcode) {
+ this.errcode = errcode;
+ }
+
+ public String getErrmsg() {
+ return errmsg;
+ }
+
+ public void setErrmsg(String errmsg) {
+ this.errmsg = errmsg;
+ }
+ }
+
}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSenderTest.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSenderTest.java
index 4512402dc4..bc17d4185b 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSenderTest.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/test/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSenderTest.java
@@ -50,7 +50,7 @@ public class DingTalkSenderTest {
dingTalkSender.sendDingTalkMsg("keyWord+Welcome", "UTF-8");
dingTalkConfig.put(DingTalkParamsConstants.NAME_DING_TALK_PROXY_ENABLE, "true");
dingTalkSender = new DingTalkSender(dingTalkConfig);
- AlertResult alertResult = dingTalkSender.sendDingTalkMsg("keyWord+Welcome", "UTF-8");
+ AlertResult alertResult = dingTalkSender.sendDingTalkMsg("title", "content test");
Assert.assertEquals("false",alertResult.getStatus());
}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannel.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannel.java
index c793af5710..3dbf0b8fb9 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannel.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannel.java
@@ -21,7 +21,6 @@ import org.apache.dolphinscheduler.spi.alert.AlertChannel;
import org.apache.dolphinscheduler.spi.alert.AlertData;
import org.apache.dolphinscheduler.spi.alert.AlertInfo;
import org.apache.dolphinscheduler.spi.alert.AlertResult;
-import org.apache.dolphinscheduler.spi.params.PluginParamsTransfer;
import java.util.Map;
@@ -38,8 +37,10 @@ public class EmailAlertChannel implements AlertChannel {
public AlertResult process(AlertInfo info) {
AlertData alert = info.getAlertData();
- String alertParams = info.getAlertParams();
- Map paramsMap = PluginParamsTransfer.getPluginParamsMap(alertParams);
+ Map paramsMap = info.getAlertParams();
+ if (null == paramsMap) {
+ return new AlertResult("false", "mail params is null");
+ }
MailSender mailSender = new MailSender(paramsMap);
AlertResult alertResult = mailSender.sendMails(alert.getTitle(), alert.getContent());
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java
index 0bbbe103f0..9b49b4705b 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java
@@ -33,33 +33,33 @@ public class MailParamsConstants {
public static final String NAME_PLUGIN_DEFAULT_EMAIL_RECEIVERCCS = "receiverCcs";
public static final String MAIL_PROTOCOL = "transport.protocol";
- public static final String NAME_MAIL_PROTOCOL = "protocol";
+ public static final String NAME_MAIL_PROTOCOL = "mail.protocol";
- public static final String MAIL_SMTP_HOST = "smtp.host";
+ public static final String MAIL_SMTP_HOST = "mail.smtp.host";
public static final String NAME_MAIL_SMTP_HOST = "serverHost";
- public static final String MAIL_SMTP_PORT = "smtp.port";
+ public static final String MAIL_SMTP_PORT = "mail.smtp.port";
public static final String NAME_MAIL_SMTP_PORT = "serverPort";
- public static final String MAIL_SENDER = "sender";
+ public static final String MAIL_SENDER = "mail.sender";
public static final String NAME_MAIL_SENDER = "sender";
- public static final String MAIL_SMTP_AUTH = "smtp.auth";
+ public static final String MAIL_SMTP_AUTH = "mail.smtp.auth";
public static final String NAME_MAIL_SMTP_AUTH = "enableSmtpAuth";
- public static final String MAIL_USER = "user";
+ public static final String MAIL_USER = "mail.user";
public static final String NAME_MAIL_USER = "user";
- public static final String MAIL_PASSWD = "passwd";
+ public static final String MAIL_PASSWD = "mail.passwd";
public static final String NAME_MAIL_PASSWD = "passwd";
- public static final String MAIL_SMTP_STARTTLS_ENABLE = "smtp.starttls.enable";
+ public static final String MAIL_SMTP_STARTTLS_ENABLE = "mail.smtp.starttls.enable";
public static final String NAME_MAIL_SMTP_STARTTLS_ENABLE = "starttlsEnable";
- public static final String MAIL_SMTP_SSL_ENABLE = "smtp.ssl.enable";
+ public static final String MAIL_SMTP_SSL_ENABLE = "mail.smtp.ssl.enable";
public static final String NAME_MAIL_SMTP_SSL_ENABLE = "sslEnable";
- public static final String MAIL_SMTP_SSL_TRUST = "smtp.ssl.trust";
+ public static final String MAIL_SMTP_SSL_TRUST = "mail.smtp.ssl.trust";
public static final String NAME_MAIL_SMTP_SSL_TRUST = "smtpSslTrust";
}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelFactoryTest.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelFactoryTest.java
index 977cd8fefc..37a11e47fb 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelFactoryTest.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelFactoryTest.java
@@ -19,13 +19,10 @@ package org.apache.dolphinscheduler.plugin.alert.email;
import org.apache.dolphinscheduler.spi.alert.AlertChannel;
import org.apache.dolphinscheduler.spi.params.base.PluginParams;
-import org.apache.dolphinscheduler.spi.utils.JSONUtils;
import java.util.List;
-import org.junit.After;
import org.junit.Assert;
-import org.junit.Before;
import org.junit.Test;
/**
@@ -36,29 +33,13 @@ import org.junit.Test;
*/
public class EmailAlertChannelFactoryTest {
- @Before
- public void before() throws Exception {
- }
-
- @After
- public void after() throws Exception {
- }
-
- /**
- * Method: getName()
- */
- @Test
- public void testGetName() throws Exception {
- }
-
/**
* Method: getParams()
*/
@Test
- public void testGetParams() throws Exception {
+ public void testGetParams() {
EmailAlertChannelFactory emailAlertChannelFactory = new EmailAlertChannelFactory();
List params = emailAlertChannelFactory.getParams();
- System.out.println(JSONUtils.toJsonString(params));
Assert.assertEquals(12, params.size());
}
@@ -66,7 +47,7 @@ public class EmailAlertChannelFactoryTest {
* Method: create()
*/
@Test
- public void testCreate() throws Exception {
+ public void testCreate() {
EmailAlertChannelFactory emailAlertChannelFactory = new EmailAlertChannelFactory();
AlertChannel alertChannel = emailAlertChannelFactory.create();
Assert.assertNotNull(alertChannel);
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelTest.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelTest.java
index 97a1013399..fc28df272c 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelTest.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/EmailAlertChannelTest.java
@@ -24,6 +24,7 @@ import org.apache.dolphinscheduler.spi.alert.AlertResult;
import org.apache.dolphinscheduler.spi.alert.ShowType;
import org.apache.dolphinscheduler.spi.params.InputParam;
import org.apache.dolphinscheduler.spi.params.PasswordParam;
+import org.apache.dolphinscheduler.spi.params.PluginParamsTransfer;
import org.apache.dolphinscheduler.spi.params.RadioParam;
import org.apache.dolphinscheduler.spi.params.base.DataType;
import org.apache.dolphinscheduler.spi.params.base.ParamsOptions;
@@ -34,6 +35,7 @@ import org.apache.dolphinscheduler.spi.utils.JSONUtils;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
@@ -66,7 +68,9 @@ public class EmailAlertChannelTest {
.setTitle("test");
AlertInfo alertInfo = new AlertInfo();
alertInfo.setAlertData(alertData);
- alertInfo.setAlertParams(getEmailAlertParams());
+ Map paramsMap = PluginParamsTransfer.getPluginParamsMap(getEmailAlertParams());
+
+ alertInfo.setAlertParams(paramsMap);
AlertResult alertResult = emailAlertChannel.process(alertInfo);
Assert.assertNotNull(alertResult);
Assert.assertEquals("false", alertResult.getStatus());
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java
index e19c819dae..5b0b084d72 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/MailUtilsTest.java
@@ -53,6 +53,7 @@ public class MailUtilsTest {
emailConfig.put(MailParamsConstants.NAME_MAIL_SENDER, "xxx1.xxx.com");
emailConfig.put(MailParamsConstants.NAME_MAIL_USER, "xxx2.xxx.com");
emailConfig.put(MailParamsConstants.NAME_MAIL_PASSWD, "111111");
+ emailConfig.put(MailParamsConstants.NAME_MAIL_SMTP_AUTH, "true");
emailConfig.put(MailParamsConstants.NAME_MAIL_SMTP_STARTTLS_ENABLE, "true");
emailConfig.put(MailParamsConstants.NAME_MAIL_SMTP_SSL_ENABLE, "false");
emailConfig.put(MailParamsConstants.NAME_MAIL_SMTP_SSL_TRUST, "false");
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/pom.xml b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/pom.xml
new file mode 100644
index 0000000000..44d4cdbb07
--- /dev/null
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/pom.xml
@@ -0,0 +1,82 @@
+
+
+
+
+ dolphinscheduler-alert-plugin
+ org.apache.dolphinscheduler
+ 1.3.4-SNAPSHOT
+
+ 4.0.0
+
+ org.apache.dolphinscheduler
+ dolphinscheduler-alert-feishu
+ dolphinscheduler-plugin
+
+
+
+
+ org.apache.dolphinscheduler
+ dolphinscheduler-spi
+ provided
+
+
+ org.apache.httpcomponents
+ httpclient
+
+
+ com.google.guava
+ guava
+
+
+
+ ch.qos.logback
+ logback-classic
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ provided
+
+
+
+ junit
+ junit
+ test
+
+
+
+ org.mockito
+ mockito-core
+ jar
+ test
+
+
+
+
+ dolphinscheduler-alert-feishu-${project.version}
+
+
+
\ No newline at end of file
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannel.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannel.java
new file mode 100644
index 0000000000..3bbdaa9997
--- /dev/null
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannel.java
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+package org.apache.dolphinscheduler.plugin.alert.feishu;
+
+import org.apache.dolphinscheduler.spi.alert.AlertChannel;
+import org.apache.dolphinscheduler.spi.alert.AlertData;
+import org.apache.dolphinscheduler.spi.alert.AlertInfo;
+import org.apache.dolphinscheduler.spi.alert.AlertResult;
+
+import java.util.Map;
+
+public class FeiShuAlertChannel implements AlertChannel {
+ @Override
+ public AlertResult process(AlertInfo alertInfo) {
+
+ AlertData alertData = alertInfo.getAlertData();
+ Map paramsMap = alertInfo.getAlertParams();
+ if (null == paramsMap) {
+ return new AlertResult("false", "fei shu params is null");
+ }
+ return new FeiShuSender(paramsMap).sendFeiShuMsg(alertData);
+ }
+}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactory.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactory.java
new file mode 100644
index 0000000000..0e863f95d4
--- /dev/null
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertChannelFactory.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+
+package org.apache.dolphinscheduler.plugin.alert.feishu;
+
+import org.apache.dolphinscheduler.spi.alert.AlertChannel;
+import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory;
+import org.apache.dolphinscheduler.spi.params.InputParam;
+import org.apache.dolphinscheduler.spi.params.PasswordParam;
+import org.apache.dolphinscheduler.spi.params.RadioParam;
+import org.apache.dolphinscheduler.spi.params.base.ParamsOptions;
+import org.apache.dolphinscheduler.spi.params.base.PluginParams;
+import org.apache.dolphinscheduler.spi.params.base.Validate;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class FeiShuAlertChannelFactory implements AlertChannelFactory {
+ @Override
+ public String getName() {
+ return "Feishu";
+ }
+
+ @Override
+ public List getParams() {
+ InputParam webHookParam = InputParam.newBuilder(FeiShuParamsConstants.NAME_WEB_HOOK, FeiShuParamsConstants.WEB_HOOK)
+ .addValidate(Validate.newBuilder()
+ .setRequired(true)
+ .build())
+ .build();
+ RadioParam isEnableProxy =
+ RadioParam.newBuilder(FeiShuParamsConstants.NAME_FEI_SHU_PROXY_ENABLE, FeiShuParamsConstants.NAME_FEI_SHU_PROXY_ENABLE)
+ .addParamsOptions(new ParamsOptions("YES", true, false))
+ .addParamsOptions(new ParamsOptions("NO", false, false))
+ .setValue(true)
+ .addValidate(Validate.newBuilder()
+ .setRequired(false)
+ .build())
+ .build();
+ InputParam proxyParam =
+ InputParam.newBuilder(FeiShuParamsConstants.NAME_FEI_SHU_PROXY, FeiShuParamsConstants.FEI_SHU_PROXY)
+ .addValidate(Validate.newBuilder()
+ .setRequired(false).build())
+ .build();
+
+ InputParam portParam = InputParam.newBuilder(FeiShuParamsConstants.NAME_FEI_SHU_PORT, FeiShuParamsConstants.FEI_SHU_PORT)
+ .addValidate(Validate.newBuilder()
+ .setRequired(false).build())
+ .build();
+
+ InputParam userParam =
+ InputParam.newBuilder(FeiShuParamsConstants.NAME_FEI_SHU_USER, FeiShuParamsConstants.FEI_SHU_USER)
+ .addValidate(Validate.newBuilder()
+ .setRequired(false).build())
+ .build();
+ PasswordParam passwordParam = PasswordParam.newBuilder(FeiShuParamsConstants.NAME_FEI_SHU_PASSWORD, FeiShuParamsConstants.FEI_SHU_PASSWORD)
+ .setPlaceholder("if enable use authentication, you need input password")
+ .build();
+
+ return Arrays.asList(webHookParam, isEnableProxy, proxyParam, portParam, userParam, passwordParam);
+
+ }
+
+ @Override
+ public AlertChannel create() {
+ return new FeiShuAlertChannel();
+ }
+}
diff --git a/dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/manager/MsgManager.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertPlugin.java
similarity index 64%
rename from dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/manager/MsgManager.java
rename to dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertPlugin.java
index e7fb161162..e71be3e2bd 100644
--- a/dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/manager/MsgManager.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuAlertPlugin.java
@@ -15,26 +15,16 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.alert.manager;
+package org.apache.dolphinscheduler.plugin.alert.feishu;
-import org.apache.dolphinscheduler.dao.entity.Alert;
+import org.apache.dolphinscheduler.spi.DolphinSchedulerPlugin;
+import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.google.common.collect.ImmutableList;
-/**
- * SMS send manager
- */
-public class MsgManager {
-
- private static final Logger logger = LoggerFactory.getLogger(MsgManager.class);
-
- /**
- * SMS send
- *
- * @param alert the alert
- */
- public void send(Alert alert) {
- logger.info("send message {}", alert);
+public class FeiShuAlertPlugin implements DolphinSchedulerPlugin {
+ @Override
+ public Iterable getAlertChannelFactorys() {
+ return ImmutableList.of(new FeiShuAlertChannelFactory());
}
}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuParamsConstants.java
new file mode 100644
index 0000000000..0b3c329792
--- /dev/null
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuParamsConstants.java
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+
+package org.apache.dolphinscheduler.plugin.alert.feishu;
+
+public class FeiShuParamsConstants {
+
+ private FeiShuParamsConstants() {
+ throw new IllegalStateException("Utility class");
+ }
+
+ static final String WEB_HOOK = "webhook";
+
+ static final String NAME_WEB_HOOK = "webHook";
+
+ public static final String FEI_SHU_PROXY_ENABLE = "isEnableProxy";
+
+ static final String NAME_FEI_SHU_PROXY_ENABLE = "isEnableProxy";
+
+ static final String FEI_SHU_PROXY = "proxy";
+
+ static final String NAME_FEI_SHU_PROXY = "proxy";
+
+ static final String FEI_SHU_PORT = "port";
+
+ static final String NAME_FEI_SHU_PORT = "port";
+
+ static final String FEI_SHU_USER = "user";
+
+ static final String NAME_FEI_SHU_USER = "user";
+
+ static final String FEI_SHU_PASSWORD = "password";
+
+ static final String NAME_FEI_SHU_PASSWORD = "password";
+}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSender.java
new file mode 100644
index 0000000000..8fdafe7182
--- /dev/null
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-feishu/src/main/java/org/apache/dolphinscheduler/plugin/alert/feishu/FeiShuSender.java
@@ -0,0 +1,214 @@
+/*
+ * 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.
+ */
+
+package org.apache.dolphinscheduler.plugin.alert.feishu;
+
+import org.apache.dolphinscheduler.spi.alert.AlertData;
+import org.apache.dolphinscheduler.spi.alert.AlertResult;
+import org.apache.dolphinscheduler.spi.utils.JSONUtils;
+
+import org.apache.commons.codec.binary.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class FeiShuSender {
+
+ private static final Logger logger = LoggerFactory.getLogger(FeiShuSender.class);
+
+ private String url;
+
+ private Boolean enableProxy;
+
+ private String proxy;
+
+ private Integer port;
+
+ private String user;
+
+ private String password;
+
+ FeiShuSender(Map config) {
+ url = config.get(FeiShuParamsConstants.NAME_WEB_HOOK);
+ enableProxy = Boolean.valueOf(config.get(FeiShuParamsConstants.NAME_FEI_SHU_PROXY_ENABLE));
+ if (Boolean.TRUE.equals(enableProxy)) {
+ port = Integer.parseInt(config.get(FeiShuParamsConstants.NAME_FEI_SHU_PORT));
+ proxy = config.get(FeiShuParamsConstants.NAME_FEI_SHU_PROXY);
+ user = config.get(FeiShuParamsConstants.NAME_FEI_SHU_USER);
+ password = config.get(FeiShuParamsConstants.NAME_FEI_SHU_PASSWORD);
+ }
+
+ }
+
+ private static String textToJsonString(AlertData alertData) {
+
+ Map items = new HashMap<>(2);
+ items.put("msg_type", "text");
+ Map textContent = new HashMap<>();
+ byte[] byt = StringUtils.getBytesUtf8(formatContent(alertData));
+ String txt = StringUtils.newStringUtf8(byt);
+ textContent.put("text", txt);
+ items.put("content", textContent);
+ return JSONUtils.toJsonString(items);
+ }
+
+ public static AlertResult checkSendFeiShuSendMsgResult(String result) {
+ AlertResult alertResult = new AlertResult();
+ alertResult.setStatus("false");
+
+ if (org.apache.dolphinscheduler.spi.utils.StringUtils.isBlank(result)) {
+ alertResult.setMessage("send fei shu msg error");
+ logger.info("send fei shu msg error,fei shu server resp is null");
+ return alertResult;
+ }
+ FeiShuSendMsgResponse sendMsgResponse = JSONUtils.parseObject(result, FeiShuSendMsgResponse.class);
+
+ if (null == sendMsgResponse) {
+ alertResult.setMessage("send fei shu msg fail");
+ logger.info("send fei shu msg error,resp error");
+ return alertResult;
+ }
+ if (sendMsgResponse.statusCode == 0) {
+ alertResult.setStatus("true");
+ alertResult.setMessage("send fei shu msg success");
+ return alertResult;
+ }
+ alertResult.setMessage(String.format("alert send fei shu msg error : %s", sendMsgResponse.getStatusMessage()));
+ logger.info("alert send fei shu msg error : {} ,Extra : {} ", sendMsgResponse.getStatusMessage(), sendMsgResponse.getExtra());
+ return alertResult;
+ }
+
+ public static String formatContent(AlertData alertData) {
+ if (alertData.getContent() != null) {
+
+ List