DolphinScheduler启动时参数注入思路(Docker & Kubernetes)

DolphinScheduler搭建好之后,思考了一下在Docker和Kubernetes不同模式下配置参数是如何注入到项目里的。

English version

一、Docker

Docker 类型的文件在这里。初始化脚本是startup.sh,是在81行进行初始化参数的操作,配置文件为startup-init-conf.sh.

1、参数注入到docker

在startup-init-conf.sh文件里有很多的注入参数。

比如DATABASE_HOSTREGISTRY_SERVERS 和其他的参数。

1
2
3
4
5
6
7
docker run -d --name dolphinscheduler \
-e DATABASE_HOST="xx.xx.xx.xx" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="user" -e DATABASE_PASSWORD="password" \
-e ZOOKEEPER_QUORUM="xx.xx.xx.xx:2181" \
-e REGISTRY_SERVERS="xx.xx.xx.xx:2181" \
-p 12345:12345 \
apache/dolphinscheduler:2.0.1 all

Docker的启动命令将会注入配置的参数。

2、参数注入 properties

/conf/dolphinscheduler下有很多properties.tpl文件。里面所有的参数都是变量名,将会在startup-init-conf.sh#L127被替换成具体的参数。

数据流程图如下:

二、Kubernetes

Kubernetes类型的文件在这里。 配置文件为 values.yaml。将会通过_helper.tpl被注入。

1、修改values.yaml文件中的参数

在values.yaml文件里有很多的注入参数。

比如DATABASE_HOSTREGISTRY_SERVERS 和其他的参数。

2、helm install dolphinscheduler

参数将会通过_helper.tpl被注入。

3、参数被注入到k8s yaml

Helm将参数注入到k8s yaml files

4、参数被注入到环境变量

Pods将会启动,可以看到环境变量已经是我们设置的值了。

5、Docker容器获取环境变量

Docker容器会被启动,接下来的注入流程跟docker数据相同。只有一点不同,就是参数是来自于环境变量而不是docker启动命令。

数据流程图如下:


评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×