DolphinScheduler搭建好之后,思考了一下在Docker和Kubernetes不同模式下配置参数是如何注入到项目里的。
一、Docker
Docker 类型的文件在这里。初始化脚本是startup.sh,是在81行进行初始化参数的操作,配置文件为startup-init-conf.sh.
1、参数注入到docker
在startup-init-conf.sh文件里有很多的注入参数。
比如DATABASE_HOST
、 REGISTRY_SERVERS
和其他的参数。
1 | docker run -d --name dolphinscheduler \ |
Docker的启动命令将会注入配置的参数。
2、参数注入 properties
在 /conf/dolphinscheduler下有很多properties.tpl文件。里面所有的参数都是变量名,将会在startup-init-conf.sh#L127被替换成具体的参数。
数据流程图如下:
二、Kubernetes
Kubernetes类型的文件在这里。 配置文件为 values.yaml。将会通过_helper.tpl被注入。
1、修改values.yaml文件中的参数
在values.yaml文件里有很多的注入参数。
比如DATABASE_HOST
、 REGISTRY_SERVERS
和其他的参数。
2、helm install dolphinscheduler
参数将会通过_helper.tpl被注入。
3、参数被注入到k8s yaml
Helm将参数注入到k8s yaml files。
4、参数被注入到环境变量
Pods将会启动,可以看到环境变量已经是我们设置的值了。
5、Docker容器获取环境变量
Docker容器会被启动,接下来的注入流程跟docker数据相同。只有一点不同,就是参数是来自于环境变量而不是docker启动命令。
数据流程图如下: