Merge branch 'dev' into rpc
# Conflicts: # tools/dependencies/known-dependencies.txt
This commit is contained in:
commit
b4c7e35340
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -45,7 +45,7 @@ jobs:
|
|||
sh ./docker/build/hooks/build
|
||||
- name: Docker Run
|
||||
run: |
|
||||
export VERSION=$(cat $(pwd)/pom.xml | grep '<version>' -m 1 | awk '{print $1}' | sed 's/<version>//' | sed 's/<\/version>//')
|
||||
export VERSION=$(cat $(pwd)/pom.xml | grep '<revision>' -m 1 | awk '{print $1}' | sed 's/<revision>//' | sed 's/<\/revision>//')
|
||||
sed -i "s/apache\/dolphinscheduler:latest/apache\/dolphinscheduler:${VERSION}/g" $(pwd)/docker/docker-swarm/docker-compose.yml
|
||||
docker-compose -f $(pwd)/docker/docker-swarm/docker-compose.yml up -d
|
||||
- name: Check Server Status
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -49,7 +49,7 @@ jobs:
|
|||
run: |
|
||||
sed -i "s/: root/: test/g" $(pwd)/docker/docker-swarm/docker-compose.yml
|
||||
docker-compose -f $(pwd)/docker/docker-swarm/docker-compose.yml create --force-recreate dolphinscheduler-zookeeper dolphinscheduler-postgresql
|
||||
sudo cp $(pwd)/sql/dolphinscheduler-postgre.sql $(docker volume inspect docker-swarm_dolphinscheduler-postgresql-initdb | grep "Mountpoint" | awk -F "\"" '{print $4}')
|
||||
sudo cp $(pwd)/sql/dolphinscheduler_postgre.sql $(docker volume inspect docker-swarm_dolphinscheduler-postgresql-initdb | grep "Mountpoint" | awk -F "\"" '{print $4}')
|
||||
docker-compose -f $(pwd)/docker/docker-swarm/docker-compose.yml up -d dolphinscheduler-zookeeper dolphinscheduler-postgresql
|
||||
- name: Set up JDK 1.8
|
||||
uses: actions/setup-java@v1
|
||||
|
|
|
|||
|
|
@ -7,6 +7,10 @@
|
|||
.target
|
||||
.idea/
|
||||
target/
|
||||
dist/
|
||||
all-dependencies.txt
|
||||
self-modules.txt
|
||||
third-party-dependencies.txt
|
||||
.settings
|
||||
.nbproject
|
||||
.classpath
|
||||
|
|
|
|||
12
README.md
12
README.md
|
|
@ -37,7 +37,7 @@ Its main objectives are as follows:
|
|||
|
||||
### What's in DolphinScheduler
|
||||
|
||||
Stability | Easy to use | Features | Scalability |
|
||||
Stability | Accessibility | Features | Scalability |
|
||||
-- | -- | -- | --
|
||||
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.
|
||||
|
|
@ -73,13 +73,19 @@ dolphinscheduler-dist/target/apache-dolphinscheduler-incubating-${latest.release
|
|||
```
|
||||
|
||||
### Thanks
|
||||
|
||||
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](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
|
||||
1. Subscribe to this mail list: https://dolphinscheduler.apache.org/en-us/community/development/subscribe.html, then email dev@dolphinscheduler.apache.org
|
||||
|
||||
|
||||
### Community
|
||||
You are so much welcomed to communicate with the developers and users of Dolphin Scheduler freely. There are two ways to find them:
|
||||
1. Join the slack channel by [this invitation link](https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-l8k90ceu-wwUfobaDkJxjzMfZp4y1Ag).
|
||||
2. Follow the [twitter account of Dolphin Scheduler](https://twitter.com/dolphinschedule) and get the latest news just on time.
|
||||
|
||||
|
||||
### 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)]
|
||||
|
|
|
|||
|
|
@ -81,7 +81,11 @@ Dolphin Scheduler使用了很多优秀的开源项目,比如google的guava、g
|
|||
|
||||
### 获得帮助
|
||||
1. 提交issue
|
||||
1. 先订阅邮件开发列表:[订阅邮件列表](https://dolphinscheduler.apache.org/zh-cn/docs/development/subscribe.html), 订阅成功后发送邮件到dev@dolphinscheduler.apache.org.
|
||||
2. 先订阅邮件开发列表:[订阅邮件列表](https://dolphinscheduler.apache.org/zh-cn/community/development/subscribe.html), 订阅成功后发送邮件到dev@dolphinscheduler.apache.org.
|
||||
|
||||
### 社区
|
||||
1. 通过[该申请链接](https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-l8k90ceu-wwUfobaDkJxjzMfZp4y1Ag)加入slack channel
|
||||
2. 关注[Apache Dolphin Scheduler的Twitter账号](https://twitter.com/dolphinschedule)获取实时动态
|
||||
|
||||
### 版权
|
||||
请参考 [LICENSE](https://github.com/apache/incubator-dolphinscheduler/blob/dev/LICENSE) 文件.
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
# Dolphin Scheduler for Docker
|
||||
|
|
@ -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 50052
|
||||
|
||||
ENTRYPOINT ["/sbin/tini", "--", "/root/startup.sh"]
|
||||
|
|
|
|||
|
|
@ -13,90 +13,86 @@ Official Website: https://dolphinscheduler.apache.org
|
|||
|
||||
## How to use this docker image
|
||||
|
||||
#### You can start a dolphinscheduler instance
|
||||
#### You can start a dolphinscheduler by docker-compose (recommended)
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
-e DATABASE_USERNAME=test -e DATABASE_PASSWORD=test -e DATABASE_DATABASE=dolphinscheduler \
|
||||
-p 8888:8888 \
|
||||
dolphinscheduler all
|
||||
$ docker-compose -f ./docker/docker-swarm/docker-compose.yml up -d
|
||||
```
|
||||
|
||||
The default postgres user `root`, postgres password `root` and database `dolphinscheduler` are created in the `startup.sh`.
|
||||
The default **postgres** user `root`, postgres password `root` and database `dolphinscheduler` are created in the `docker-compose.yml`.
|
||||
|
||||
The default zookeeper is created in the `startup.sh`.
|
||||
The default **zookeeper** is created in the `docker-compose.yml`.
|
||||
|
||||
Access the Web UI:http://192.168.xx.xx:12345/dolphinscheduler
|
||||
|
||||
The default username is `admin` and the default password is `dolphinscheduler123`
|
||||
|
||||
#### Or via Environment Variables **`DATABASE_HOST`** **`DATABASE_PORT`** **`DATABASE_DATABASE`** **`ZOOKEEPER_QUORUM`**
|
||||
|
||||
You can specify **existing postgres service**. Example:
|
||||
You can specify **existing postgres and zookeeper service**. Example:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
$ docker run -d --name dolphinscheduler \
|
||||
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
|
||||
-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 \
|
||||
dolphinscheduler all
|
||||
-p 12345:12345 \
|
||||
apache/dolphinscheduler:latest all
|
||||
```
|
||||
|
||||
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 \
|
||||
dolphinscheduler all
|
||||
```
|
||||
Access the Web UI:http://192.168.xx.xx:12345/dolphinscheduler
|
||||
|
||||
#### Or start a standalone dolphinscheduler server
|
||||
|
||||
You can start a standalone dolphinscheduler server.
|
||||
|
||||
* Create a **local volume** for resource storage, For example:
|
||||
|
||||
```
|
||||
docker volume create dolphinscheduler-resource-local
|
||||
```
|
||||
|
||||
* Start a **master server**, For example:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
|
||||
$ docker run -d --name dolphinscheduler-master \
|
||||
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
|
||||
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
|
||||
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
|
||||
dolphinscheduler master-server
|
||||
apache/dolphinscheduler:latest master-server
|
||||
```
|
||||
|
||||
* Start a **worker server**, For example:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
|
||||
$ docker run -d --name dolphinscheduler-worker \
|
||||
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
|
||||
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
|
||||
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
|
||||
dolphinscheduler worker-server
|
||||
-e ALERT_LISTEN_HOST="dolphinscheduler-alert" \
|
||||
-v dolphinscheduler-resource-local:/dolphinscheduler \
|
||||
apache/dolphinscheduler:latest worker-server
|
||||
```
|
||||
|
||||
* Start a **api server**, For example:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
$ docker run -d --name dolphinscheduler-api \
|
||||
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
|
||||
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
|
||||
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
|
||||
-v dolphinscheduler-resource-local:/dolphinscheduler \
|
||||
-p 12345:12345 \
|
||||
dolphinscheduler api-server
|
||||
apache/dolphinscheduler:latest api-server
|
||||
```
|
||||
|
||||
* Start a **alert server**, For example:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
$ docker run -d --name dolphinscheduler-alert \
|
||||
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
|
||||
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
|
||||
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
|
||||
apache/dolphinscheduler:latest alert-server
|
||||
```
|
||||
|
||||
**Note**: You must be specify `DATABASE_HOST` `DATABASE_PORT` `DATABASE_DATABASE` `DATABASE_USERNAME` `DATABASE_PASSWORD` `ZOOKEEPER_QUORUM` when start a standalone dolphinscheduler server.
|
||||
|
|
@ -115,7 +111,7 @@ $ sh ./docker/build/hooks/build
|
|||
In Windows, Example:
|
||||
|
||||
```bat
|
||||
c:\incubator-dolphinscheduler>.\docker\build\hooks\build.bat
|
||||
C:\incubator-dolphinscheduler>.\docker\build\hooks\build.bat
|
||||
```
|
||||
|
||||
Please read `./docker/build/hooks/build` `./docker/build/hooks/build.bat` script files if you don't understand
|
||||
|
|
@ -146,7 +142,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`**
|
||||
|
||||
|
|
@ -180,12 +176,44 @@ This environment variable sets the runtime environment for task. The default val
|
|||
|
||||
User data directory path, self configuration, please make sure the directory exists and have read write permissions. The default value is `/tmp/dolphinscheduler`
|
||||
|
||||
**`DOLPHINSCHEDULER_OPTS`**
|
||||
|
||||
This environment variable sets java options. The default value is empty.
|
||||
|
||||
**`RESOURCE_STORAGE_TYPE`**
|
||||
|
||||
This environment variable sets resource storage type for dolphinscheduler like `HDFS`, `S3`, `NONE`. The default value is `HDFS`.
|
||||
|
||||
**`RESOURCE_UPLOAD_PATH`**
|
||||
|
||||
This environment variable sets resource store path on HDFS/S3 for resource storage. The default value is `/dolphinscheduler`.
|
||||
|
||||
**`FS_DEFAULT_FS`**
|
||||
|
||||
This environment variable sets fs.defaultFS for resource storage like `file:///`, `hdfs://mycluster:8020` or `s3a://dolphinscheduler`. The default value is `file:///`.
|
||||
|
||||
**`FS_S3A_ENDPOINT`**
|
||||
|
||||
This environment variable sets s3 endpoint for resource storage. The default value is `s3.xxx.amazonaws.com`.
|
||||
|
||||
**`FS_S3A_ACCESS_KEY`**
|
||||
|
||||
This environment variable sets s3 access key for resource storage. The default value is `xxxxxxx`.
|
||||
|
||||
**`FS_S3A_SECRET_KEY`**
|
||||
|
||||
This environment variable sets s3 secret key for resource storage. The default value is `xxxxxxx`.
|
||||
|
||||
**`ZOOKEEPER_QUORUM`**
|
||||
|
||||
This environment variable sets zookeeper quorum for `master-server` and `worker-serverr`. The default value is `127.0.0.1:2181`.
|
||||
|
||||
**Note**: You must be specify it when start a standalone dolphinscheduler server. Like `master-server`, `worker-server`.
|
||||
|
||||
**`ZOOKEEPER_ROOT`**
|
||||
|
||||
This environment variable sets zookeeper root directory for dolphinscheduler. The default value is `/dolphinscheduler`.
|
||||
|
||||
**`MASTER_EXEC_THREADS`**
|
||||
|
||||
This environment variable sets exec thread num for `master-server`. The default value is `100`.
|
||||
|
|
@ -226,10 +254,6 @@ This environment variable sets exec thread num for `worker-server`. The default
|
|||
|
||||
This environment variable sets heartbeat interval for `worker-server`. The default value is `10`.
|
||||
|
||||
**`WORKER_FETCH_TASK_NUM`**
|
||||
|
||||
This environment variable sets fetch task num for `worker-server`. The default value is `3`.
|
||||
|
||||
**`WORKER_MAX_CPULOAD_AVG`**
|
||||
|
||||
This environment variable sets max cpu load avg for `worker-server`. The default value is `100`.
|
||||
|
|
@ -238,85 +262,25 @@ This environment variable sets max cpu load avg for `worker-server`. The default
|
|||
|
||||
This environment variable sets reserved memory for `worker-server`. The default value is `0.1`.
|
||||
|
||||
**`WORKER_WEIGHT`**
|
||||
|
||||
This environment variable sets port for `worker-server`. The default value is `100`.
|
||||
|
||||
**`WORKER_LISTEN_PORT`**
|
||||
|
||||
This environment variable sets port for `worker-server`. The default value is `1234`.
|
||||
|
||||
**`WORKER_GROUP`**
|
||||
**`WORKER_GROUPS`**
|
||||
|
||||
This environment variable sets group for `worker-server`. The default value is `default`.
|
||||
|
||||
**`XLS_FILE_PATH`**
|
||||
**`WORKER_WEIGHT`**
|
||||
|
||||
This environment variable sets xls file path for `alert-server`. The default value is `/tmp/xls`.
|
||||
This environment variable sets weight for `worker-server`. The default value is `100`.
|
||||
|
||||
**`MAIL_SERVER_HOST`**
|
||||
**`ALERT_LISTEN_HOST`**
|
||||
|
||||
This environment variable sets mail server host for `alert-server`. The default value is empty.
|
||||
This environment variable sets the host of `alert-server` for `worker-server`. The default value is `127.0.0.1`.
|
||||
|
||||
**`MAIL_SERVER_PORT`**
|
||||
**`ALERT_PLUGIN_DIR`**
|
||||
|
||||
This environment variable sets mail server port for `alert-server`. The default value is empty.
|
||||
|
||||
**`MAIL_SENDER`**
|
||||
|
||||
This environment variable sets mail sender for `alert-server`. The default value is empty.
|
||||
|
||||
**`MAIL_USER=`**
|
||||
|
||||
This environment variable sets mail user for `alert-server`. The default value is empty.
|
||||
|
||||
**`MAIL_PASSWD`**
|
||||
|
||||
This environment variable sets mail password for `alert-server`. The default value is empty.
|
||||
|
||||
**`MAIL_SMTP_STARTTLS_ENABLE`**
|
||||
|
||||
This environment variable sets SMTP tls for `alert-server`. The default value is `true`.
|
||||
|
||||
**`MAIL_SMTP_SSL_ENABLE`**
|
||||
|
||||
This environment variable sets SMTP ssl for `alert-server`. The default value is `false`.
|
||||
|
||||
**`MAIL_SMTP_SSL_TRUST`**
|
||||
|
||||
This environment variable sets SMTP ssl truest for `alert-server`. The default value is empty.
|
||||
|
||||
**`ENTERPRISE_WECHAT_ENABLE`**
|
||||
|
||||
This environment variable sets enterprise wechat enable for `alert-server`. The default value is `false`.
|
||||
|
||||
**`ENTERPRISE_WECHAT_CORP_ID`**
|
||||
|
||||
This environment variable sets enterprise wechat corp id for `alert-server`. The default value is empty.
|
||||
|
||||
**`ENTERPRISE_WECHAT_SECRET`**
|
||||
|
||||
This environment variable sets enterprise wechat secret for `alert-server`. The default value is empty.
|
||||
|
||||
**`ENTERPRISE_WECHAT_AGENT_ID`**
|
||||
|
||||
This environment variable sets enterprise wechat agent id for `alert-server`. The default value is empty.
|
||||
|
||||
**`ENTERPRISE_WECHAT_USERS`**
|
||||
|
||||
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`.
|
||||
This environment variable sets the alert plugin directory for `alert-server`. The default value is `lib/plugin/alert`.
|
||||
|
||||
## Initialization scripts
|
||||
|
||||
|
|
@ -326,7 +290,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 +307,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
|
||||
```
|
||||
|
|
|
|||
|
|
@ -13,90 +13,83 @@ Official Website: https://dolphinscheduler.apache.org
|
|||
|
||||
## 如何使用docker镜像
|
||||
|
||||
#### 你可以运行一个dolphinscheduler实例
|
||||
#### 以 docker-compose 的方式启动dolphinscheduler(推荐)
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
-e DATABASE_USERNAME=test -e DATABASE_PASSWORD=test -e DATABASE_DATABASE=dolphinscheduler \
|
||||
-p 8888:8888 \
|
||||
dolphinscheduler all
|
||||
$ docker-compose -f ./docker/docker-swarm/docker-compose.yml up -d
|
||||
```
|
||||
|
||||
在`startup.sh`脚本中,默认的创建`Postgres`的用户、密码和数据库,默认值分别为:`root`、`root`、`dolphinscheduler`。
|
||||
在`docker-compose.yml`文件中,默认的创建`Postgres`的用户、密码和数据库,默认值分别为:`root`、`root`、`dolphinscheduler`。
|
||||
|
||||
同时,默认的`Zookeeper`也会在`startup.sh`脚本中被创建。
|
||||
同时,默认的`Zookeeper`也会在`docker-compose.yml`文件中被创建。
|
||||
|
||||
访问前端界面:http://192.168.xx.xx:12345/dolphinscheduler
|
||||
|
||||
#### 或者通过环境变量 **`DATABASE_HOST`** **`DATABASE_PORT`** **`ZOOKEEPER_QUORUM`** 使用已存在的服务
|
||||
|
||||
你可以指定一个已经存在的 **`Postgres`** 服务. 如下:
|
||||
你可以指定已经存在的 **`Postgres`** 和 **`Zookeeper`** 服务. 如下:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
$ docker run -d --name dolphinscheduler \
|
||||
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
|
||||
-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 \
|
||||
dolphinscheduler all
|
||||
-p 12345:12345 \
|
||||
apache/dolphinscheduler:latest all
|
||||
```
|
||||
|
||||
你也可以指定一个已经存在的 **Zookeeper** 服务. 如下:
|
||||
|
||||
```
|
||||
$ 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 \
|
||||
dolphinscheduler all
|
||||
```
|
||||
访问前端界面:http://192.168.xx.xx:12345/dolphinscheduler
|
||||
|
||||
#### 或者运行dolphinscheduler中的部分服务
|
||||
|
||||
你能够运行dolphinscheduler中的部分服务。
|
||||
|
||||
* 创建一个 **本地卷** 用于资源存储,如下:
|
||||
|
||||
```
|
||||
docker volume create dolphinscheduler-resource-local
|
||||
```
|
||||
|
||||
* 启动一个 **master server**, 如下:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
|
||||
$ docker run -d --name dolphinscheduler-master \
|
||||
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
|
||||
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
|
||||
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
|
||||
dolphinscheduler master-server
|
||||
apache/dolphinscheduler:latest master-server
|
||||
```
|
||||
|
||||
* 启动一个 **worker server**, 如下:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
|
||||
$ docker run -d --name dolphinscheduler-worker \
|
||||
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
|
||||
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
|
||||
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
|
||||
dolphinscheduler worker-server
|
||||
-e ALERT_LISTEN_HOST="dolphinscheduler-alert" \
|
||||
-v dolphinscheduler-resource-local:/dolphinscheduler \
|
||||
apache/dolphinscheduler:latest worker-server
|
||||
```
|
||||
|
||||
* 启动一个 **api server**, 如下:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
$ docker run -d --name dolphinscheduler-api \
|
||||
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
|
||||
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
|
||||
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
|
||||
-v dolphinscheduler-resource-local:/dolphinscheduler \
|
||||
-p 12345:12345 \
|
||||
dolphinscheduler api-server
|
||||
apache/dolphinscheduler:latest api-server
|
||||
```
|
||||
|
||||
* 启动一个 **alert server**, 如下:
|
||||
|
||||
```
|
||||
$ docker run -dit --name dolphinscheduler \
|
||||
$ docker run -d --name dolphinscheduler-alert \
|
||||
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
|
||||
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
|
||||
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
|
||||
apache/dolphinscheduler:latest alert-server
|
||||
```
|
||||
|
||||
**注意**: 当你运行dolphinscheduler中的部分服务时,你必须指定这些环境变量 `DATABASE_HOST` `DATABASE_PORT` `DATABASE_DATABASE` `DATABASE_USERNAME` `DATABASE_PASSWORD` `ZOOKEEPER_QUORUM`。
|
||||
|
|
@ -115,7 +108,7 @@ $ sh ./docker/build/hooks/build
|
|||
Windows系统, 如下:
|
||||
|
||||
```bat
|
||||
c:\incubator-dolphinscheduler>.\docker\build\hooks\build.bat
|
||||
C:\incubator-dolphinscheduler>.\docker\build\hooks\build.bat
|
||||
```
|
||||
|
||||
如果你不理解这些脚本 `./docker/build/hooks/build` `./docker/build/hooks/build.bat`,请阅读里面的内容。
|
||||
|
|
@ -180,12 +173,44 @@ Dolphin Scheduler映像使用了几个容易遗漏的环境变量。虽然这些
|
|||
|
||||
用户数据目录, 用户自己配置, 请确保这个目录存在并且用户读写权限, 默认值 `/tmp/dolphinscheduler`。
|
||||
|
||||
**`DOLPHINSCHEDULER_OPTS`**
|
||||
|
||||
配置`dolphinscheduler`的`java options`,默认值 `""`、
|
||||
|
||||
**`RESOURCE_STORAGE_TYPE`**
|
||||
|
||||
配置`dolphinscheduler`的资源存储类型,可选项为 `HDFS`、`S3`、`NONE`,默认值 `HDFS`。
|
||||
|
||||
**`RESOURCE_UPLOAD_PATH`**
|
||||
|
||||
配置`HDFS/S3`上的资源存储路径,默认值 `/dolphinscheduler`。
|
||||
|
||||
**`FS_DEFAULT_FS`**
|
||||
|
||||
配置资源存储的文件系统协议,如 `file:///`, `hdfs://mycluster:8020` or `s3a://dolphinscheduler`,默认值 `file:///`。
|
||||
|
||||
**`FS_S3A_ENDPOINT`**
|
||||
|
||||
当`RESOURCE_STORAGE_TYPE=S3`时,需要配置`S3`的访问路径,默认值 `s3.xxx.amazonaws.com`。
|
||||
|
||||
**`FS_S3A_ACCESS_KEY`**
|
||||
|
||||
当`RESOURCE_STORAGE_TYPE=S3`时,需要配置`S3`的`s3 access key`,默认值 `xxxxxxx`。
|
||||
|
||||
**`FS_S3A_SECRET_KEY`**
|
||||
|
||||
当`RESOURCE_STORAGE_TYPE=S3`时,需要配置`S3`的`s3 secret key`,默认值 `xxxxxxx`。
|
||||
|
||||
**`ZOOKEEPER_QUORUM`**
|
||||
|
||||
配置`master-server`和`worker-serverr`的`Zookeeper`地址, 默认值 `127.0.0.1:2181`。
|
||||
|
||||
**注意**: 当运行`dolphinscheduler`中`master-server`、`worker-server`这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
|
||||
|
||||
**`ZOOKEEPER_ROOT`**
|
||||
|
||||
配置`dolphinscheduler`在`zookeeper`中数据存储的根目录,默认值 `/dolphinscheduler`。
|
||||
|
||||
**`MASTER_EXEC_THREADS`**
|
||||
|
||||
配置`master-server`中的执行线程数量,默认值 `100`。
|
||||
|
|
@ -226,10 +251,6 @@ Dolphin Scheduler映像使用了几个容易遗漏的环境变量。虽然这些
|
|||
|
||||
配置`worker-server`中的心跳交互时间,默认值 `10`。
|
||||
|
||||
**`WORKER_FETCH_TASK_NUM`**
|
||||
|
||||
配置`worker-server`中的获取任务的数量,默认值 `3`。
|
||||
|
||||
**`WORKER_MAX_CPULOAD_AVG`**
|
||||
|
||||
配置`worker-server`中的CPU中的最大`load average`值,默认值 `100`。
|
||||
|
|
@ -238,85 +259,25 @@ Dolphin Scheduler映像使用了几个容易遗漏的环境变量。虽然这些
|
|||
|
||||
配置`worker-server`的保留内存,默认值 `0.1`。
|
||||
|
||||
**`WORKER_WEIGHT`**
|
||||
|
||||
配置`worker-server`的权重,默认之`100`。
|
||||
|
||||
**`WORKER_LISTEN_PORT`**
|
||||
|
||||
配置`worker-server`的端口,默认值 `1234`。
|
||||
|
||||
**`WORKER_GROUP`**
|
||||
**`WORKER_GROUPS`**
|
||||
|
||||
配置`worker-server`的分组,默认值 `default`。
|
||||
|
||||
**`XLS_FILE_PATH`**
|
||||
**`WORKER_WEIGHT`**
|
||||
|
||||
配置`alert-server`的`XLS`文件的存储路径,默认值 `/tmp/xls`。
|
||||
配置`worker-server`的权重,默认之`100`。
|
||||
|
||||
**`MAIL_SERVER_HOST`**
|
||||
**`ALERT_LISTEN_HOST`**
|
||||
|
||||
配置`alert-server`的邮件服务地址,默认值 `空`。
|
||||
配置`worker-server`的告警主机,即`alert-server`的主机名,默认值 `127.0.0.1`。
|
||||
|
||||
**`MAIL_SERVER_PORT`**
|
||||
**`ALERT_PLUGIN_DIR`**
|
||||
|
||||
配置`alert-server`的邮件服务端口,默认值 `空`。
|
||||
|
||||
**`MAIL_SENDER`**
|
||||
|
||||
配置`alert-server`的邮件发送人,默认值 `空`。
|
||||
|
||||
**`MAIL_USER=`**
|
||||
|
||||
配置`alert-server`的邮件服务用户名,默认值 `空`。
|
||||
|
||||
**`MAIL_PASSWD`**
|
||||
|
||||
配置`alert-server`的邮件服务用户密码,默认值 `空`。
|
||||
|
||||
**`MAIL_SMTP_STARTTLS_ENABLE`**
|
||||
|
||||
配置`alert-server`的邮件服务是否启用TLS,默认值 `true`。
|
||||
|
||||
**`MAIL_SMTP_SSL_ENABLE`**
|
||||
|
||||
配置`alert-server`的邮件服务是否启用SSL,默认值 `false`。
|
||||
|
||||
**`MAIL_SMTP_SSL_TRUST`**
|
||||
|
||||
配置`alert-server`的邮件服务SSL的信任地址,默认值 `空`。
|
||||
|
||||
**`ENTERPRISE_WECHAT_ENABLE`**
|
||||
|
||||
配置`alert-server`的邮件服务是否启用企业微信,默认值 `false`。
|
||||
|
||||
**`ENTERPRISE_WECHAT_CORP_ID`**
|
||||
|
||||
配置`alert-server`的邮件服务企业微信`ID`,默认值 `空`。
|
||||
|
||||
**`ENTERPRISE_WECHAT_SECRET`**
|
||||
|
||||
配置`alert-server`的邮件服务企业微信`SECRET`,默认值 `空`。
|
||||
|
||||
**`ENTERPRISE_WECHAT_AGENT_ID`**
|
||||
|
||||
配置`alert-server`的邮件服务企业微信`AGENT_ID`,默认值 `空`。
|
||||
|
||||
**`ENTERPRISE_WECHAT_USERS`**
|
||||
|
||||
配置`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`这个值。
|
||||
配置`alert-server`的告警插件目录,默认值 `lib/plugin/alert`。
|
||||
|
||||
## 初始化脚本
|
||||
|
||||
|
|
@ -326,7 +287,7 @@ Dolphin Scheduler映像使用了几个容易遗漏的环境变量。虽然这些
|
|||
|
||||
```
|
||||
export API_SERVER_PORT=5555
|
||||
```
|
||||
```
|
||||
|
||||
当添加以上环境变量后,你应该在相应的模板文件`/opt/dolphinscheduler/conf/application-api.properties.tpl`中添加这个环境变量配置:
|
||||
```
|
||||
|
|
@ -343,8 +304,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
|
||||
```
|
||||
|
|
|
|||
|
|
@ -14,43 +14,17 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
#alert type is EMAIL/SMS
|
||||
alert.type=EMAIL
|
||||
|
||||
# alter msg template, default is html template
|
||||
#alert.template=html
|
||||
# mail server configuration
|
||||
mail.protocol=SMTP
|
||||
mail.server.host=${MAIL_SERVER_HOST}
|
||||
mail.server.port=${MAIL_SERVER_PORT}
|
||||
mail.sender=${MAIL_SENDER}
|
||||
mail.user=${MAIL_USER}
|
||||
mail.passwd=${MAIL_PASSWD}
|
||||
# TLS
|
||||
mail.smtp.starttls.enable=${MAIL_SMTP_STARTTLS_ENABLE}
|
||||
# SSL
|
||||
mail.smtp.ssl.enable=${MAIL_SMTP_SSL_ENABLE}
|
||||
mail.smtp.ssl.trust=${MAIL_SMTP_SSL_TRUST}
|
||||
|
||||
#xls file path,need create if not exist
|
||||
xls.file.path=${XLS_FILE_PATH}
|
||||
|
||||
# plugins dir
|
||||
plugin.dir=${ALERT_PLUGIN_DIR}
|
||||
|
||||
# Enterprise WeChat configuration
|
||||
enterprise.wechat.enable=${ENTERPRISE_WECHAT_ENABLE}
|
||||
enterprise.wechat.corp.id=${ENTERPRISE_WECHAT_CORP_ID}
|
||||
enterprise.wechat.secret=${ENTERPRISE_WECHAT_SECRET}
|
||||
enterprise.wechat.agent.id=${ENTERPRISE_WECHAT_AGENT_ID}
|
||||
enterprise.wechat.users=${ENTERPRISE_WECHAT_USERS}
|
||||
enterprise.wechat.token.url=https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpId}&corpsecret={secret}
|
||||
enterprise.wechat.push.url=https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}
|
||||
enterprise.wechat.team.send.msg={\"toparty\":\"{toParty}\",\"agentid\":\"{agentId}\",\"msgtype\":\"text\",\"text\":{\"content\":\"{msg}\"},\"safe\":\"0\"}
|
||||
enterprise.wechat.user.send.msg={\"touser\":\"{toUser}\",\"agentid\":\"{agentId}\",\"msgtype\":\"markdown\",\"markdown\":{\"content\":\"{msg}\"}}
|
||||
|
||||
|
||||
|
||||
#This configuration file configures the configuration parameters related to the AlertServer.
|
||||
#These parameters are only related to the AlertServer, and it has nothing to do with the specific Alert Plugin.
|
||||
#eg : max retry num.
|
||||
#eg : Alert Server Listener port
|
||||
|
||||
#alert.plugin.dir config the Alert Plugin dir . AlertServer while find and load the Alert Plugin Jar from this dir when deploy and start AlertServer on the server .
|
||||
alert.plugin.dir=${ALERT_PLUGIN_DIR}
|
||||
|
||||
#maven.local.repository=/Users/gaojun/Documents/jianguoyun/localRepository
|
||||
|
||||
#alert.plugin.binding config the Alert Plugin need be load when development and run in IDE
|
||||
#alert.plugin.binding=\
|
||||
# ./dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/pom.xml
|
||||
|
|
|
|||
|
|
@ -24,22 +24,39 @@ server.servlet.session.timeout=7200
|
|||
# servlet config
|
||||
server.servlet.context-path=/dolphinscheduler/
|
||||
|
||||
# time zone
|
||||
spring.jackson.time-zone=GMT+8
|
||||
|
||||
# file size limit for upload
|
||||
spring.servlet.multipart.max-file-size=1024MB
|
||||
spring.servlet.multipart.max-request-size=1024MB
|
||||
|
||||
# enable response compression
|
||||
server.compression.enabled=true
|
||||
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml
|
||||
|
||||
# post content
|
||||
server.jetty.max-http-post-size=5000000
|
||||
server.jetty.max-http-form-post-size=5000000
|
||||
|
||||
# i18n
|
||||
spring.messages.encoding=UTF-8
|
||||
|
||||
#i18n classpath folder , file prefix messages, if have many files, use "," seperator
|
||||
# i18n classpath folder , file prefix messages, if have many files, use "," seperator
|
||||
spring.messages.basename=i18n/messages
|
||||
|
||||
# Authentication types (supported types: PASSWORD)
|
||||
security.authentication.type=PASSWORD
|
||||
|
||||
|
||||
|
||||
|
||||
#============================================================================
|
||||
# LDAP Config
|
||||
# mock ldap server from https://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/
|
||||
#============================================================================
|
||||
# admin userId
|
||||
#security.authentication.ldap.user.admin=read-only-admin
|
||||
# ldap server config
|
||||
#ldap.urls=ldap://ldap.forumsys.com:389/
|
||||
#ldap.base.dn=dc=example,dc=com
|
||||
#ldap.username=cn=read-only-admin,dc=example,dc=com
|
||||
#ldap.password=password
|
||||
#ldap.user.identity.attribute=uid
|
||||
#ldap.user.email.attribute=mail
|
||||
|
|
|
|||
|
|
@ -15,64 +15,64 @@
|
|||
# limitations under the License.
|
||||
#
|
||||
|
||||
#============================================================================
|
||||
# System
|
||||
#============================================================================
|
||||
# system env path. self configuration, please make sure the directory and file exists and have read write execute permissions
|
||||
dolphinscheduler.env.path=${DOLPHINSCHEDULER_ENV_PATH}
|
||||
|
||||
# user data directory path, self configuration, please make sure the directory exists and have read write permissions
|
||||
data.basedir.path=${DOLPHINSCHEDULER_DATA_BASEDIR_PATH}
|
||||
|
||||
# resource upload startup type : HDFS,S3,NONE
|
||||
# resource storage type : HDFS, S3, NONE
|
||||
resource.storage.type=${RESOURCE_STORAGE_TYPE}
|
||||
|
||||
#============================================================================
|
||||
# HDFS
|
||||
#============================================================================
|
||||
# resource store on HDFS/S3 path, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。"/dolphinscheduler" is recommended
|
||||
resource.upload.path=${RESOURCE_UPLOAD_PATH}
|
||||
|
||||
# user data local directory path, please make sure the directory exists and have read write permissions
|
||||
data.basedir.path=${DOLPHINSCHEDULER_DATA_BASEDIR_PATH}
|
||||
|
||||
# whether kerberos starts
|
||||
#hadoop.security.authentication.startup.state=false
|
||||
hadoop.security.authentication.startup.state=false
|
||||
|
||||
# java.security.krb5.conf path
|
||||
#java.security.krb5.conf.path=/opt/krb5.conf
|
||||
java.security.krb5.conf.path=/opt/krb5.conf
|
||||
|
||||
# loginUserFromKeytab user
|
||||
#login.user.keytab.username=hdfs-mycluster@ESZ.COM
|
||||
# login user from keytab username
|
||||
login.user.keytab.username=hdfs-mycluster@ESZ.COM
|
||||
|
||||
# loginUserFromKeytab path
|
||||
#login.user.keytab.path=/opt/hdfs.headless.keytab
|
||||
# login user from keytab path
|
||||
login.user.keytab.path=/opt/hdfs.headless.keytab
|
||||
|
||||
#resource.view.suffixs
|
||||
#resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml,properties
|
||||
#resource.view.suffixs=txt,log,sh,bat,conf,cfg,py,java,sql,xml,hql,properties,json,yml,yaml,ini,js
|
||||
|
||||
# if resource.storage.type=HDFS, the user need to have permission to create directories under the HDFS root path
|
||||
hdfs.root.user=hdfs
|
||||
|
||||
# kerberos expire time
|
||||
kerberos.expire.time=7
|
||||
|
||||
#============================================================================
|
||||
# S3
|
||||
#============================================================================
|
||||
# if resource.storage.type=S3,the value like: s3a://dolphinscheduler ; if resource.storage.type=HDFS, When namenode HA is enabled, you need to copy core-site.xml and hdfs-site.xml to conf dir
|
||||
# if resource.storage.type=S3, the value like: s3a://dolphinscheduler; if resource.storage.type=HDFS, When namenode HA is enabled, you need to copy core-site.xml and hdfs-site.xml to conf dir
|
||||
fs.defaultFS=${FS_DEFAULT_FS}
|
||||
|
||||
# if resource.storage.type=S3,s3 endpoint
|
||||
# if resource.storage.type=S3, s3 endpoint
|
||||
fs.s3a.endpoint=${FS_S3A_ENDPOINT}
|
||||
|
||||
# if resource.storage.type=S3,s3 access key
|
||||
# if resource.storage.type=S3, s3 access key
|
||||
fs.s3a.access.key=${FS_S3A_ACCESS_KEY}
|
||||
|
||||
# if resource.storage.type=S3,s3 secret key
|
||||
# if resource.storage.type=S3, s3 secret key
|
||||
fs.s3a.secret.key=${FS_S3A_SECRET_KEY}
|
||||
|
||||
# if not use hadoop resourcemanager, please keep default value; if resourcemanager HA enable, please type the HA ips ; if resourcemanager is single, make this value empty TODO
|
||||
# if resourcemanager HA enable, please type the HA ips ; if resourcemanager is single, make this value empty
|
||||
yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx
|
||||
|
||||
# If resourcemanager HA enable or not use resourcemanager, please keep the default value; If resourcemanager is single, you only need to replace ark1 to actual resourcemanager hostname.
|
||||
yarn.application.status.address=http://ark1:8088/ws/v1/cluster/apps/%s
|
||||
# if resourcemanager HA enable or not use resourcemanager, please keep the default value; If resourcemanager is single, you only need to replace ds1 to actual resourcemanager hostname.
|
||||
yarn.application.status.address=http://ds1:8088/ws/v1/cluster/apps/%s
|
||||
|
||||
# job history status url when application number threshold is reached(default 10000,maybe it was set to 1000)
|
||||
yarn.job.history.status.address=http://ds1:19888/ws/v1/history/mapreduce/jobs/%s
|
||||
|
||||
# system env path, If you want to set your own path, you need to set this env file to an absolute path
|
||||
dolphinscheduler.env.path=${DOLPHINSCHEDULER_ENV_PATH}
|
||||
development.state=false
|
||||
|
||||
# kerberos tgt expire time, unit is hours
|
||||
kerberos.expire.time=2
|
||||
|
||||
# datasource encryption salt
|
||||
datasource.encryption.enable=false
|
||||
datasource.encryption.salt=!@#$%^&*
|
||||
|
||||
# Network IP gets priority, default inner outer
|
||||
#dolphin.scheduler.network.priority.strategy=default
|
||||
|
|
|
|||
|
|
@ -17,12 +17,21 @@
|
|||
|
||||
# db
|
||||
spring.datasource.driver-class-name=${DATABASE_DRIVER}
|
||||
spring.datasource.url=jdbc:${DATABASE_TYPE}://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_DATABASE}?${DATABASE_PARAMS}
|
||||
spring.datasource.url=jdbc:${DATABASE_TYPE}://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_DATABASE}${DATABASE_PARAMS:+?${DATABASE_PARAMS}}
|
||||
spring.datasource.username=${DATABASE_USERNAME}
|
||||
spring.datasource.password=${DATABASE_PASSWORD}
|
||||
|
||||
## base spring data source configuration todo need to remove
|
||||
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
|
||||
# postgresql
|
||||
#spring.datasource.driver-class-name=org.postgresql.Driver
|
||||
#spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/dolphinscheduler
|
||||
#spring.datasource.username=test
|
||||
#spring.datasource.password=test
|
||||
|
||||
# mysql
|
||||
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
|
||||
#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
|
||||
#spring.datasource.username=xxxx
|
||||
#spring.datasource.password=xxxx
|
||||
|
||||
# connection configuration
|
||||
#spring.datasource.initialSize=5
|
||||
|
|
@ -63,4 +72,4 @@ spring.datasource.password=${DATABASE_PASSWORD}
|
|||
|
||||
# open PSCache, specify count PSCache for every connection
|
||||
#spring.datasource.poolPreparedStatements=true
|
||||
#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
|
||||
#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
|
||||
|
|
|
|||
12
docker/build/conf/dolphinscheduler/env/dolphinscheduler_env.sh
vendored
Normal file → Executable file
12
docker/build/conf/dolphinscheduler/env/dolphinscheduler_env.sh
vendored
Normal file → Executable file
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -20,14 +20,6 @@
|
|||
<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
|
||||
|
||||
<property name="log.base" value="logs"/>
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>
|
||||
[%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
|
||||
</pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<appender name="ALERTLOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.base}/dolphinscheduler-alert.log</file>
|
||||
|
|
@ -45,7 +37,6 @@
|
|||
</appender>
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="ALERTLOGFILE"/>
|
||||
</root>
|
||||
|
||||
|
|
|
|||
|
|
@ -20,23 +20,15 @@
|
|||
<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
|
||||
|
||||
<property name="log.base" value="logs"/>
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>
|
||||
[%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
|
||||
</pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- api server logback config start -->
|
||||
<appender name="APILOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.base}/dolphinscheduler-api-server.log</file>
|
||||
<file>${log.base}/dolphinscheduler-api.log</file>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>INFO</level>
|
||||
</filter>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${log.base}/dolphinscheduler-api-server.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
|
||||
<fileNamePattern>${log.base}/dolphinscheduler-api.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
|
||||
<maxHistory>168</maxHistory>
|
||||
<maxFileSize>64MB</maxFileSize>
|
||||
</rollingPolicy>
|
||||
|
|
@ -55,7 +47,6 @@
|
|||
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="APILOGFILE"/>
|
||||
</root>
|
||||
|
||||
|
|
|
|||
|
|
@ -20,21 +20,13 @@
|
|||
<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
|
||||
|
||||
<property name="log.base" value="logs"/>
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>
|
||||
[%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
|
||||
</pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<conversionRule conversionWord="messsage"
|
||||
converterClass="org.apache.dolphinscheduler.server.log.SensitiveDataConverter"/>
|
||||
<appender name="TASKLOGFILE" class="ch.qos.logback.classic.sift.SiftingAppender">
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>INFO</level>
|
||||
</filter>
|
||||
</filter> -->
|
||||
<filter class="org.apache.dolphinscheduler.server.log.TaskLogFilter"/>
|
||||
<Discriminator class="org.apache.dolphinscheduler.server.log.TaskLogDiscriminator">
|
||||
<key>taskAppId</key>
|
||||
|
|
@ -74,7 +66,6 @@
|
|||
<!-- master server logback config end -->
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="TASKLOGFILE"/>
|
||||
<appender-ref ref="MASTERLOGFILE"/>
|
||||
</root>
|
||||
|
|
|
|||
|
|
@ -20,22 +20,14 @@
|
|||
<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
|
||||
|
||||
<property name="log.base" value="logs"/>
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>
|
||||
[%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
|
||||
</pattern>
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- worker server logback config start -->
|
||||
<conversionRule conversionWord="messsage"
|
||||
converterClass="org.apache.dolphinscheduler.server.log.SensitiveDataConverter"/>
|
||||
<appender name="TASKLOGFILE" class="ch.qos.logback.classic.sift.SiftingAppender">
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>INFO</level>
|
||||
</filter>
|
||||
</filter> -->
|
||||
<filter class="org.apache.dolphinscheduler.server.log.TaskLogFilter"/>
|
||||
<Discriminator class="org.apache.dolphinscheduler.server.log.TaskLogDiscriminator">
|
||||
<key>taskAppId</key>
|
||||
|
|
@ -56,10 +48,9 @@
|
|||
</appender>
|
||||
<appender name="WORKERLOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.base}/dolphinscheduler-worker.log</file>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>INFO</level>
|
||||
</filter>
|
||||
<filter class="org.apache.dolphinscheduler.server.log.WorkerLogFilter"/>
|
||||
</filter> -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${log.base}/dolphinscheduler-worker.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
|
||||
<maxHistory>168</maxHistory>
|
||||
|
|
@ -75,7 +66,6 @@
|
|||
<!-- worker server logback config end -->
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="TASKLOGFILE"/>
|
||||
<appender-ref ref="WORKERLOGFILE"/>
|
||||
</root>
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ master.exec.threads=${MASTER_EXEC_THREADS}
|
|||
# master execute task number in parallel
|
||||
master.exec.task.num=${MASTER_EXEC_TASK_NUM}
|
||||
|
||||
# master dispatch task number
|
||||
#master.dispatch.task.num=3
|
||||
|
||||
# master heartbeat interval
|
||||
master.heartbeat.interval=${MASTER_HEARTBEAT_INTERVAL}
|
||||
|
||||
|
|
@ -37,4 +40,4 @@ master.max.cpuload.avg=${MASTER_MAX_CPULOAD_AVG}
|
|||
master.reserved.memory=${MASTER_RESERVED_MEMORY}
|
||||
|
||||
# master listen port
|
||||
#master.listen.port=${MASTER_LISTEN_PORT}
|
||||
master.listen.port=${MASTER_LISTEN_PORT}
|
||||
|
|
|
|||
|
|
@ -51,4 +51,4 @@
|
|||
#============================================================================
|
||||
# Configure Datasources
|
||||
#============================================================================
|
||||
#org.quartz.dataSource.myDs.connectionProvider.class = org.apache.dolphinscheduler.service.quartz.DruidConnectionProvider
|
||||
#org.quartz.dataSource.myDs.connectionProvider.class = org.apache.dolphinscheduler.service.quartz.DruidConnectionProvider
|
||||
|
|
|
|||
|
|
@ -21,20 +21,20 @@ worker.exec.threads=${WORKER_EXEC_THREADS}
|
|||
# worker heartbeat interval
|
||||
worker.heartbeat.interval=${WORKER_HEARTBEAT_INTERVAL}
|
||||
|
||||
# submit the number of tasks at a time
|
||||
worker.fetch.task.num=${WORKER_FETCH_TASK_NUM}
|
||||
|
||||
# only less than cpu avg load, worker server can work. default value : the number of cpu cores * 2
|
||||
# only less than cpu avg load, worker server can work. default value -1: the number of cpu cores * 2
|
||||
worker.max.cpuload.avg=${WORKER_MAX_CPULOAD_AVG}
|
||||
|
||||
# only larger than reserved memory, worker server can work. default value : physical memory * 1/6, unit is G.
|
||||
worker.reserved.memory=${WORKER_RESERVED_MEMORY}
|
||||
|
||||
# worker listener port
|
||||
#worker.listen.port=${WORKER_LISTEN_PORT}
|
||||
worker.listen.port=${WORKER_LISTEN_PORT}
|
||||
|
||||
# default worker group
|
||||
#worker.groups=${WORKER_GROUP}
|
||||
worker.groups=${WORKER_GROUPS}
|
||||
|
||||
# default worker weight
|
||||
#worker.weight=${WORKER_WEIGHT}
|
||||
worker.weight=${WORKER_WEIGHT}
|
||||
|
||||
# alert server listener host
|
||||
alert.listen.host=${ALERT_LISTEN_HOST}
|
||||
|
|
|
|||
|
|
@ -26,4 +26,5 @@ zookeeper.dolphinscheduler.root=${ZOOKEEPER_ROOT}
|
|||
#zookeeper.connection.timeout=30000
|
||||
#zookeeper.retry.base.sleep=100
|
||||
#zookeeper.retry.max.sleep=30000
|
||||
#zookeeper.retry.maxtime=10
|
||||
#zookeeper.retry.maxtime=10
|
||||
#zookeeper.max.wait.time=10000
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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=*
|
||||
|
|
@ -24,7 +24,7 @@ printenv
|
|||
if [ -z "${VERSION}" ]
|
||||
then
|
||||
echo "set default environment variable [VERSION]"
|
||||
VERSION=$(grep '<version>' -m 1 "$(pwd)"/pom.xml | awk '{print $1}' | sed 's/<version>//' | sed 's/<\/version>//')
|
||||
VERSION=$(grep '<revision>' -m 1 "$(pwd)"/pom.xml | awk '{print $1}' | sed 's/<revision>//' | sed 's/<\/revision>//')
|
||||
export VERSION
|
||||
fi
|
||||
|
||||
|
|
@ -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 -------"
|
||||
|
|
|
|||
|
|
@ -20,7 +20,8 @@ set -e
|
|||
|
||||
echo "init env variables"
|
||||
|
||||
# Define parameters default value.
|
||||
# Define parameters default value
|
||||
|
||||
#============================================================================
|
||||
# Database Source
|
||||
#============================================================================
|
||||
|
|
@ -34,14 +35,14 @@ export DATABASE_DRIVER=${DATABASE_DRIVER:-"org.postgresql.Driver"}
|
|||
export DATABASE_PARAMS=${DATABASE_PARAMS:-"characterEncoding=utf8"}
|
||||
|
||||
#============================================================================
|
||||
# System
|
||||
# Common
|
||||
#============================================================================
|
||||
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"}
|
||||
|
|
@ -69,41 +70,17 @@ export MASTER_LISTEN_PORT=${MASTER_LISTEN_PORT:-"5678"}
|
|||
#============================================================================
|
||||
export WORKER_EXEC_THREADS=${WORKER_EXEC_THREADS:-"100"}
|
||||
export WORKER_HEARTBEAT_INTERVAL=${WORKER_HEARTBEAT_INTERVAL:-"10"}
|
||||
export WORKER_FETCH_TASK_NUM=${WORKER_FETCH_TASK_NUM:-"3"}
|
||||
export WORKER_MAX_CPULOAD_AVG=${WORKER_MAX_CPULOAD_AVG:-"100"}
|
||||
export WORKER_RESERVED_MEMORY=${WORKER_RESERVED_MEMORY:-"0.1"}
|
||||
export WORKER_LISTEN_PORT=${WORKER_LISTEN_PORT:-"1234"}
|
||||
export WORKER_GROUP=${WORKER_GROUP:-"default"}
|
||||
export WORKER_GROUPS=${WORKER_GROUPS:-"default"}
|
||||
export WORKER_WEIGHT=${WORKER_WEIGHT:-"100"}
|
||||
export ALERT_LISTEN_HOST=${ALERT_LISTEN_HOST:-"127.0.0.1"}
|
||||
|
||||
#============================================================================
|
||||
# Alert Server
|
||||
#============================================================================
|
||||
# alert plugin dir
|
||||
export ALERT_PLUGIN_DIR=${ALERT_PLUGIN_DIR:-"/opt/dolphinscheduler"}
|
||||
# XLS FILE
|
||||
export XLS_FILE_PATH=${XLS_FILE_PATH:-"/tmp/xls"}
|
||||
# mail
|
||||
export MAIL_SERVER_HOST=${MAIL_SERVER_HOST:-""}
|
||||
export MAIL_SERVER_PORT=${MAIL_SERVER_PORT:-""}
|
||||
export MAIL_SENDER=${MAIL_SENDER:-""}
|
||||
export MAIL_USER=${MAIL_USER:-""}
|
||||
export MAIL_PASSWD=${MAIL_PASSWD:-""}
|
||||
export MAIL_SMTP_STARTTLS_ENABLE=${MAIL_SMTP_STARTTLS_ENABLE:-"true"}
|
||||
export MAIL_SMTP_SSL_ENABLE=${MAIL_SMTP_SSL_ENABLE:-"false"}
|
||||
export MAIL_SMTP_SSL_TRUST=${MAIL_SMTP_SSL_TRUST:-""}
|
||||
# wechat
|
||||
export ENTERPRISE_WECHAT_ENABLE=${ENTERPRISE_WECHAT_ENABLE:-"false"}
|
||||
export ENTERPRISE_WECHAT_CORP_ID=${ENTERPRISE_WECHAT_CORP_ID:-""}
|
||||
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"}
|
||||
export ALERT_PLUGIN_DIR=${ALERT_PLUGIN_DIR:-"lib/plugin/alert"}
|
||||
|
||||
echo "generate app config"
|
||||
ls ${DOLPHINSCHEDULER_HOME}/conf/ | grep ".tpl" | while read line; do
|
||||
|
|
@ -112,7 +89,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
|
||||
|
|
@ -22,11 +22,11 @@ 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))
|
||||
local counter=$((counter+1))
|
||||
if [ $counter == 30 ]; then
|
||||
echo "Error: Couldn't connect to ${DATABASE_TYPE}."
|
||||
exit 1
|
||||
|
|
@ -43,23 +43,55 @@ 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() {
|
||||
# check ds version
|
||||
checkDSVersion() {
|
||||
if [ ${DATABASE_TYPE} = "mysql" ]; then
|
||||
v=$(mysql -h${DATABASE_HOST} -P${DATABASE_PORT} -u${DATABASE_USERNAME} --password=${DATABASE_PASSWORD} -D ${DATABASE_DATABASE} -e "SELECT * FROM public.t_ds_version" 2>/dev/null)
|
||||
else
|
||||
v=$(PGPASSWORD=${DATABASE_PASSWORD} psql -h ${DATABASE_HOST} -p ${DATABASE_PORT} -U ${DATABASE_USERNAME} -d ${DATABASE_DATABASE} -tAc "SELECT * FROM public.t_ds_version" 2>/dev/null)
|
||||
fi
|
||||
if [ -n "$v" ]; then
|
||||
echo "ds version: $v"
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# check init database
|
||||
checkInitDatabase() {
|
||||
echo "check init database"
|
||||
while ! checkDSVersion; do
|
||||
local counter=$((counter+1))
|
||||
if [ $counter == 30 ]; then
|
||||
echo "Error: Couldn't check init database."
|
||||
exit 1
|
||||
fi
|
||||
echo "Trying to check init database. Attempt $counter."
|
||||
sleep 5
|
||||
done
|
||||
}
|
||||
|
||||
# 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
|
||||
counter=$((counter+1))
|
||||
local counter=$((counter+1))
|
||||
if [ $counter == 30 ]; then
|
||||
echo "Error: Couldn't connect to zookeeper."
|
||||
exit 1
|
||||
|
|
@ -70,12 +102,6 @@ initZK() {
|
|||
done
|
||||
}
|
||||
|
||||
# start nginx
|
||||
initNginx() {
|
||||
echo "start nginx"
|
||||
nginx &
|
||||
}
|
||||
|
||||
# start master-server
|
||||
initMasterServer() {
|
||||
echo "start master-server"
|
||||
|
|
@ -115,59 +141,55 @@ 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.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
|
||||
LOGFILE=${DOLPHINSCHEDULER_LOGS}/dolphinscheduler-api.log
|
||||
;;
|
||||
(alert-server)
|
||||
initDatabase
|
||||
waitDatabase
|
||||
checkInitDatabase
|
||||
initAlertServer
|
||||
LOGFILE=${DOLPHINSCHEDULER_LOGS}/dolphinscheduler-alert.log
|
||||
;;
|
||||
(frontend)
|
||||
initNginx
|
||||
LOGFILE=/var/log/nginx/access.log
|
||||
;;
|
||||
(help)
|
||||
printUsage
|
||||
exit 1
|
||||
|
|
@ -179,8 +201,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}"
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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,53 +77,21 @@ 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
|
||||
ports:
|
||||
- 50052:50052
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
XLS_FILE_PATH: "/tmp/xls"
|
||||
MAIL_SERVER_HOST: ""
|
||||
MAIL_SERVER_PORT: ""
|
||||
MAIL_SENDER: ""
|
||||
MAIL_USER: ""
|
||||
MAIL_PASSWD: ""
|
||||
MAIL_SMTP_STARTTLS_ENABLE: "false"
|
||||
MAIL_SMTP_SSL_ENABLE: "false"
|
||||
MAIL_SMTP_SSL_TRUST: ""
|
||||
ENTERPRISE_WECHAT_ENABLE: "false"
|
||||
ENTERPRISE_WECHAT_CORP_ID: ""
|
||||
ENTERPRISE_WECHAT_SECRET: ""
|
||||
ENTERPRISE_WECHAT_AGENT_ID: ""
|
||||
ENTERPRISE_WECHAT_USERS: ""
|
||||
ALERT_PLUGIN_DIR: lib/plugin/alert
|
||||
DATABASE_HOST: dolphinscheduler-postgresql
|
||||
DATABASE_PORT: 5432
|
||||
DATABASE_USERNAME: root
|
||||
|
|
@ -133,14 +106,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 +142,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
|
||||
|
|
@ -183,35 +158,36 @@ services:
|
|||
TZ: Asia/Shanghai
|
||||
WORKER_EXEC_THREADS: "100"
|
||||
WORKER_HEARTBEAT_INTERVAL: "10"
|
||||
WORKER_FETCH_TASK_NUM: "3"
|
||||
WORKER_MAX_CPULOAD_AVG: "100"
|
||||
WORKER_RESERVED_MEMORY: "0.1"
|
||||
WORKER_GROUP: "default"
|
||||
WORKER_GROUPS: "default"
|
||||
WORKER_WEIGHT: "100"
|
||||
DOLPHINSCHEDULER_DATA_BASEDIR_PATH: "/tmp/dolphinscheduler"
|
||||
DOLPHINSCHEDULER_DATA_BASEDIR_PATH: /tmp/dolphinscheduler
|
||||
ALERT_LISTEN_HOST: dolphinscheduler-alert
|
||||
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 +200,5 @@ volumes:
|
|||
dolphinscheduler-postgresql-initdb:
|
||||
dolphinscheduler-zookeeper:
|
||||
dolphinscheduler-worker-data:
|
||||
|
||||
configs:
|
||||
dolphinscheduler-worker-task-env:
|
||||
file: ./dolphinscheduler_env.sh
|
||||
dolphinscheduler-logs:
|
||||
dolphinscheduler-resource-local:
|
||||
|
|
@ -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,23 +83,12 @@ services:
|
|||
|
||||
dolphinscheduler-alert:
|
||||
image: apache/dolphinscheduler:latest
|
||||
command: ["alert-server"]
|
||||
command: alert-server
|
||||
ports:
|
||||
- 50052:50052
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
XLS_FILE_PATH: "/tmp/xls"
|
||||
MAIL_SERVER_HOST: ""
|
||||
MAIL_SERVER_PORT: ""
|
||||
MAIL_SENDER: ""
|
||||
MAIL_USER: ""
|
||||
MAIL_PASSWD: ""
|
||||
MAIL_SMTP_STARTTLS_ENABLE: "false"
|
||||
MAIL_SMTP_SSL_ENABLE: "false"
|
||||
MAIL_SMTP_SSL_TRUST: ""
|
||||
ENTERPRISE_WECHAT_ENABLE: "false"
|
||||
ENTERPRISE_WECHAT_CORP_ID: ""
|
||||
ENTERPRISE_WECHAT_SECRET: ""
|
||||
ENTERPRISE_WECHAT_AGENT_ID: ""
|
||||
ENTERPRISE_WECHAT_USERS: ""
|
||||
ALERT_PLUGIN_DIR: lib/plugin/alert
|
||||
DATABASE_HOST: dolphinscheduler-postgresql
|
||||
DATABASE_PORT: 5432
|
||||
DATABASE_USERNAME: root
|
||||
|
|
@ -127,13 +96,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 +110,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 +130,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,38 +144,41 @@ 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"
|
||||
WORKER_FETCH_TASK_NUM: "3"
|
||||
WORKER_MAX_CPULOAD_AVG: "100"
|
||||
WORKER_RESERVED_MEMORY: "0.1"
|
||||
WORKER_GROUP: "default"
|
||||
WORKER_GROUPS: "default"
|
||||
WORKER_WEIGHT: "100"
|
||||
DOLPHINSCHEDULER_DATA_BASEDIR_PATH: "/tmp/dolphinscheduler"
|
||||
DOLPHINSCHEDULER_DATA_BASEDIR_PATH: /tmp/dolphinscheduler
|
||||
ALERT_LISTEN_HOST: dolphinscheduler-alert
|
||||
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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 | `/` |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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 }}
|
||||
|
|
|
|||
|
|
@ -129,13 +129,4 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
|
|||
{{- define "dolphinscheduler.zookeeper.quorum" -}}
|
||||
{{- $port := default "2181" (.Values.zookeeper.service.port | toString) -}}
|
||||
{{- printf "%s:%s" (include "dolphinscheduler.zookeeper.fullname" .) $port | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
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 -}}
|
||||
{{- printf "%s" $name | trunc 63 | trimSuffix "/" -}}
|
||||
{{- end -}}
|
||||
|
|
@ -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 }}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
data:
|
||||
DOLPHINSCHEDULER_OPTS: {{ .Values.api.configmap.DOLPHINSCHEDULER_OPTS | quote }}
|
||||
{{- end }}
|
||||
|
|
@ -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_ENV: |-
|
||||
{{- range .Values.common.configmap.DOLPHINSCHEDULER_ENV }}
|
||||
{{ . }}
|
||||
{{- end }}
|
||||
DOLPHINSCHEDULER_DATA_BASEDIR_PATH: {{ .Values.common.configmap.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 }}
|
||||
|
|
@ -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 }}
|
||||
|
|
@ -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_GROUPS: {{ .Values.worker.configmap.WORKER_GROUPS | 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 }}
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
@ -230,6 +206,10 @@ spec:
|
|||
volumeMounts:
|
||||
- mountPath: "/opt/dolphinscheduler/logs"
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-api
|
||||
{{- if .Values.common.fsFileResourcePersistence.enabled }}
|
||||
- mountPath: {{ .Values.common.configmap.RESOURCE_UPLOAD_PATH | quote }}
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-fs-file
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: {{ include "dolphinscheduler.fullname" . }}-api
|
||||
{{- if .Values.api.persistentVolumeClaim.enabled }}
|
||||
|
|
@ -237,4 +217,9 @@ spec:
|
|||
claimName: {{ include "dolphinscheduler.fullname" . }}-api
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.common.fsFileResourcePersistence.enabled }}
|
||||
- name: {{ include "dolphinscheduler.fullname" . }}-fs-file
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ include "dolphinscheduler.fullname" . }}-fs-file
|
||||
{{- end }}
|
||||
|
|
@ -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 }}
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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 }}
|
||||
|
|
|
|||
|
|
@ -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 }}
|
||||
|
|
|
|||
|
|
@ -14,22 +14,24 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
{{- if .Values.frontend.persistentVolumeClaim.enabled }}
|
||||
{{- if .Values.common.fsFileResourcePersistence.enabled }}
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-frontend
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-fs-file
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-frontend
|
||||
app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-fs-file
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
annotations:
|
||||
"helm.sh/resource-policy": keep
|
||||
spec:
|
||||
accessModes:
|
||||
{{- range .Values.frontend.persistentVolumeClaim.accessModes }}
|
||||
{{- range .Values.common.fsFileResourcePersistence.accessModes }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
storageClassName: {{ .Values.frontend.persistentVolumeClaim.storageClassName | quote }}
|
||||
storageClassName: {{ .Values.common.fsFileResourcePersistence.storageClassName | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.frontend.persistentVolumeClaim.storage | quote }}
|
||||
storage: {{ .Values.common.fsFileResourcePersistence.storage | quote }}
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
{{- if eq .Values.common.configmap.RESOURCE_STORAGE_TYPE "S3" }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ printf "%s-%s" .Release.Name "fs-s3a" }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-fs-s3a
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
type: Opaque
|
||||
data:
|
||||
fs-s3a-secret-key: {{ .Values.common.configmap.FS_S3A_SECRET_KEY | b64enc | quote }}
|
||||
{{- end }}
|
||||
|
|
@ -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:
|
||||
|
|
@ -327,4 +247,4 @@ spec:
|
|||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.master.persistentVolumeClaim.storage | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
@ -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: DOLPHINSCHEDULER_OPTS
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
key: DOLPHINSCHEDULER_OPTS
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-worker
|
||||
- name: WORKER_EXEC_THREADS
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-worker
|
||||
key: WORKER_EXEC_THREADS
|
||||
- name: WORKER_FETCH_TASK_NUM
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-worker
|
||||
key: WORKER_FETCH_TASK_NUM
|
||||
- name: WORKER_HEARTBEAT_INTERVAL
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
|
|
@ -157,11 +102,11 @@ spec:
|
|||
configMapKeyRef:
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-worker
|
||||
key: WORKER_LISTEN_PORT
|
||||
- name: WORKER_GROUP
|
||||
- name: WORKER_GROUPS
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-worker
|
||||
key: WORKER_GROUP
|
||||
key: WORKER_GROUPS
|
||||
- name: WORKER_WEUGHT
|
||||
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,17 @@ spec:
|
|||
failureThreshold: {{ .Values.worker.readinessProbe.failureThreshold }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- mountPath: {{ include "dolphinscheduler.worker.base.dir" . | quote }}
|
||||
- mountPath: {{ .Values.common.configmap.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
|
||||
{{- if .Values.common.fsFileResourcePersistence.enabled }}
|
||||
- mountPath: {{ .Values.common.configmap.RESOURCE_UPLOAD_PATH | quote }}
|
||||
name: {{ include "dolphinscheduler.fullname" . }}-fs-file
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: {{ include "dolphinscheduler.fullname" . }}-worker-data
|
||||
{{- if .Values.worker.persistentVolumeClaim.dataPersistentVolume.enabled }}
|
||||
|
|
@ -394,13 +350,18 @@ 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.common.fsFileResourcePersistence.enabled }}
|
||||
- name: {{ include "dolphinscheduler.fullname" . }}-fs-file
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ include "dolphinscheduler.fullname" . }}-fs-file
|
||||
{{- end }}
|
||||
{{- if .Values.worker.persistentVolumeClaim.enabled }}
|
||||
volumeClaimTemplates:
|
||||
{{- if .Values.worker.persistentVolumeClaim.dataPersistentVolume.enabled }}
|
||||
|
|
@ -437,4 +398,4 @@ spec:
|
|||
requests:
|
||||
storage: {{ .Values.worker.persistentVolumeClaim.logsPersistentVolume.storage | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
@ -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 }}
|
||||
|
|
|
|||
|
|
@ -58,62 +58,82 @@ 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"
|
||||
## If RESOURCE_STORAGE_TYPE is HDFS and FS_DEFAULT_FS is file:///, fsFileResourcePersistence should be enabled for resource storage
|
||||
fsFileResourcePersistence:
|
||||
enabled: false
|
||||
accessModes:
|
||||
- "ReadWriteMany"
|
||||
## storageClassName must support the access mode: ReadWriteMany
|
||||
storageClassName: "-"
|
||||
storage: "20Gi"
|
||||
|
||||
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/
|
||||
nodeSelector: {}
|
||||
# Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission,
|
||||
# effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
|
||||
tolerations: []
|
||||
# Affinity is a group of affinity scheduling rules.
|
||||
# If specified, the pod's scheduling constraints.
|
||||
# More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core
|
||||
affinity: {}
|
||||
# The jvm options for java instance startup
|
||||
jvmOptions: ""
|
||||
resources: {}
|
||||
# limits:
|
||||
# memory: "18Gi"
|
||||
# cpu: "4"
|
||||
# requests:
|
||||
# memory: "2Gi"
|
||||
# cpu: "500m"
|
||||
# You can use annotations to attach arbitrary non-identifying metadata to objects.
|
||||
# Clients such as tools and libraries can retrieve this metadata.
|
||||
## 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
|
||||
## Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints.
|
||||
## More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core
|
||||
affinity: {}
|
||||
## NodeSelector is a selector which must be true for the pod to fit on a node.
|
||||
## Selector which must match a node's labels for the pod to be scheduled on that node.
|
||||
## More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
|
||||
nodeSelector: {}
|
||||
## Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission,
|
||||
## effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
|
||||
tolerations: []
|
||||
## Compute Resources required by this container. Cannot be updated.
|
||||
## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container
|
||||
resources: {}
|
||||
# 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 +142,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 +160,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 +172,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/
|
||||
nodeSelector: {}
|
||||
# Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission,
|
||||
# effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
|
||||
tolerations: []
|
||||
# Affinity is a group of affinity scheduling rules.
|
||||
# If specified, the pod's scheduling constraints.
|
||||
# More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core
|
||||
affinity: {}
|
||||
# The jvm options for java instance startup
|
||||
jvmOptions: ""
|
||||
resources: {}
|
||||
# limits:
|
||||
# memory: "18Gi"
|
||||
# cpu: "4"
|
||||
# requests:
|
||||
# memory: "2Gi"
|
||||
# cpu: "500m"
|
||||
# You can use annotations to attach arbitrary non-identifying metadata to objects.
|
||||
# Clients such as tools and libraries can retrieve this metadata.
|
||||
## You can use annotations to attach arbitrary non-identifying metadata to objects.
|
||||
## Clients such as tools and libraries can retrieve this metadata.
|
||||
annotations: {}
|
||||
## Affinity is a group of affinity scheduling rules. If specified, the pod's scheduling constraints.
|
||||
## More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core
|
||||
affinity: {}
|
||||
## NodeSelector is a selector which must be true for the pod to fit on a node.
|
||||
## Selector which must match a node's labels for the pod to be scheduled on that node.
|
||||
## More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
|
||||
nodeSelector: {}
|
||||
## Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission,
|
||||
## effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
|
||||
tolerations: []
|
||||
## Compute Resources required by this container. Cannot be updated.
|
||||
## More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container
|
||||
resources: {}
|
||||
# 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_GROUPS: "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 +227,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 +249,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/
|
||||
nodeSelector: {}
|
||||
# Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission,
|
||||
# effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
|
||||
tolerations: []
|
||||
# Affinity is a group of affinity scheduling rules.
|
||||
# If specified, the pod's scheduling constraints.
|
||||
# More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core
|
||||
affinity: {}
|
||||
# The jvm options for java instance startup
|
||||
jvmOptions: ""
|
||||
resources: {}
|
||||
# limits:
|
||||
# memory: "4Gi"
|
||||
# cpu: "1"
|
||||
# requests:
|
||||
# memory: "2Gi"
|
||||
# cpu: "500m"
|
||||
# You can use annotations to attach arbitrary non-identifying metadata to objects.
|
||||
# Clients such as tools and libraries can retrieve this metadata.
|
||||
## 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
|
||||
## 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: []
|
||||
## 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: {}
|
||||
# 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,6 +298,8 @@ alert:
|
|||
ENTERPRISE_WECHAT_SECRET: ""
|
||||
ENTERPRISE_WECHAT_AGENT_ID: ""
|
||||
ENTERPRISE_WECHAT_USERS: ""
|
||||
## 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"
|
||||
|
|
@ -298,10 +316,8 @@ alert:
|
|||
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:
|
||||
|
|
@ -310,92 +326,40 @@ alert:
|
|||
storage: "20Gi"
|
||||
|
||||
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/
|
||||
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.
|
||||
## You can use annotations to attach arbitrary non-identifying metadata to objects.
|
||||
## Clients such as tools and libraries can retrieve this metadata.
|
||||
annotations: {}
|
||||
## Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated.
|
||||
## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
|
||||
livenessProbe:
|
||||
enabled: true
|
||||
initialDelaySeconds: "30"
|
||||
periodSeconds: "30"
|
||||
timeoutSeconds: "5"
|
||||
failureThreshold: "3"
|
||||
successThreshold: "1"
|
||||
## Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated.
|
||||
## More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
|
||||
readinessProbe:
|
||||
enabled: true
|
||||
initialDelaySeconds: "30"
|
||||
periodSeconds: "30"
|
||||
timeoutSeconds: "5"
|
||||
failureThreshold: "3"
|
||||
successThreshold: "1"
|
||||
## volumeClaimTemplates is a list of claims that pods are allowed to reference.
|
||||
## The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod.
|
||||
## Every claim in this list must have at least one matching (by name) volumeMount in one container in the template.
|
||||
## A claim in this list takes precedence over any volumes in the template, with the same name.
|
||||
persistentVolumeClaim:
|
||||
enabled: false
|
||||
accessModes:
|
||||
- "ReadWriteOnce"
|
||||
storageClassName: "-"
|
||||
storage: "20Gi"
|
||||
|
||||
frontend:
|
||||
strategy:
|
||||
type: "RollingUpdate"
|
||||
rollingUpdate:
|
||||
maxSurge: "25%"
|
||||
maxUnavailable: "25%"
|
||||
replicas: "1"
|
||||
# NodeSelector is a selector which must be true for the pod to fit on a node.
|
||||
# Selector which must match a node's labels for the pod to be scheduled on that node.
|
||||
# More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
|
||||
nodeSelector: {}
|
||||
# Tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission,
|
||||
# effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.
|
||||
tolerations: []
|
||||
# Affinity is a group of affinity scheduling rules.
|
||||
# If specified, the pod's scheduling constraints.
|
||||
# More info: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#affinity-v1-core
|
||||
## 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: []
|
||||
## 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 +378,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:
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<parent>
|
||||
<artifactId>dolphinscheduler-alert-plugin</artifactId>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,11 @@
|
|||
|
||||
package org.apache.dolphinscheduler.plugin.alert.dingtalk;
|
||||
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_FALSE;
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_NO;
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_TRUE;
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_YES;
|
||||
|
||||
import org.apache.dolphinscheduler.spi.alert.AlertChannel;
|
||||
import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory;
|
||||
import org.apache.dolphinscheduler.spi.params.InputParam;
|
||||
|
|
@ -52,9 +57,9 @@ public class DingTalkAlertChannelFactory implements AlertChannelFactory {
|
|||
.build();
|
||||
RadioParam isEnableProxy =
|
||||
RadioParam.newBuilder(DingTalkParamsConstants.NAME_DING_TALK_PROXY_ENABLE, DingTalkParamsConstants.NAME_DING_TALK_PROXY_ENABLE)
|
||||
.addParamsOptions(new ParamsOptions("YES", true, false))
|
||||
.addParamsOptions(new ParamsOptions("NO", false, false))
|
||||
.setValue(true)
|
||||
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false))
|
||||
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false))
|
||||
.setValue(STRING_TRUE)
|
||||
.addValidate(Validate.newBuilder()
|
||||
.setRequired(false)
|
||||
.build())
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<parent>
|
||||
<artifactId>dolphinscheduler-alert-plugin</artifactId>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,11 @@
|
|||
|
||||
package org.apache.dolphinscheduler.plugin.alert.email;
|
||||
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_FALSE;
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_NO;
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_TRUE;
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_YES;
|
||||
|
||||
import org.apache.dolphinscheduler.spi.alert.AlertChannel;
|
||||
import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory;
|
||||
import org.apache.dolphinscheduler.spi.alert.AlertConstants;
|
||||
|
|
@ -24,7 +29,6 @@ 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.RadioParam;
|
||||
import org.apache.dolphinscheduler.spi.params.base.DataType;
|
||||
import org.apache.dolphinscheduler.spi.params.base.ParamsOptions;
|
||||
import org.apache.dolphinscheduler.spi.params.base.PluginParams;
|
||||
import org.apache.dolphinscheduler.spi.params.base.Validate;
|
||||
|
|
@ -60,10 +64,9 @@ public class EmailAlertChannelFactory implements AlertChannelFactory {
|
|||
.build();
|
||||
|
||||
InputParam mailSmtpPort = InputParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_PORT, MailParamsConstants.MAIL_SMTP_PORT)
|
||||
.setValue(25)
|
||||
.setValue("25")
|
||||
.addValidate(Validate.newBuilder()
|
||||
.setRequired(true)
|
||||
.setType(DataType.NUMBER.getDataType())
|
||||
.build())
|
||||
.build();
|
||||
|
||||
|
|
@ -72,9 +75,9 @@ public class EmailAlertChannelFactory implements AlertChannelFactory {
|
|||
.build();
|
||||
|
||||
RadioParam enableSmtpAuth = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_AUTH, MailParamsConstants.MAIL_SMTP_AUTH)
|
||||
.addParamsOptions(new ParamsOptions("YES", true, false))
|
||||
.addParamsOptions(new ParamsOptions("NO", false, false))
|
||||
.setValue(true)
|
||||
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false))
|
||||
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false))
|
||||
.setValue(STRING_TRUE)
|
||||
.addValidate(Validate.newBuilder().setRequired(true).build())
|
||||
.build();
|
||||
|
||||
|
|
@ -87,16 +90,16 @@ public class EmailAlertChannelFactory implements AlertChannelFactory {
|
|||
.build();
|
||||
|
||||
RadioParam enableTls = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_STARTTLS_ENABLE, MailParamsConstants.MAIL_SMTP_STARTTLS_ENABLE)
|
||||
.addParamsOptions(new ParamsOptions("YES", true, false))
|
||||
.addParamsOptions(new ParamsOptions("NO", false, false))
|
||||
.setValue(false)
|
||||
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false))
|
||||
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false))
|
||||
.setValue(STRING_FALSE)
|
||||
.addValidate(Validate.newBuilder().setRequired(true).build())
|
||||
.build();
|
||||
|
||||
RadioParam enableSsl = RadioParam.newBuilder(MailParamsConstants.NAME_MAIL_SMTP_SSL_ENABLE, MailParamsConstants.MAIL_SMTP_SSL_ENABLE)
|
||||
.addParamsOptions(new ParamsOptions("YES", true, false))
|
||||
.addParamsOptions(new ParamsOptions("NO", false, false))
|
||||
.setValue(false)
|
||||
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false))
|
||||
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false))
|
||||
.setValue(STRING_FALSE)
|
||||
.addValidate(Validate.newBuilder().setRequired(true).build())
|
||||
.build();
|
||||
|
||||
|
|
|
|||
|
|
@ -91,9 +91,8 @@ public class EmailAlertChannelTest {
|
|||
InputParam mailSmtpPort = InputParam.newBuilder("serverPort", "smtp.port")
|
||||
.addValidate(Validate.newBuilder()
|
||||
.setRequired(true)
|
||||
.setType(DataType.NUMBER.getDataType())
|
||||
.build())
|
||||
.setValue(25)
|
||||
.setValue("25")
|
||||
.build();
|
||||
|
||||
InputParam mailSender = InputParam.newBuilder("sender", "sender")
|
||||
|
|
@ -102,10 +101,10 @@ public class EmailAlertChannelTest {
|
|||
.build();
|
||||
|
||||
RadioParam enableSmtpAuth = RadioParam.newBuilder("enableSmtpAuth", "smtp.auth")
|
||||
.addParamsOptions(new ParamsOptions("YES", true, false))
|
||||
.addParamsOptions(new ParamsOptions("NO", false, false))
|
||||
.addParamsOptions(new ParamsOptions("YES", "true", false))
|
||||
.addParamsOptions(new ParamsOptions("NO", "false", false))
|
||||
.addValidate(Validate.newBuilder().setRequired(true).build())
|
||||
.setValue(false)
|
||||
.setValue("false")
|
||||
.build();
|
||||
|
||||
InputParam mailUser = InputParam.newBuilder("user", "user")
|
||||
|
|
@ -119,17 +118,17 @@ public class EmailAlertChannelTest {
|
|||
.build();
|
||||
|
||||
RadioParam enableTls = RadioParam.newBuilder("starttlsEnable", "starttls.enable")
|
||||
.addParamsOptions(new ParamsOptions("YES", true, false))
|
||||
.addParamsOptions(new ParamsOptions("NO", false, false))
|
||||
.addParamsOptions(new ParamsOptions("YES", "true", false))
|
||||
.addParamsOptions(new ParamsOptions("NO", "false", false))
|
||||
.addValidate(Validate.newBuilder().setRequired(true).build())
|
||||
.setValue(true)
|
||||
.setValue("true")
|
||||
.build();
|
||||
|
||||
RadioParam enableSsl = RadioParam.newBuilder("sslEnable", "smtp.ssl.enable")
|
||||
.addParamsOptions(new ParamsOptions("YES", true, false))
|
||||
.addParamsOptions(new ParamsOptions("NO", false, false))
|
||||
.addParamsOptions(new ParamsOptions("YES", "true", false))
|
||||
.addParamsOptions(new ParamsOptions("NO", "false", false))
|
||||
.addValidate(Validate.newBuilder().setRequired(true).build())
|
||||
.setValue(true)
|
||||
.setValue("true")
|
||||
.build();
|
||||
|
||||
InputParam sslTrust = InputParam.newBuilder("smtpSslTrust", "smtp.ssl.trust")
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<parent>
|
||||
<artifactId>dolphinscheduler-alert-plugin</artifactId>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,11 @@
|
|||
|
||||
package org.apache.dolphinscheduler.plugin.alert.feishu;
|
||||
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_FALSE;
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_NO;
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_TRUE;
|
||||
import static org.apache.dolphinscheduler.spi.utils.Constants.STRING_YES;
|
||||
|
||||
import org.apache.dolphinscheduler.spi.alert.AlertChannel;
|
||||
import org.apache.dolphinscheduler.spi.alert.AlertChannelFactory;
|
||||
import org.apache.dolphinscheduler.spi.params.InputParam;
|
||||
|
|
@ -44,9 +49,9 @@ public class FeiShuAlertChannelFactory implements AlertChannelFactory {
|
|||
.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)
|
||||
.addParamsOptions(new ParamsOptions(STRING_YES, STRING_TRUE, false))
|
||||
.addParamsOptions(new ParamsOptions(STRING_NO, STRING_FALSE, false))
|
||||
.setValue(STRING_TRUE)
|
||||
.addValidate(Validate.newBuilder()
|
||||
.setRequired(false)
|
||||
.build())
|
||||
|
|
|
|||
|
|
@ -23,9 +23,7 @@ import org.apache.dolphinscheduler.spi.utils.JSONUtils;
|
|||
|
||||
import org.apache.commons.codec.binary.StringUtils;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpHost;
|
||||
import org.apache.http.HttpStatus;
|
||||
import org.apache.http.client.config.RequestConfig;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
|
|
@ -71,11 +69,6 @@ public class FeiShuSender {
|
|||
|
||||
}
|
||||
|
||||
private static RequestConfig getProxyConfig(String proxy, int port) {
|
||||
HttpHost httpProxy = new HttpHost(proxy, port);
|
||||
return RequestConfig.custom().setProxy(httpProxy).build();
|
||||
}
|
||||
|
||||
private static String textToJsonString(AlertData alertData) {
|
||||
|
||||
Map<String, Object> items = new HashMap<>(2);
|
||||
|
|
@ -88,7 +81,7 @@ public class FeiShuSender {
|
|||
return JSONUtils.toJsonString(items);
|
||||
}
|
||||
|
||||
private static AlertResult checkSendFeiShuSendMsgResult(String result) {
|
||||
public static AlertResult checkSendFeiShuSendMsgResult(String result) {
|
||||
AlertResult alertResult = new AlertResult();
|
||||
alertResult.setStatus("false");
|
||||
|
||||
|
|
@ -116,12 +109,10 @@ public class FeiShuSender {
|
|||
|
||||
public static String formatContent(AlertData alertData) {
|
||||
if (alertData.getContent() != null) {
|
||||
List<Map> list;
|
||||
try {
|
||||
list = JSONUtils.toList(alertData.getContent(), Map.class);
|
||||
} catch (Exception e) {
|
||||
logger.error("json format exception", e);
|
||||
return null;
|
||||
|
||||
List<Map> list = JSONUtils.toList(alertData.getContent(), Map.class);
|
||||
if (list.isEmpty()) {
|
||||
return alertData.getTitle() + alertData.getContent();
|
||||
}
|
||||
|
||||
StringBuilder contents = new StringBuilder(100);
|
||||
|
|
@ -170,7 +161,7 @@ public class FeiShuSender {
|
|||
|
||||
int statusCode = response.getStatusLine().getStatusCode();
|
||||
if (statusCode != HttpStatus.SC_OK) {
|
||||
logger.error("send feishu message error, return http status code: " + statusCode);
|
||||
logger.error("send feishu message error, return http status code: {} ", statusCode);
|
||||
}
|
||||
String resp;
|
||||
try {
|
||||
|
|
@ -180,7 +171,7 @@ public class FeiShuSender {
|
|||
} finally {
|
||||
response.close();
|
||||
}
|
||||
logger.info("Ding Talk send title :{} ,content :{}, resp: {}", alertData.getTitle(), alertData.getContent(), resp);
|
||||
logger.info("Fei Shu send title :{} ,content :{}, resp: {}", alertData.getTitle(), alertData.getContent(), resp);
|
||||
return resp;
|
||||
} finally {
|
||||
httpClient.close();
|
||||
|
|
|
|||
|
|
@ -72,4 +72,28 @@ public class FeiShuSenderTest {
|
|||
alertData.setContent(alertMsg);
|
||||
Assert.assertNotNull(FeiShuSender.formatContent(alertData));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendWithFormatException() {
|
||||
AlertData alertData = new AlertData();
|
||||
alertData.setTitle("feishu test title");
|
||||
alertData.setContent("feishu test content");
|
||||
FeiShuSender feiShuSender = new FeiShuSender(feiShuConfig);
|
||||
String alertResult = feiShuSender.formatContent(alertData);
|
||||
Assert.assertEquals(alertResult, alertData.getTitle() + alertData.getContent());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCheckSendFeiShuSendMsgResult() {
|
||||
|
||||
FeiShuSender feiShuSender = new FeiShuSender(feiShuConfig);
|
||||
AlertResult alertResult = feiShuSender.checkSendFeiShuSendMsgResult("");
|
||||
Assert.assertFalse(Boolean.valueOf(alertResult.getStatus()));
|
||||
AlertResult alertResult2 = feiShuSender.checkSendFeiShuSendMsgResult("123");
|
||||
Assert.assertEquals("send fei shu msg fail",alertResult2.getMessage());
|
||||
|
||||
String response = "{\"StatusCode\":\"0\",\"extra\":\"extra\",\"StatusMessage\":\"StatusMessage\"}";
|
||||
AlertResult alertResult3 = feiShuSender.checkSendFeiShuSendMsgResult(response);
|
||||
Assert.assertTrue(Boolean.valueOf(alertResult3.getStatus()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<parent>
|
||||
<artifactId>dolphinscheduler-alert-plugin</artifactId>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<parent>
|
||||
<artifactId>dolphinscheduler-alert-plugin</artifactId>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ public class ScriptAlertChannel implements AlertChannel {
|
|||
AlertData alertData = alertinfo.getAlertData();
|
||||
Map<String, String> paramsMap = alertinfo.getAlertParams();
|
||||
if (null == paramsMap) {
|
||||
return new AlertResult("false", "ding talk params is null");
|
||||
return new AlertResult("false", "script params is null");
|
||||
}
|
||||
return new ScriptSender(paramsMap).sendScriptAlert(alertData.getTitle());
|
||||
return new ScriptSender(paramsMap).sendScriptAlert(alertData.getTitle(),alertData.getContent());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ public class ScriptAlertChannelFactory implements AlertChannelFactory {
|
|||
.build();
|
||||
|
||||
RadioParam scriptTypeParams = RadioParam.newBuilder(ScriptParamsConstants.NAME_SCRIPT_TYPE, ScriptParamsConstants.SCRIPT_TYPE)
|
||||
.addParamsOptions(new ParamsOptions(ScriptType.SHELL.getDescp(), ScriptType.SHELL.getCode(), false))
|
||||
.setValue(ScriptType.SHELL.getCode())
|
||||
.addParamsOptions(new ParamsOptions(ScriptType.SHELL.getDescp(), ScriptType.SHELL.getDescp(), false))
|
||||
.setValue(ScriptType.SHELL.getDescp())
|
||||
.addValidate(Validate.newBuilder().setRequired(true).build())
|
||||
.build();
|
||||
|
||||
|
|
|
|||
|
|
@ -33,32 +33,38 @@ public class ScriptSender {
|
|||
|
||||
private String scriptPath;
|
||||
|
||||
private Integer scriptType;
|
||||
private String scriptType;
|
||||
|
||||
private String userParams;
|
||||
|
||||
private static final String ALERT_TITLE_OPTION = " -t ";
|
||||
|
||||
private static final String ALERT_CONTENT_OPTION = " -c ";
|
||||
|
||||
private static final String ALERT_USER_PARAMS_OPTION = " -p ";
|
||||
|
||||
ScriptSender(Map<String, String> config) {
|
||||
scriptPath = config.get(ScriptParamsConstants.NAME_SCRIPT_PATH);
|
||||
scriptType = Integer.parseInt(config.get(ScriptParamsConstants.NAME_SCRIPT_TYPE));
|
||||
scriptType = config.get(ScriptParamsConstants.NAME_SCRIPT_TYPE);
|
||||
userParams = config.get(ScriptParamsConstants.NAME_SCRIPT_USER_PARAMS);
|
||||
}
|
||||
|
||||
AlertResult sendScriptAlert(String msg) {
|
||||
AlertResult sendScriptAlert(String title, String content) {
|
||||
AlertResult alertResult = new AlertResult();
|
||||
if (ScriptType.of(scriptType).equals(ScriptType.SHELL)) {
|
||||
return executeShellScript(msg);
|
||||
if (ScriptType.SHELL.getDescp().equals(scriptType)) {
|
||||
return executeShellScript(title, content);
|
||||
}
|
||||
return alertResult;
|
||||
}
|
||||
|
||||
private AlertResult executeShellScript(String msg) {
|
||||
private AlertResult executeShellScript(String title, String content) {
|
||||
AlertResult alertResult = new AlertResult();
|
||||
alertResult.setStatus("false");
|
||||
if (Boolean.TRUE.equals(OSUtils.isWindows())) {
|
||||
alertResult.setMessage("shell script not support windows os");
|
||||
return alertResult;
|
||||
}
|
||||
String[] cmd = {"/bin/sh", "-c", scriptPath + " " + msg + " " + userParams};
|
||||
String[] cmd = {"/bin/sh", "-c", scriptPath + ALERT_TITLE_OPTION + "'" + title + "'" + ALERT_CONTENT_OPTION + "'" + content + "'" + ALERT_USER_PARAMS_OPTION + "'" + userParams + "'"};
|
||||
int exitCode = ProcessUtils.executeScript(cmd);
|
||||
|
||||
if (exitCode == 0) {
|
||||
|
|
|
|||
|
|
@ -45,18 +45,4 @@ public enum ScriptType {
|
|||
return descp;
|
||||
}
|
||||
|
||||
private static final Map<Integer, ScriptType> SCRIPT_TYPE_MAP = new HashMap<>();
|
||||
|
||||
static {
|
||||
for (ScriptType scriptType : ScriptType.values()) {
|
||||
SCRIPT_TYPE_MAP.put(scriptType.code, scriptType);
|
||||
}
|
||||
}
|
||||
|
||||
public static ScriptType of(Integer code) {
|
||||
if (SCRIPT_TYPE_MAP.containsKey(code)) {
|
||||
return SCRIPT_TYPE_MAP.get(code);
|
||||
}
|
||||
throw new IllegalArgumentException("invalid code : " + code);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,13 @@ public class StreamGobbler extends Thread {
|
|||
}
|
||||
} catch (IOException e) {
|
||||
logger.error("I/O error occurs {}", e.getMessage());
|
||||
} finally {
|
||||
try {
|
||||
inputBufferReader.close();
|
||||
inputStreamReader.close();
|
||||
} catch (IOException e) {
|
||||
logger.error("I/O error occurs {}", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@ public class ProcessUtilsTest {
|
|||
|
||||
private static final String rootPath = System.getProperty("user.dir");
|
||||
|
||||
private static final String shellFilPath = rootPath + "/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/test/script/shell/example.sh";
|
||||
private static final String shellFilPath = rootPath + "/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/test/script/shell/test.sh";
|
||||
|
||||
private String[] cmd = {"/bin/sh", "-c", shellFilPath + " " + "testMsg" + " " + "userParams"};
|
||||
private String[] cmd = {"/bin/sh", "-c", shellFilPath + " -t 1"};
|
||||
|
||||
@Test
|
||||
public void testExecuteScript() {
|
||||
|
|
|
|||
|
|
@ -35,12 +35,12 @@ public class ScriptSenderTest {
|
|||
|
||||
private static final String rootPath = System.getProperty("user.dir");
|
||||
|
||||
private static final String shellFilPath = rootPath + "/src/test/script/shell/scriptTest.sh";
|
||||
private static final String shellFilPath = rootPath + "/src/test/script/shell/scriptExample.sh";
|
||||
|
||||
@Before
|
||||
public void initScriptConfig() {
|
||||
|
||||
scriptConfig.put(ScriptParamsConstants.NAME_SCRIPT_TYPE, String.valueOf(ScriptType.SHELL.getCode()));
|
||||
scriptConfig.put(ScriptParamsConstants.NAME_SCRIPT_TYPE, String.valueOf(ScriptType.SHELL.getDescp()));
|
||||
scriptConfig.put(ScriptParamsConstants.NAME_SCRIPT_USER_PARAMS, "userParams");
|
||||
scriptConfig.put(ScriptParamsConstants.NAME_SCRIPT_PATH, shellFilPath);
|
||||
}
|
||||
|
|
@ -49,9 +49,9 @@ public class ScriptSenderTest {
|
|||
public void testScriptSenderTest() {
|
||||
ScriptSender scriptSender = new ScriptSender(scriptConfig);
|
||||
AlertResult alertResult;
|
||||
alertResult = scriptSender.sendScriptAlert("success");
|
||||
alertResult = scriptSender.sendScriptAlert("test title Kris", "test content");
|
||||
Assert.assertEquals("true", alertResult.getStatus());
|
||||
alertResult = scriptSender.sendScriptAlert("errorMsg");
|
||||
alertResult = scriptSender.sendScriptAlert("error msg title", "test content");
|
||||
Assert.assertEquals("false", alertResult.getStatus());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
|
|
@ -15,11 +16,24 @@
|
|||
# limitations under the License.
|
||||
#
|
||||
|
||||
while getopts t:c:p: opts; do
|
||||
case $opts in
|
||||
t) t=$OPTARG ;;
|
||||
c) c=$OPTARG ;;
|
||||
p) p=$OPTARG ;;
|
||||
?) ;;
|
||||
esac
|
||||
done
|
||||
|
||||
msg=$1
|
||||
content=$2
|
||||
|
||||
# Write your specific logic here
|
||||
|
||||
# Set the exit code according to your execution result, and alert needs to use it to judge the status of this alarm result
|
||||
|
||||
|
||||
if [ "$t" = "error msg title" ]
|
||||
then
|
||||
exit 12
|
||||
fi
|
||||
exit 0
|
||||
exit 0
|
||||
|
|
@ -15,11 +15,13 @@
|
|||
# limitations under the License.
|
||||
#
|
||||
|
||||
msg=$1
|
||||
content=$2
|
||||
while getopts t: opts; do
|
||||
case $opts in
|
||||
t) t=$OPTARG ;;
|
||||
?) ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $msg = errorMsg ]
|
||||
then
|
||||
exit 12
|
||||
fi
|
||||
exit 0
|
||||
echo "$t"
|
||||
|
||||
exit 0
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
<parent>
|
||||
<artifactId>dolphinscheduler-alert-plugin</artifactId>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<parent>
|
||||
<artifactId>dolphinscheduler</artifactId>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<artifactId>dolphinscheduler</artifactId>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<artifactId>dolphinscheduler-alert</artifactId>
|
||||
<name>${project.artifactId}</name>
|
||||
|
|
@ -31,10 +31,6 @@
|
|||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<artifactId>dolphinscheduler-spi</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<artifactId>dolphinscheduler-remote</artifactId>
|
||||
|
|
@ -91,24 +87,6 @@
|
|||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.sonatype.aether</groupId>
|
||||
<artifactId>aether-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.airlift.resolver</groupId>
|
||||
<artifactId>resolver</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.ow2.asm</groupId>
|
||||
<artifactId>asm</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.powermock</groupId>
|
||||
<artifactId>powermock-module-junit4</artifactId>
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@ package org.apache.dolphinscheduler.alert;
|
|||
import static org.apache.dolphinscheduler.common.Constants.ALERT_RPC_PORT;
|
||||
|
||||
import org.apache.dolphinscheduler.alert.plugin.AlertPluginManager;
|
||||
import org.apache.dolphinscheduler.alert.plugin.DolphinPluginLoader;
|
||||
import org.apache.dolphinscheduler.alert.plugin.DolphinPluginManagerConfig;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginLoader;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginManagerConfig;
|
||||
import org.apache.dolphinscheduler.alert.processor.AlertRequestProcessor;
|
||||
import org.apache.dolphinscheduler.alert.runner.AlertSender;
|
||||
import org.apache.dolphinscheduler.alert.utils.Constants;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,9 @@ import static java.util.Objects.requireNonNull;
|
|||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import org.apache.dolphinscheduler.common.enums.PluginType;
|
||||
import org.apache.dolphinscheduler.common.plugin.AbstractDolphinPluginManager;
|
||||
import org.apache.dolphinscheduler.dao.DaoFactory;
|
||||
import org.apache.dolphinscheduler.dao.PluginDao;
|
||||
import org.apache.dolphinscheduler.dao.entity.PluginDefine;
|
||||
import org.apache.dolphinscheduler.spi.DolphinSchedulerPlugin;
|
||||
import org.apache.dolphinscheduler.spi.alert.AlertChannel;
|
||||
|
|
@ -53,21 +56,23 @@ public class AlertPluginManager extends AbstractDolphinPluginManager {
|
|||
*/
|
||||
private final Map<Integer, String> pluginDefineMap = new HashMap<>();
|
||||
|
||||
public void addAlertChannelFactory(AlertChannelFactory alertChannelFactory) {
|
||||
private PluginDao pluginDao = DaoFactory.getDaoInstance(PluginDao.class);
|
||||
|
||||
private void addAlertChannelFactory(AlertChannelFactory alertChannelFactory) {
|
||||
requireNonNull(alertChannelFactory, "alertChannelFactory is null");
|
||||
|
||||
if (alertChannelFactoryMap.putIfAbsent(alertChannelFactory.getName(), alertChannelFactory) != null) {
|
||||
throw new IllegalArgumentException(format("Alert Plugin '{}' is already registered", alertChannelFactory.getName()));
|
||||
throw new IllegalArgumentException(format("Alert Plugin '%s' is already registered", alertChannelFactory.getName()));
|
||||
}
|
||||
|
||||
try {
|
||||
loadAlertChannel(alertChannelFactory.getName());
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException(format("Alert Plugin '{}' is can not load .", alertChannelFactory.getName()));
|
||||
throw new IllegalArgumentException(format("Alert Plugin '%s' is can not load .", alertChannelFactory.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
protected void loadAlertChannel(String name) {
|
||||
private void loadAlertChannel(String name) {
|
||||
requireNonNull(name, "name is null");
|
||||
|
||||
AlertChannelFactory alertChannelFactory = alertChannelFactoryMap.get(name);
|
||||
|
|
@ -81,7 +86,7 @@ public class AlertPluginManager extends AbstractDolphinPluginManager {
|
|||
logger.info("-- Loaded Alert Plugin {} --", name);
|
||||
}
|
||||
|
||||
public Map<String, AlertChannelFactory> getAlertChannelFactoryMap() {
|
||||
Map<String, AlertChannelFactory> getAlertChannelFactoryMap() {
|
||||
return alertChannelFactoryMap;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,12 +21,10 @@
|
|||
#eg : Alert Server Listener port
|
||||
|
||||
#alert.plugin.dir config the Alert Plugin dir . AlertServer while find and load the Alert Plugin Jar from this dir when deploy and start AlertServer on the server .
|
||||
#eg :alert.plugin.dir=/opt/soft/spi/lib/plugin/alert
|
||||
#alert.plugin.dir=./lib/plugin/alert
|
||||
|
||||
#maven.local.repository=/Users/gaojun/Documents/jianguoyun/localRepository
|
||||
|
||||
#alert.plugin.binding config the Alert Plugin need be load when development and run in IDE
|
||||
#alert.plugin.binding=\
|
||||
# ./dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/pom.xml
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@
|
|||
package org.apache.dolphinscheduler.alert;
|
||||
|
||||
import org.apache.dolphinscheduler.alert.plugin.AlertPluginManager;
|
||||
import org.apache.dolphinscheduler.alert.plugin.DolphinPluginLoader;
|
||||
import org.apache.dolphinscheduler.alert.plugin.DolphinPluginManagerConfig;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginLoader;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginManagerConfig;
|
||||
import org.apache.dolphinscheduler.alert.runner.AlertSender;
|
||||
import org.apache.dolphinscheduler.alert.utils.Constants;
|
||||
import org.apache.dolphinscheduler.dao.AlertDao;
|
||||
|
|
|
|||
|
|
@ -20,10 +20,13 @@ package org.apache.dolphinscheduler.alert.plugin;
|
|||
import org.apache.dolphinscheduler.alert.AlertServer;
|
||||
import org.apache.dolphinscheduler.alert.utils.Constants;
|
||||
import org.apache.dolphinscheduler.alert.utils.PropertyUtils;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginLoader;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginManagerConfig;
|
||||
import org.apache.dolphinscheduler.spi.utils.StringUtils;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -33,24 +36,23 @@ import com.google.common.collect.ImmutableList;
|
|||
/**
|
||||
* AlertPluginManager Tester.
|
||||
*/
|
||||
@Ignore
|
||||
public class AlertPluginManagerTest {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(AlertPluginManagerTest.class);
|
||||
|
||||
@Test
|
||||
public void testLoadPlugins() throws Exception {
|
||||
public void testLoadPlugins() {
|
||||
logger.info("begin test AlertPluginManagerTest");
|
||||
AlertPluginManager alertPluginManager = new AlertPluginManager();
|
||||
DolphinPluginManagerConfig alertPluginManagerConfig = new DolphinPluginManagerConfig();
|
||||
String path = DolphinPluginLoader.class.getClassLoader().getResource("").getPath();
|
||||
String path = Objects.requireNonNull(DolphinPluginLoader.class.getClassLoader().getResource("")).getPath();
|
||||
alertPluginManagerConfig.setPlugins(path + "../../../dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/pom.xml");
|
||||
if (StringUtils.isNotBlank(PropertyUtils.getString(AlertServer.ALERT_PLUGIN_DIR))) {
|
||||
alertPluginManagerConfig.setInstalledPluginsDir(org.apache.dolphinscheduler.alert.utils.PropertyUtils.getString(AlertServer.ALERT_PLUGIN_DIR, Constants.ALERT_PLUGIN_PATH).trim());
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(PropertyUtils.getString(AlertServer.MAVEN_LOCAL_REPOSITORY))) {
|
||||
alertPluginManagerConfig.setMavenLocalRepository(PropertyUtils.getString(AlertServer.MAVEN_LOCAL_REPOSITORY).trim());
|
||||
alertPluginManagerConfig.setMavenLocalRepository(Objects.requireNonNull(PropertyUtils.getString(AlertServer.MAVEN_LOCAL_REPOSITORY)).trim());
|
||||
}
|
||||
|
||||
DolphinPluginLoader alertPluginLoader = new DolphinPluginLoader(alertPluginManagerConfig, ImmutableList.of(alertPluginManager));
|
||||
|
|
@ -60,6 +62,6 @@ public class AlertPluginManagerTest {
|
|||
throw new RuntimeException("load Alert Plugin Failed !", e);
|
||||
}
|
||||
|
||||
Assert.assertNotNull(alertPluginManager.getAlertChannelFactoryMap().get("email alert"));
|
||||
Assert.assertNotNull(alertPluginManager.getAlertChannelFactoryMap().get("Email"));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,10 +17,12 @@
|
|||
|
||||
package org.apache.dolphinscheduler.alert.plugin;
|
||||
|
||||
import org.junit.After;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginLoader;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginManagerConfig;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
|
@ -28,25 +30,16 @@ import com.google.common.collect.ImmutableList;
|
|||
/**
|
||||
* DolphinPluginLoader Tester.
|
||||
*/
|
||||
@Ignore
|
||||
public class DolphinPluginLoaderTest {
|
||||
|
||||
@Before
|
||||
public void before() throws Exception {
|
||||
}
|
||||
|
||||
@After
|
||||
public void after() throws Exception {
|
||||
}
|
||||
|
||||
/**
|
||||
* Method: loadPlugins()
|
||||
*/
|
||||
@Test
|
||||
public void testLoadPlugins() throws Exception {
|
||||
public void testLoadPlugins() {
|
||||
AlertPluginManager alertPluginManager = new AlertPluginManager();
|
||||
DolphinPluginManagerConfig alertPluginManagerConfig = new DolphinPluginManagerConfig();
|
||||
String path = DolphinPluginLoader.class.getClassLoader().getResource("").getPath();
|
||||
String path = Objects.requireNonNull(DolphinPluginLoader.class.getClassLoader().getResource("")).getPath();
|
||||
alertPluginManagerConfig.setPlugins(path + "../../../dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/pom.xml");
|
||||
DolphinPluginLoader alertPluginLoader = new DolphinPluginLoader(alertPluginManagerConfig, ImmutableList.of(alertPluginManager));
|
||||
try {
|
||||
|
|
@ -55,6 +48,6 @@ public class DolphinPluginLoaderTest {
|
|||
throw new RuntimeException("load Alert Plugin Failed !", e);
|
||||
}
|
||||
|
||||
Assert.assertNotNull(alertPluginManager.getAlertChannelFactoryMap().get("email alert"));
|
||||
Assert.assertNotNull(alertPluginManager.getAlertChannelFactoryMap().get("Email"));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ import org.apache.dolphinscheduler.alert.runner.AlertSender;
|
|||
import org.apache.dolphinscheduler.alert.utils.Constants;
|
||||
import org.apache.dolphinscheduler.alert.utils.PropertyUtils;
|
||||
import org.apache.dolphinscheduler.common.enums.AlertStatus;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginLoader;
|
||||
import org.apache.dolphinscheduler.common.plugin.DolphinPluginManagerConfig;
|
||||
import org.apache.dolphinscheduler.common.utils.JSONUtils;
|
||||
import org.apache.dolphinscheduler.dao.AlertDao;
|
||||
import org.apache.dolphinscheduler.dao.DaoFactory;
|
||||
|
|
@ -48,7 +50,6 @@ import java.util.LinkedHashMap;
|
|||
import java.util.List;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
|
@ -58,12 +59,11 @@ import com.google.common.collect.ImmutableList;
|
|||
*/
|
||||
public class EmailAlertPluginTest {
|
||||
|
||||
AlertDao alertDao = DaoFactory.getDaoInstance(AlertDao.class);
|
||||
PluginDao pluginDao = DaoFactory.getDaoInstance(PluginDao.class);
|
||||
private AlertDao alertDao = DaoFactory.getDaoInstance(AlertDao.class);
|
||||
private PluginDao pluginDao = DaoFactory.getDaoInstance(PluginDao.class);
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testRunSend() throws Exception {
|
||||
public void testRunSend() {
|
||||
|
||||
//create alert group
|
||||
AlertGroup alertGroup = new AlertGroup();
|
||||
|
|
@ -127,7 +127,7 @@ public class EmailAlertPluginTest {
|
|||
alertPluginInstance.setCreateTime(new Date());
|
||||
alertPluginInstance.setInstanceName("test email alert");
|
||||
|
||||
List<PluginDefine> pluginDefineList = pluginDao.getPluginDefineMapper().queryByNameAndType("email alert", "alert");
|
||||
List<PluginDefine> pluginDefineList = pluginDao.getPluginDefineMapper().queryByNameAndType("Email", "alert");
|
||||
if (pluginDefineList == null || pluginDefineList.size() == 0) {
|
||||
throw new RuntimeException("no alert plugin be load");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.dolphinscheduler</groupId>
|
||||
<artifactId>dolphinscheduler</artifactId>
|
||||
<version>1.3.4-SNAPSHOT</version>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<artifactId>dolphinscheduler-api</artifactId>
|
||||
<name>${project.artifactId}</name>
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.dolphinscheduler.api.controller;
|
||||
|
||||
package org.apache.dolphinscheduler.api.controller;
|
||||
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.CREATE_ACCESS_TOKEN_ERROR;
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.DELETE_ACCESS_TOKEN_ERROR;
|
||||
|
|
@ -54,7 +54,7 @@ import springfox.documentation.annotations.ApiIgnore;
|
|||
/**
|
||||
* access token controller
|
||||
*/
|
||||
@Api(tags = "ACCESS_TOKEN_TAG", position = 1)
|
||||
@Api(tags = "ACCESS_TOKEN_TAG")
|
||||
@RestController
|
||||
@RequestMapping("/access-token")
|
||||
public class AccessTokenController extends BaseController {
|
||||
|
|
|
|||
|
|
@ -26,13 +26,12 @@ import static org.apache.dolphinscheduler.api.enums.Status.UPDATE_ALERT_GROUP_ER
|
|||
import org.apache.dolphinscheduler.api.enums.Status;
|
||||
import org.apache.dolphinscheduler.api.exceptions.ApiException;
|
||||
import org.apache.dolphinscheduler.api.service.AlertGroupService;
|
||||
import org.apache.dolphinscheduler.api.utils.RegexUtils;
|
||||
import org.apache.dolphinscheduler.api.utils.Result;
|
||||
import org.apache.dolphinscheduler.common.Constants;
|
||||
import org.apache.dolphinscheduler.common.utils.ParameterUtils;
|
||||
import org.apache.dolphinscheduler.common.utils.StringUtils;
|
||||
import org.apache.dolphinscheduler.dao.entity.User;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -56,7 +55,7 @@ import springfox.documentation.annotations.ApiIgnore;
|
|||
/**
|
||||
* alert group controller
|
||||
*/
|
||||
@Api(tags = "ALERT_GROUP_TAG", position = 1)
|
||||
@Api(tags = "ALERT_GROUP_TAG")
|
||||
@RestController
|
||||
@RequestMapping("alert-group")
|
||||
public class AlertGroupController extends BaseController {
|
||||
|
|
@ -88,12 +87,9 @@ public class AlertGroupController extends BaseController {
|
|||
@RequestParam(value = "groupName") String groupName,
|
||||
@RequestParam(value = "description", required = false) String description,
|
||||
@RequestParam(value = "alertInstanceIds") String alertInstanceIds) {
|
||||
String strUserName = StringUtils.replaceNRTtoUnderline(loginUser.getUserName());
|
||||
String strGroupName = StringUtils.replaceNRTtoUnderline(groupName);
|
||||
String strDescription = StringUtils.replaceNRTtoUnderline(description);
|
||||
String strAlertInstanceIds = StringUtils.replaceNRTtoUnderline(alertInstanceIds);
|
||||
logger.info("loginUser user {}, create alert group, groupName: {}, desc: {},alertInstanceIds:{}",
|
||||
strUserName, strGroupName, strDescription, strAlertInstanceIds);
|
||||
RegexUtils.escapeNRT(loginUser.getUserName()), RegexUtils.escapeNRT(groupName),
|
||||
RegexUtils.escapeNRT(description), RegexUtils.escapeNRT(alertInstanceIds));
|
||||
Map<String, Object> result = alertGroupService.createAlertgroup(loginUser, groupName, description, alertInstanceIds);
|
||||
return returnDataList(result);
|
||||
}
|
||||
|
|
@ -111,7 +107,7 @@ public class AlertGroupController extends BaseController {
|
|||
public Result list(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
|
||||
logger.info("login user {}, query all alertGroup",
|
||||
loginUser.getUserName());
|
||||
HashMap<String, Object> result = alertGroupService.queryAlertgroup();
|
||||
Map<String, Object> result = alertGroupService.queryAlertgroup();
|
||||
return returnDataList(result);
|
||||
}
|
||||
|
||||
|
|
@ -174,9 +170,9 @@ public class AlertGroupController extends BaseController {
|
|||
@RequestParam(value = "description", required = false) String description,
|
||||
@RequestParam(value = "alertInstanceIds") String alertInstanceIds) {
|
||||
logger.info("login user {}, updateProcessInstance alert group, groupName: {}, desc: {}",
|
||||
StringUtils.replaceNRTtoUnderline(loginUser.getUserName()),
|
||||
StringUtils.replaceNRTtoUnderline(groupName),
|
||||
StringUtils.replaceNRTtoUnderline(description));
|
||||
RegexUtils.escapeNRT(loginUser.getUserName()),
|
||||
RegexUtils.escapeNRT(groupName),
|
||||
RegexUtils.escapeNRT(description));
|
||||
Map<String, Object> result = alertGroupService.updateAlertgroup(loginUser, id, groupName, description, alertInstanceIds);
|
||||
return returnDataList(result);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ import static org.apache.dolphinscheduler.api.enums.Status.UPDATE_ALERT_PLUGIN_I
|
|||
import org.apache.dolphinscheduler.api.enums.Status;
|
||||
import org.apache.dolphinscheduler.api.exceptions.ApiException;
|
||||
import org.apache.dolphinscheduler.api.service.AlertPluginInstanceService;
|
||||
import org.apache.dolphinscheduler.api.utils.RegexUtils;
|
||||
import org.apache.dolphinscheduler.api.utils.Result;
|
||||
import org.apache.dolphinscheduler.common.Constants;
|
||||
import org.apache.dolphinscheduler.common.utils.StringUtils;
|
||||
import org.apache.dolphinscheduler.dao.entity.User;
|
||||
|
||||
import java.util.Map;
|
||||
|
|
@ -55,7 +55,7 @@ import springfox.documentation.annotations.ApiIgnore;
|
|||
/**
|
||||
* alert plugin instance controller
|
||||
*/
|
||||
@Api(tags = "ALERT_PLUGIN_INSTANCE_TAG", position = 1)
|
||||
@Api(tags = "ALERT_PLUGIN_INSTANCE_TAG")
|
||||
@RestController
|
||||
@RequestMapping("alert-plugin-instance")
|
||||
public class AlertPluginInstanceController extends BaseController {
|
||||
|
|
@ -89,8 +89,8 @@ public class AlertPluginInstanceController extends BaseController {
|
|||
@RequestParam(value = "instanceName") String instanceName,
|
||||
@RequestParam(value = "pluginInstanceParams") String pluginInstanceParams) {
|
||||
logger.info("login user {},create alert plugin instance, instanceName:{} ",
|
||||
StringUtils.replaceNRTtoUnderline(loginUser.getUserName()),
|
||||
StringUtils.replaceNRTtoUnderline(instanceName));
|
||||
RegexUtils.escapeNRT(loginUser.getUserName()),
|
||||
RegexUtils.escapeNRT(instanceName));
|
||||
Map<String, Object> result = alertPluginInstanceService.create(loginUser, pluginDefineId, instanceName, pluginInstanceParams);
|
||||
return returnDataList(result);
|
||||
}
|
||||
|
|
@ -117,7 +117,7 @@ public class AlertPluginInstanceController extends BaseController {
|
|||
@RequestParam(value = "alertPluginInstanceId") int alertPluginInstanceId,
|
||||
@RequestParam(value = "instanceName") String instanceName,
|
||||
@RequestParam(value = "pluginInstanceParams") String pluginInstanceParams) {
|
||||
logger.info("login user {},update alert plugin instance id {}", StringUtils.replaceNRTtoUnderline(loginUser.getUserName()), alertPluginInstanceId);
|
||||
logger.info("login user {},update alert plugin instance id {}", RegexUtils.escapeNRT(loginUser.getUserName()), alertPluginInstanceId);
|
||||
Map<String, Object> result = alertPluginInstanceService.update(loginUser, alertPluginInstanceId, instanceName, pluginInstanceParams);
|
||||
return returnDataList(result);
|
||||
}
|
||||
|
|
@ -138,7 +138,7 @@ public class AlertPluginInstanceController extends BaseController {
|
|||
@ApiException(DELETE_ALERT_PLUGIN_INSTANCE_ERROR)
|
||||
public Result deleteAlertPluginInstance(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
|
||||
@RequestParam(value = "id") int id) {
|
||||
logger.info("login user {},delete alert plugin instance id {}", StringUtils.replaceNRTtoUnderline(loginUser.getUserName()), id);
|
||||
logger.info("login user {},delete alert plugin instance id {}", RegexUtils.escapeNRT(loginUser.getUserName()), id);
|
||||
|
||||
Map<String, Object> result = alertPluginInstanceService.delete(loginUser, id);
|
||||
return returnDataList(result);
|
||||
|
|
@ -157,7 +157,7 @@ public class AlertPluginInstanceController extends BaseController {
|
|||
@ApiException(GET_ALERT_PLUGIN_INSTANCE_ERROR)
|
||||
public Result getAlertPluginInstance(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
|
||||
@RequestParam(value = "id") int id) {
|
||||
logger.info("login user {},get alert plugin instance, id {}", StringUtils.replaceNRTtoUnderline(loginUser.getUserName()), id);
|
||||
logger.info("login user {},get alert plugin instance, id {}", RegexUtils.escapeNRT(loginUser.getUserName()), id);
|
||||
Map<String, Object> result = alertPluginInstanceService.get(loginUser, id);
|
||||
return returnDataList(result);
|
||||
}
|
||||
|
|
@ -173,7 +173,7 @@ public class AlertPluginInstanceController extends BaseController {
|
|||
@ResponseStatus(HttpStatus.OK)
|
||||
@ApiException(QUERY_ALL_ALERT_PLUGIN_INSTANCE_ERROR)
|
||||
public Result getAlertPluginInstance(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
|
||||
logger.info("login user {}, query all alert plugin instance", StringUtils.replaceNRTtoUnderline(loginUser.getUserName()));
|
||||
logger.info("login user {}, query all alert plugin instance", RegexUtils.escapeNRT(loginUser.getUserName()));
|
||||
Map<String, Object> result = alertPluginInstanceService.queryAll();
|
||||
return returnDataList(result);
|
||||
}
|
||||
|
|
@ -193,7 +193,7 @@ public class AlertPluginInstanceController extends BaseController {
|
|||
@ResponseStatus(HttpStatus.OK)
|
||||
public Result verifyGroupName(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
|
||||
@RequestParam(value = "alertInstanceName") String alertInstanceName) {
|
||||
logger.info("login user {},verify alert instance name: {}", StringUtils.replaceNRTtoUnderline(loginUser.getUserName()), StringUtils.replaceNRTtoUnderline(alertInstanceName));
|
||||
logger.info("login user {},verify alert instance name: {}", RegexUtils.escapeNRT(loginUser.getUserName()), RegexUtils.escapeNRT(alertInstanceName));
|
||||
|
||||
boolean exist = alertPluginInstanceService.checkExistPluginInstanceName(alertInstanceName);
|
||||
Result result = new Result();
|
||||
|
|
@ -227,7 +227,7 @@ public class AlertPluginInstanceController extends BaseController {
|
|||
public Result listPaging(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
|
||||
@RequestParam("pageNo") Integer pageNo,
|
||||
@RequestParam("pageSize") Integer pageSize) {
|
||||
logger.info("login user {}, list paging, pageNo: {}, pageSize: {}",StringUtils.replaceNRTtoUnderline(loginUser.getUserName()), pageNo, pageSize);
|
||||
logger.info("login user {}, list paging, pageNo: {}, pageSize: {}", RegexUtils.escapeNRT(loginUser.getUserName()), pageNo, pageSize);
|
||||
Map<String, Object> result = checkPageParams(pageNo, pageSize);
|
||||
if (result.get(Constants.STATUS) != Status.SUCCESS) {
|
||||
return returnDataListPaging(result);
|
||||
|
|
|
|||
|
|
@ -14,8 +14,14 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.dolphinscheduler.api.controller;
|
||||
|
||||
import static org.apache.dolphinscheduler.common.Constants.COMMA;
|
||||
import static org.apache.dolphinscheduler.common.Constants.HTTP_HEADER_UNKNOWN;
|
||||
import static org.apache.dolphinscheduler.common.Constants.HTTP_X_FORWARDED_FOR;
|
||||
import static org.apache.dolphinscheduler.common.Constants.HTTP_X_REAL_IP;
|
||||
|
||||
import org.apache.dolphinscheduler.api.enums.Status;
|
||||
import org.apache.dolphinscheduler.api.utils.PageInfo;
|
||||
import org.apache.dolphinscheduler.api.utils.Result;
|
||||
|
|
@ -23,12 +29,11 @@ import org.apache.dolphinscheduler.common.Constants;
|
|||
import org.apache.dolphinscheduler.common.utils.StringUtils;
|
||||
import org.apache.dolphinscheduler.dao.entity.Resource;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.apache.dolphinscheduler.common.Constants.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* base controller
|
||||
|
|
|
|||
|
|
@ -14,33 +14,44 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.dolphinscheduler.api.controller;
|
||||
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.COMMAND_STATE_COUNT_ERROR;
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.COUNT_PROCESS_DEFINITION_USER_ERROR;
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.COUNT_PROCESS_INSTANCE_STATE_ERROR;
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.QUEUE_COUNT_ERROR;
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.TASK_INSTANCE_STATE_COUNT_ERROR;
|
||||
|
||||
import org.apache.dolphinscheduler.api.exceptions.ApiException;
|
||||
import org.apache.dolphinscheduler.api.service.DataAnalysisService;
|
||||
import org.apache.dolphinscheduler.api.utils.Result;
|
||||
import org.apache.dolphinscheduler.common.Constants;
|
||||
import org.apache.dolphinscheduler.dao.entity.User;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.*;
|
||||
|
||||
/**
|
||||
* data analysis controller
|
||||
*/
|
||||
@Api(tags = "DATA_ANALYSIS_TAG", position = 1)
|
||||
@Api(tags = "DATA_ANALYSIS_TAG")
|
||||
@RestController
|
||||
@RequestMapping("projects/analysis")
|
||||
public class DataAnalysisController extends BaseController {
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ import springfox.documentation.annotations.ApiIgnore;
|
|||
/**
|
||||
* data source controller
|
||||
*/
|
||||
@Api(tags = "DATA_SOURCE_TAG", position = 3)
|
||||
@Api(tags = "DATA_SOURCE_TAG")
|
||||
@RestController
|
||||
@RequestMapping("datasources")
|
||||
public class DataSourceController extends BaseController {
|
||||
|
|
@ -96,10 +96,14 @@ public class DataSourceController extends BaseController {
|
|||
@ApiImplicitParam(name = "host", value = "DATA_SOURCE_HOST", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "port", value = "DATA_SOURCE_PORT", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "database", value = "DATABASE_NAME", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "principal", value = "DATA_SOURCE_PRINCIPAL", dataType = "String"),
|
||||
@ApiImplicitParam(name = "userName", value = "USER_NAME", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "password", value = "PASSWORD", dataType = "String"),
|
||||
@ApiImplicitParam(name = "connectType", value = "CONNECT_TYPE", dataType = "DbConnectType"),
|
||||
@ApiImplicitParam(name = "other", value = "DATA_SOURCE_OTHER", dataType = "String")
|
||||
@ApiImplicitParam(name = "other", value = "DATA_SOURCE_OTHER", dataType = "String"),
|
||||
@ApiImplicitParam(name = "javaSecurityKrb5Conf", value = "DATA_SOURCE_KERBEROS_KRB5_CONF", dataType = "String"),
|
||||
@ApiImplicitParam(name = "loginUserKeytabUsername", value = "DATA_SOURCE_KERBEROS_KEYTAB_USERNAME", dataType = "String"),
|
||||
@ApiImplicitParam(name = "loginUserKeytabPath", value = "DATA_SOURCE_KERBEROS_KEYTAB_PATH", dataType = "String")
|
||||
})
|
||||
@PostMapping(value = "/create")
|
||||
@ResponseStatus(HttpStatus.CREATED)
|
||||
|
|
@ -115,10 +119,14 @@ public class DataSourceController extends BaseController {
|
|||
@RequestParam(value = "userName") String userName,
|
||||
@RequestParam(value = "password") String password,
|
||||
@RequestParam(value = "connectType") DbConnectType connectType,
|
||||
@RequestParam(value = "other") String other) {
|
||||
@RequestParam(value = "other") String other,
|
||||
@RequestParam(value = "javaSecurityKrb5Conf", required = false) String javaSecurityKrb5Conf,
|
||||
@RequestParam(value = "loginUserKeytabUsername", required = false) String loginUserKeytabUsername,
|
||||
@RequestParam(value = "loginUserKeytabPath", required = false) String loginUserKeytabPath) {
|
||||
logger.info("login user {} create datasource name: {}, note: {}, type: {}, host: {}, port: {}, database : {}, principal: {}, userName : {}, connectType: {}, other: {}",
|
||||
loginUser.getUserName(), name, note, type, host, port, database, principal, userName, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(type, host, port, database, principal, userName, password, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(type, host, port, database, principal, userName, password, connectType, other,
|
||||
javaSecurityKrb5Conf, loginUserKeytabUsername, loginUserKeytabPath);
|
||||
return dataSourceService.createDataSource(loginUser, name, note, type, parameter);
|
||||
}
|
||||
|
||||
|
|
@ -149,10 +157,14 @@ public class DataSourceController extends BaseController {
|
|||
@ApiImplicitParam(name = "host", value = "DATA_SOURCE_HOST", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "port", value = "DATA_SOURCE_PORT", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "database", value = "DATABASE_NAME", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "principal", value = "DATA_SOURCE_PRINCIPAL", dataType = "String"),
|
||||
@ApiImplicitParam(name = "userName", value = "USER_NAME", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "password", value = "PASSWORD", dataType = "String"),
|
||||
@ApiImplicitParam(name = "connectType", value = "CONNECT_TYPE", dataType = "DbConnectType"),
|
||||
@ApiImplicitParam(name = "other", value = "DATA_SOURCE_OTHER", dataType = "String")
|
||||
@ApiImplicitParam(name = "other", value = "DATA_SOURCE_OTHER", dataType = "String"),
|
||||
@ApiImplicitParam(name = "javaSecurityKrb5Conf", value = "DATA_SOURCE_KERBEROS_KRB5_CONF", dataType = "String"),
|
||||
@ApiImplicitParam(name = "loginUserKeytabUsername", value = "DATA_SOURCE_KERBEROS_KEYTAB_USERNAME", dataType = "String"),
|
||||
@ApiImplicitParam(name = "loginUserKeytabPath", value = "DATA_SOURCE_KERBEROS_KEYTAB_PATH", dataType = "String")
|
||||
})
|
||||
@PostMapping(value = "/update")
|
||||
@ResponseStatus(HttpStatus.OK)
|
||||
|
|
@ -169,10 +181,14 @@ public class DataSourceController extends BaseController {
|
|||
@RequestParam(value = "userName") String userName,
|
||||
@RequestParam(value = "password") String password,
|
||||
@RequestParam(value = "connectType") DbConnectType connectType,
|
||||
@RequestParam(value = "other") String other) {
|
||||
@RequestParam(value = "other") String other,
|
||||
@RequestParam(value = "javaSecurityKrb5Conf", required = false) String javaSecurityKrb5Conf,
|
||||
@RequestParam(value = "loginUserKeytabUsername", required = false) String loginUserKeytabUsername,
|
||||
@RequestParam(value = "loginUserKeytabPath", required = false) String loginUserKeytabPath) {
|
||||
logger.info("login user {} updateProcessInstance datasource name: {}, note: {}, type: {}, connectType: {}, other: {}",
|
||||
loginUser.getUserName(), name, note, type, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(type, host, port, database, principal, userName, password, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(type, host, port, database, principal, userName, password, connectType, other,
|
||||
javaSecurityKrb5Conf, loginUserKeytabUsername, loginUserKeytabPath);
|
||||
return dataSourceService.updateDataSource(id, loginUser, name, note, type, parameter);
|
||||
}
|
||||
|
||||
|
|
@ -274,10 +290,14 @@ public class DataSourceController extends BaseController {
|
|||
@ApiImplicitParam(name = "host", value = "DATA_SOURCE_HOST", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "port", value = "DATA_SOURCE_PORT", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "database", value = "DATABASE_NAME", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "principal", value = "DATA_SOURCE_PRINCIPAL", dataType = "String"),
|
||||
@ApiImplicitParam(name = "userName", value = "USER_NAME", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "password", value = "PASSWORD", dataType = "String"),
|
||||
@ApiImplicitParam(name = "connectType", value = "CONNECT_TYPE", dataType = "DbConnectType"),
|
||||
@ApiImplicitParam(name = "other", value = "DATA_SOURCE_OTHER", dataType = "String")
|
||||
@ApiImplicitParam(name = "other", value = "DATA_SOURCE_OTHER", dataType = "String"),
|
||||
@ApiImplicitParam(name = "javaSecurityKrb5Conf", value = "DATA_SOURCE_KERBEROS_KRB5_CONF", dataType = "String"),
|
||||
@ApiImplicitParam(name = "loginUserKeytabUsername", value = "DATA_SOURCE_KERBEROS_KEYTAB_USERNAME", dataType = "String"),
|
||||
@ApiImplicitParam(name = "loginUserKeytabPath", value = "DATA_SOURCE_KERBEROS_KEYTAB_PATH", dataType = "String")
|
||||
})
|
||||
@PostMapping(value = "/connect")
|
||||
@ResponseStatus(HttpStatus.OK)
|
||||
|
|
@ -293,10 +313,14 @@ public class DataSourceController extends BaseController {
|
|||
@RequestParam(value = "userName") String userName,
|
||||
@RequestParam(value = "password") String password,
|
||||
@RequestParam(value = "connectType") DbConnectType connectType,
|
||||
@RequestParam(value = "other") String other) {
|
||||
@RequestParam(value = "other") String other,
|
||||
@RequestParam(value = "javaSecurityKrb5Conf", required = false) String javaSecurityKrb5Conf,
|
||||
@RequestParam(value = "loginUserKeytabUsername", required = false) String loginUserKeytabUsername,
|
||||
@RequestParam(value = "loginUserKeytabPath", required = false) String loginUserKeytabPath) {
|
||||
logger.info("login user {}, connect datasource: {}, note: {}, type: {}, connectType: {}, other: {}",
|
||||
loginUser.getUserName(), name, note, type, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(type, host, port, database, principal, userName, password, connectType, other);
|
||||
String parameter = dataSourceService.buildParameter(type, host, port, database, principal, userName, password, connectType, other,
|
||||
javaSecurityKrb5Conf, loginUserKeytabUsername, loginUserKeytabPath);
|
||||
return dataSourceService.checkConnection(type, parameter);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ import org.apache.dolphinscheduler.common.enums.WarningType;
|
|||
import org.apache.dolphinscheduler.common.utils.JSONUtils;
|
||||
import org.apache.dolphinscheduler.dao.entity.User;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Map;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -58,9 +57,9 @@ import io.swagger.annotations.ApiParam;
|
|||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
/**
|
||||
* execute process controller
|
||||
* executor controller
|
||||
*/
|
||||
@Api(tags = "PROCESS_INSTANCE_EXECUTOR_TAG", position = 1)
|
||||
@Api(tags = "EXECUTOR_TAG")
|
||||
@RestController
|
||||
@RequestMapping("projects/{projectName}/executors")
|
||||
public class ExecutorController extends BaseController {
|
||||
|
|
@ -121,7 +120,7 @@ public class ExecutorController extends BaseController {
|
|||
@RequestParam(value = "processInstancePriority", required = false) Priority processInstancePriority,
|
||||
@RequestParam(value = "workerGroup", required = false, defaultValue = "default") String workerGroup,
|
||||
@RequestParam(value = "timeout", required = false) Integer timeout,
|
||||
@RequestParam(value = "startParams", required = false) String startParams) throws ParseException {
|
||||
@RequestParam(value = "startParams", required = false) String startParams) {
|
||||
logger.info("login user {}, start process instance, project name: {}, process definition id: {}, schedule time: {}, "
|
||||
+ "failure policy: {}, node name: {}, node dep: {}, notify type: {}, "
|
||||
+ "notify group id: {}, run mode: {},process instance priority:{}, workerGroup: {}, timeout: {}, startParams: {} ",
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.dolphinscheduler.api.controller;
|
||||
|
||||
package org.apache.dolphinscheduler.api.controller;
|
||||
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.DOWNLOAD_TASK_INSTANCE_LOG_FILE_ERROR;
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.QUERY_TASK_INSTANCE_LOG_ERROR;
|
||||
|
|
@ -46,11 +46,10 @@ import io.swagger.annotations.ApiImplicitParams;
|
|||
import io.swagger.annotations.ApiOperation;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
|
||||
/**
|
||||
* log controller
|
||||
* logger controller
|
||||
*/
|
||||
@Api(tags = "LOGGER_TAG", position = 13)
|
||||
@Api(tags = "LOGGER_TAG")
|
||||
@RestController
|
||||
@RequestMapping("/log")
|
||||
public class LoggerController extends BaseController {
|
||||
|
|
|
|||
|
|
@ -14,8 +14,12 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.dolphinscheduler.api.controller;
|
||||
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.IP_IS_EMPTY;
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.SIGN_OUT_ERROR;
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.USER_LOGIN_FAILURE;
|
||||
|
||||
import org.apache.dolphinscheduler.api.enums.Status;
|
||||
import org.apache.dolphinscheduler.api.exceptions.ApiException;
|
||||
|
|
@ -25,28 +29,34 @@ import org.apache.dolphinscheduler.api.utils.Result;
|
|||
import org.apache.dolphinscheduler.common.Constants;
|
||||
import org.apache.dolphinscheduler.common.utils.StringUtils;
|
||||
import org.apache.dolphinscheduler.dao.entity.User;
|
||||
import io.swagger.annotations.*;
|
||||
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import static org.apache.dolphinscheduler.api.enums.Status.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
/**
|
||||
* user login controller
|
||||
* <p>
|
||||
* swagger bootstrap ui docs refer : https://doc.xiaominfo.com/guide/enh-func.html
|
||||
* login controller
|
||||
*/
|
||||
@Api(tags = "LOGIN_TAG", position = 1)
|
||||
@Api(tags = "LOGIN_TAG")
|
||||
@RestController
|
||||
@RequestMapping("")
|
||||
public class LoginController extends BaseController {
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue