_helpers.tpl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. #
  2. # Licensed to the Apache Software Foundation (ASF) under one or more
  3. # contributor license agreements. See the NOTICE file distributed with
  4. # this work for additional information regarding copyright ownership.
  5. # The ASF licenses this file to You under the Apache License, Version 2.0
  6. # (the "License"); you may not use this file except in compliance with
  7. # the License. You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software
  12. # distributed under the License is distributed on an "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. # See the License for the specific language governing permissions and
  15. # limitations under the License.
  16. #
  17. {{/* vim: set filetype=mustache: */}}
  18. {{/*
  19. Create a default fully qualified app name.
  20. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
  21. If release name contains chart name it will be used as a full name.
  22. */}}
  23. {{- define "dolphinscheduler.fullname" -}}
  24. {{- .Release.Name | trunc 63 | trimSuffix "-" -}}
  25. {{- end -}}
  26. {{/*
  27. Create default docker images' fullname.
  28. */}}
  29. {{- define "dolphinscheduler.image.fullname.master" -}}
  30. {{- .Values.image.registry }}/{{ .Values.image.master }}:{{ .Values.image.tag | default .Chart.AppVersion -}}
  31. {{- end -}}
  32. {{- define "dolphinscheduler.image.fullname.worker" -}}
  33. {{- .Values.image.registry }}/{{ .Values.image.worker }}:{{ .Values.image.tag | default .Chart.AppVersion -}}
  34. {{- end -}}
  35. {{- define "dolphinscheduler.image.fullname.api" -}}
  36. {{- .Values.image.registry }}/{{ .Values.image.api }}:{{ .Values.image.tag | default .Chart.AppVersion -}}
  37. {{- end -}}
  38. {{- define "dolphinscheduler.image.fullname.alert" -}}
  39. {{- .Values.image.registry }}/{{ .Values.image.alert }}:{{ .Values.image.tag | default .Chart.AppVersion -}}
  40. {{- end -}}
  41. {{- define "dolphinscheduler.image.fullname.tools" -}}
  42. {{- .Values.image.registry }}/{{ .Values.image.tools }}:{{ .Values.image.tag | default .Chart.AppVersion -}}
  43. {{- end -}}
  44. {{/*
  45. Create a default common labels.
  46. */}}
  47. {{- define "dolphinscheduler.common.labels" -}}
  48. app.kubernetes.io/instance: {{ .Release.Name }}
  49. app.kubernetes.io/managed-by: {{ .Release.Service }}
  50. app.kubernetes.io/version: {{ .Chart.AppVersion }}
  51. {{- end -}}
  52. {{/*
  53. Create a master labels.
  54. */}}
  55. {{- define "dolphinscheduler.master.labels" -}}
  56. app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-master
  57. app.kubernetes.io/component: master
  58. {{ include "dolphinscheduler.common.labels" . }}
  59. {{- end -}}
  60. {{/*
  61. Create a worker labels.
  62. */}}
  63. {{- define "dolphinscheduler.worker.labels" -}}
  64. app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-worker
  65. app.kubernetes.io/component: worker
  66. {{ include "dolphinscheduler.common.labels" . }}
  67. {{- end -}}
  68. {{/*
  69. Create an alert labels.
  70. */}}
  71. {{- define "dolphinscheduler.alert.labels" -}}
  72. app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-alert
  73. app.kubernetes.io/component: alert
  74. {{ include "dolphinscheduler.common.labels" . }}
  75. {{- end -}}
  76. {{/*
  77. Create an api labels.
  78. */}}
  79. {{- define "dolphinscheduler.api.labels" -}}
  80. app.kubernetes.io/name: {{ include "dolphinscheduler.fullname" . }}-api
  81. app.kubernetes.io/component: api
  82. {{ include "dolphinscheduler.common.labels" . }}
  83. {{- end -}}
  84. {{/*
  85. Create a default fully qualified postgresql name.
  86. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
  87. */}}
  88. {{- define "dolphinscheduler.postgresql.fullname" -}}
  89. {{- $name := default "postgresql" .Values.postgresql.nameOverride -}}
  90. {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
  91. {{- end -}}
  92. {{/*
  93. Create a default fully qualified mysql name.
  94. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
  95. */}}
  96. {{- define "dolphinscheduler.mysql.fullname" -}}
  97. {{- $name := default "mysql" .Values.mysql.nameOverride -}}
  98. {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
  99. {{- end -}}
  100. {{/*
  101. Create a default fully qualified zookeeper name.
  102. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
  103. */}}
  104. {{- define "dolphinscheduler.zookeeper.fullname" -}}
  105. {{- $name := default "zookeeper" .Values.zookeeper.nameOverride -}}
  106. {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
  107. {{- end -}}
  108. {{/*
  109. Create a default fully qualified minio name.
  110. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
  111. */}}
  112. {{- define "dolphinscheduler.minio.fullname" -}}
  113. {{- $name := default "minio" .Values.minio.nameOverride -}}
  114. {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
  115. {{- end -}}
  116. {{/*
  117. Create a default fully qualified zookkeeper quorum.
  118. */}}
  119. {{- define "dolphinscheduler.zookeeper.quorum" -}}
  120. {{- $port := default "2181" .Values.zookeeper.service.port | toString -}}
  121. {{- printf "%s:%s" (include "dolphinscheduler.zookeeper.fullname" .) $port -}}
  122. {{- end -}}
  123. {{/*
  124. Create a database environment variables.
  125. */}}
  126. {{- define "dolphinscheduler.database.env_vars" -}}
  127. - name: DATABASE
  128. {{- if .Values.postgresql.enabled }}
  129. value: "postgresql"
  130. {{- else if .Values.mysql.enabled }}
  131. value: "mysql"
  132. {{- else }}
  133. value: {{ .Values.externalDatabase.type | quote }}
  134. {{- end }}
  135. - name: SPRING_DATASOURCE_URL
  136. {{- if .Values.postgresql.enabled }}
  137. value: jdbc:postgresql://{{ template "dolphinscheduler.postgresql.fullname" . }}:5432/{{ .Values.postgresql.postgresqlDatabase }}?{{ .Values.postgresql.params }}
  138. {{- else if .Values.mysql.enabled }}
  139. value: jdbc:mysql://{{ template "dolphinscheduler.mysql.fullname" . }}:3306/{{ .Values.mysql.auth.database }}?{{ .Values.mysql.auth.params }}
  140. {{- else }}
  141. value: jdbc:{{ .Values.externalDatabase.type }}://{{ .Values.externalDatabase.host }}:{{ .Values.externalDatabase.port }}/{{ .Values.externalDatabase.database }}?{{ .Values.externalDatabase.params }}
  142. {{- end }}
  143. - name: SPRING_DATASOURCE_USERNAME
  144. {{- if .Values.postgresql.enabled }}
  145. value: {{ .Values.postgresql.postgresqlUsername }}
  146. {{- else if .Values.mysql.enabled }}
  147. value: {{ .Values.mysql.auth.username }}
  148. {{- else }}
  149. value: {{ .Values.externalDatabase.username | quote }}
  150. {{- end }}
  151. - name: SPRING_DATASOURCE_PASSWORD
  152. valueFrom:
  153. secretKeyRef:
  154. {{- if .Values.postgresql.enabled }}
  155. name: {{ template "dolphinscheduler.postgresql.fullname" . }}
  156. key: postgresql-password
  157. {{- else if .Values.mysql.enabled }}
  158. name: {{ template "dolphinscheduler.mysql.fullname" . }}
  159. key: mysql-password
  160. {{- else }}
  161. name: {{ include "dolphinscheduler.fullname" . }}-externaldb
  162. key: database-password
  163. {{- end }}
  164. - name: SPRING_DATASOURCE_DRIVER-CLASS-NAME
  165. {{- if .Values.postgresql.enabled }}
  166. value: {{ .Values.postgresql.driverClassName }}
  167. {{- else if .Values.mysql.enabled }}
  168. value: {{ .Values.mysql.driverClassName }}
  169. {{- else }}
  170. value: {{ .Values.externalDatabase.driverClassName | quote }}
  171. {{- end }}
  172. {{- end -}}
  173. {{/*
  174. Create a security environment variables.
  175. */}}
  176. {{- define "dolphinscheduler.security.env_vars" -}}
  177. - name: SECURITY_AUTHENTICATION_TYPE
  178. value: {{ .Values.security.authentication.type | quote }}
  179. {{- if eq .Values.security.authentication.type "LDAP" }}
  180. - name: SECURITY_AUTHENTICATION_LDAP_URLS
  181. value: {{ .Values.security.authentication.ldap.urls | quote }}
  182. - name: SECURITY_AUTHENTICATION_LDAP_BASE_DN
  183. value: {{ .Values.security.authentication.ldap.basedn | quote }}
  184. - name: SECURITY_AUTHENTICATION_LDAP_USERNAME
  185. value: {{ .Values.security.authentication.ldap.username | quote }}
  186. - name: SECURITY_AUTHENTICATION_LDAP_PASSWORD
  187. value: {{ .Values.security.authentication.ldap.password | quote }}
  188. - name: SECURITY_AUTHENTICATION_LDAP_USER_ADMIN
  189. value: {{ .Values.security.authentication.ldap.user.admin | quote }}
  190. - name: SECURITY_AUTHENTICATION_LDAP_USER_IDENTITY_ATTRIBUTE
  191. value: {{ .Values.security.authentication.ldap.user.identityattribute | quote }}
  192. - name: SECURITY_AUTHENTICATION_LDAP_USER_EMAIL_ATTRIBUTE
  193. value: {{ .Values.security.authentication.ldap.user.emailattribute | quote }}
  194. - name: SECURITY_AUTHENTICATION_LDAP_USER_NOT_EXIST_ACTION
  195. value: {{ .Values.security.authentication.ldap.user.notexistaction | quote }}
  196. - name: SECURITY_AUTHENTICATION_LDAP_SSL_ENABLE
  197. value: {{ .Values.security.authentication.ldap.ssl.enable | quote }}
  198. - name: SECURITY_AUTHENTICATION_LDAP_SSL_TRUST_STORE
  199. value: {{ .Values.security.authentication.ldap.ssl.truststore | quote }}
  200. - name: SECURITY_AUTHENTICATION_LDAP_SSL_TRUST_STORE_PASSWORD
  201. value: {{ .Values.security.authentication.ldap.ssl.truststorepassword | quote }}
  202. {{- end }}
  203. {{- end -}}
  204. {{/*
  205. Wait for database to be ready.
  206. */}}
  207. {{- define "dolphinscheduler.database.wait-for-ready" -}}
  208. - name: wait-for-database
  209. image: {{ .Values.initImage.busybox }}
  210. imagePullPolicy: {{ .Values.initImage.pullPolicy }}
  211. {{- if .Values.postgresql.enabled }}
  212. command: ['sh', '-xc', 'for i in $(seq 1 180); do nc -z -w3 {{ template "dolphinscheduler.postgresql.fullname" . }} 5432 && exit 0 || sleep 5; done; exit 1']
  213. {{- else if .Values.mysql.enabled }}
  214. command: ['sh', '-xc', 'for i in $(seq 1 180); do nc -z -w3 {{ template "dolphinscheduler.mysql.fullname" . }} 3306 && exit 0 || sleep 5; done; exit 1']
  215. {{- else }}
  216. command: ['sh', '-xc', 'for i in $(seq 1 180); do nc -z -w3 {{ .Values.externalDatabase.host }} {{ .Values.externalDatabase.port }} && exit 0 || sleep 5; done; exit 1']
  217. {{- end }}
  218. {{- end -}}
  219. {{/*
  220. Wait for minio to be ready.
  221. */}}
  222. {{- define "dolphinscheduler.minio.wait-for-ready" -}}
  223. {{- if .Values.minio.enabled }}
  224. - name: wait-for-minio
  225. image: {{ .Values.initImage.busybox }}
  226. imagePullPolicy: {{ .Values.initImage.pullPolicy }}
  227. command: ['sh', '-xc', 'for i in $(seq 1 180); do nc -z -w3 {{ template "dolphinscheduler.minio.fullname" . }} 9000 && exit 0 || sleep 5; done; exit 1']
  228. {{- end }}
  229. {{- end -}}
  230. {{/*
  231. Create a registry environment variables.
  232. */}}
  233. {{- define "dolphinscheduler.registry.env_vars" -}}
  234. - name: REGISTRY_TYPE
  235. {{- if .Values.zookeeper.enabled }}
  236. value: "zookeeper"
  237. {{- else if .Values.registryEtcd.enabled }}
  238. value: "etcd"
  239. {{- else if .Values.registryJdbc.enabled }}
  240. value: "jdbc"
  241. {{- else }}
  242. value: {{ .Values.externalRegistry.registryPluginName }}
  243. {{- end }}
  244. {{- if .Values.registryEtcd.enabled }}
  245. - name: REGISTRY_ENDPOINTS
  246. value: {{ .Values.registryEtcd.endpoints }}
  247. - name: REGISTRY_NAMESPACE
  248. value: {{ .Values.registryEtcd.namespace }}
  249. - name: REGISTRY_USER
  250. value: {{ .Values.registryEtcd.user }}
  251. - name: REGISTRY_PASSWORD
  252. value: {{ .Values.registryEtcd.passWord }}
  253. - name: REGISTRY_AUTHORITY
  254. value: {{ .Values.registryEtcd.authority }}
  255. - name: REGISTRY_CERT_FILE
  256. value: {{ .Values.registryEtcd.ssl.certFile }}
  257. - name: REGISTRY_KEY_CERT_CHAIN_FILE
  258. value: {{ .Values.registryEtcd.ssl.keyCertChainFile }}
  259. - name: REGISTRY_KEY_FILE
  260. value: {{ .Values.registryEtcd.ssl.keyFile }}
  261. {{- else if .Values.registryJdbc.enabled }}
  262. - name: REGISTRY_TERM_REFRESH_INTERVAL
  263. value: {{ .Values.registryJdbc.termRefreshInterval }}
  264. - name: REGISTRY_TERM_EXPIRE_TIMES
  265. value: {{ .Values.registryJdbc.termExpireTimes | quote}}
  266. {{- if .Values.registryJdbc.hikariConfig.enabled }}
  267. - name: REGISTRY_HIKARI_CONFIG_DRIVER_CLASS_NAME
  268. value: {{ .Values.registryJdbc.hikariConfig.driverClassName }}
  269. - name: REGISTRY_HIKARI_CONFIG_JDBC_URL
  270. value: {{ .Values.registryJdbc.hikariConfig.jdbcurl }}
  271. - name: REGISTRY_HIKARI_CONFIG_USERNAME
  272. value: {{ .Values.registryJdbc.hikariConfig.username }}
  273. - name: REGISTRY_HIKARI_CONFIG_PASSWORD
  274. valueFrom:
  275. secretKeyRef:
  276. name: {{ include "dolphinscheduler.fullname" . }}-registry-db
  277. key: registry-password
  278. {{- end }}
  279. {{- else }}
  280. - name: REGISTRY_ZOOKEEPER_CONNECT_STRING
  281. {{- if .Values.zookeeper.enabled }}
  282. value: {{ template "dolphinscheduler.zookeeper.quorum" . }}
  283. {{- else }}
  284. value: {{ .Values.externalRegistry.registryServers }}
  285. {{- end }}
  286. {{- end }}
  287. {{- end -}}
  288. {{/*
  289. Create a sharedStoragePersistence volume.
  290. */}}
  291. {{- define "dolphinscheduler.sharedStorage.volume" -}}
  292. {{- if .Values.common.sharedStoragePersistence.enabled -}}
  293. - name: {{ include "dolphinscheduler.fullname" . }}-shared
  294. persistentVolumeClaim:
  295. claimName: {{ include "dolphinscheduler.fullname" . }}-shared
  296. {{- end -}}
  297. {{- end -}}
  298. {{/*
  299. Create a sharedStoragePersistence volumeMount.
  300. */}}
  301. {{- define "dolphinscheduler.sharedStorage.volumeMount" -}}
  302. {{- if .Values.common.sharedStoragePersistence.enabled -}}
  303. - mountPath: {{ .Values.common.sharedStoragePersistence.mountPath | quote }}
  304. name: {{ include "dolphinscheduler.fullname" . }}-shared
  305. {{- end -}}
  306. {{- end -}}
  307. {{/*
  308. Create a fsFileResourcePersistence volume.
  309. */}}
  310. {{- define "dolphinscheduler.fsFileResource.volume" -}}
  311. {{- if .Values.common.fsFileResourcePersistence.enabled -}}
  312. - name: {{ include "dolphinscheduler.fullname" . }}-fs-file
  313. persistentVolumeClaim:
  314. claimName: {{ include "dolphinscheduler.fullname" . }}-fs-file
  315. {{- end -}}
  316. {{- end -}}
  317. {{/*
  318. Create a fsFileResourcePersistence volumeMount.
  319. */}}
  320. {{- define "dolphinscheduler.fsFileResource.volumeMount" -}}
  321. {{- if .Values.common.fsFileResourcePersistence.enabled -}}
  322. - mountPath: {{ default "/dolphinscheduler" .Values.common.configmap.RESOURCE_UPLOAD_PATH | quote }}
  323. name: {{ include "dolphinscheduler.fullname" . }}-fs-file
  324. {{- end -}}
  325. {{- end -}}
  326. {{/*
  327. Create a etcd ssl volume.
  328. */}}
  329. {{- define "dolphinscheduler.etcd.ssl.volume" -}}
  330. {{- if .Values.registryEtcd.ssl.enabled -}}
  331. - name: etcd-ssl
  332. secret:
  333. secretName: {{ include "dolphinscheduler.fullname" . }}-etcd-ssl
  334. {{- end -}}
  335. {{- end -}}
  336. {{/*
  337. Create a etcd ssl volumeMount.
  338. */}}
  339. {{- define "dolphinscheduler.etcd.ssl.volumeMount" -}}
  340. {{- if .Values.registryEtcd.ssl.enabled -}}
  341. - mountPath: /opt/dolphinscheduler/{{ .Values.registryEtcd.ssl.certFile }}
  342. name: etcd-ssl
  343. subPath: cert-file
  344. - mountPath: /opt/dolphinscheduler/{{ .Values.registryEtcd.ssl.keyCertChainFile }}
  345. name: etcd-ssl
  346. subPath: key-cert-chain-file
  347. - mountPath: /opt/dolphinscheduler/{{ .Values.registryEtcd.ssl.keyFile }}
  348. name: etcd-ssl
  349. subPath: key-file
  350. {{- end -}}
  351. {{- end -}}
  352. {{/*
  353. Create a ldap ssl volume.
  354. */}}
  355. {{- define "dolphinscheduler.ldap.ssl.volume" -}}
  356. {{- if .Values.security.authentication.ldap.ssl.enable -}}
  357. - name: jks-file
  358. secret:
  359. secretName: {{ include "dolphinscheduler.fullname" . }}-ldap-ssl
  360. {{- end -}}
  361. {{- end -}}
  362. {{/*
  363. Create a ldap ssl volumeMount.
  364. */}}
  365. {{- define "dolphinscheduler.ldap.ssl.volumeMount" -}}
  366. {{- if .Values.security.authentication.ldap.ssl.enable -}}
  367. - mountPath: {{ .Values.security.authentication.ldap.ssl.truststore }}
  368. name: jks-file
  369. subPath: jks-file
  370. {{- end -}}
  371. {{- end -}}