jobmanager.yaml 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. apiVersion: apps/v1
  2. {{- if .Values.jobmanager.statefulset }}
  3. kind: StatefulSet
  4. {{- else }}
  5. kind: Deployment
  6. {{- end }}
  7. metadata:
  8. name: {{ include "flink.fullname" . }}-jobmanager
  9. labels:
  10. {{ include "flink.labels" . | indent 4 }}
  11. component: jobmanager
  12. annotations:
  13. {{- range $key, $value := .Values.jobmanager.annotations }}
  14. {{ $key | quote }}: {{ $value | quote }}
  15. {{- end }}
  16. spec:
  17. replicas: {{ .Values.jobmanager.replicaCount }}
  18. {{- if .Values.jobmanager.statefulset }}
  19. podManagementPolicy: {{ .Values.jobmanager.podManagementPolicy }}
  20. {{- else }}
  21. strategy:
  22. type: Recreate
  23. {{- end }}
  24. selector:
  25. matchLabels:
  26. app.kubernetes.io/name: {{ include "flink.name" . }}
  27. app.kubernetes.io/instance: {{ .Release.Name }}
  28. component: jobmanager
  29. {{- if .Values.jobmanager.statefulset }}
  30. serviceName: {{ include "flink.fullname" . }}-jobmanager-headless
  31. {{- end }}
  32. template:
  33. metadata:
  34. labels:
  35. app.kubernetes.io/name: {{ include "flink.name" . }}
  36. app.kubernetes.io/instance: {{ .Release.Name }}
  37. component: jobmanager
  38. annotations:
  39. {{- range $key, $value := .Values.jobmanager.podAnnotations }}
  40. {{ $key | quote }}: {{ $value | quote }}
  41. {{- end }}
  42. spec:
  43. {{- with .Values.imagePullSecrets }}
  44. imagePullSecrets:
  45. {{- toYaml . | nindent 8 }}
  46. {{- end }}
  47. serviceAccount: {{ include "jobmanager.serviceAccount" . }}
  48. initContainers:
  49. {{- range $ct, $params := .Values.jobmanager.initContainers }}
  50. - name: {{ $ct }}
  51. image: {{ $params.image }}
  52. command:
  53. {{- range $params.command }}
  54. - {{ . }}
  55. {{- end }}
  56. {{- end }}
  57. containers:
  58. - name: jobmanager
  59. image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
  60. imagePullPolicy: {{ .Values.image.pullPolicy }}
  61. workingDir: {{ .Values.flink.workDir }}
  62. command:
  63. - "/bin/bash"
  64. - "-c"
  65. - {{ include "jobmanager.command" . | quote }}
  66. env:
  67. - name: JVM_ARGS
  68. value: {{ tpl .Values.jobmanager.jvmArgs . | quote }}
  69. - name: FLINK_POD_IP
  70. valueFrom:
  71. fieldRef:
  72. fieldPath: status.podIP
  73. {{- if .Values.extraEnvs }}
  74. {{- toYaml .Values.extraEnvs | nindent 12 }}
  75. {{- end }}
  76. {{- if .Values.jobmanager.extraEnvs }}
  77. {{- toYaml .Values.jobmanager.extraEnvs | nindent 12 }}
  78. {{- end }}
  79. envFrom:
  80. {{- if and .Values.secrets.bitnamiSealedSecrets.enabled .Values.secrets.bitnamiSealedSecrets.sealedSecretEnvs }}
  81. - secretRef:
  82. name: {{ .Release.Name }}-secretenvs
  83. {{- end }}
  84. ports:
  85. {{- range $name, $port := .Values.jobmanager.ports }}
  86. - containerPort: {{ $port }}
  87. name: {{ $name }}
  88. {{- end }}
  89. {{- if .Values.flink.monitoring.enabled }}
  90. - containerPort: {{ .Values.flink.monitoring.port }}
  91. name: metrics
  92. {{- end }}
  93. {{- if .Values.jobmanager.highAvailability.enabled }}
  94. - containerPort: {{ .Values.jobmanager.highAvailability.syncPort }}
  95. name: ha
  96. {{- end }}
  97. readinessProbe:
  98. tcpSocket:
  99. {{- if .Values.jobmanager.highAvailability.enabled }}
  100. port: {{ .Values.jobmanager.highAvailability.syncPort }}
  101. {{- else }}
  102. port: {{ .Values.jobmanager.ports.rpc }}
  103. {{- end }}
  104. periodSeconds: {{ .Values.jobmanager.readinessProbe.periodSeconds }}
  105. initialDelaySeconds: {{ .Values.jobmanager.readinessProbe.initialDelaySeconds }}
  106. livenessProbe:
  107. tcpSocket:
  108. port: {{ .Values.jobmanager.ports.blob }}
  109. initialDelaySeconds: {{ .Values.jobmanager.livenessProbe.initialDelaySeconds }}
  110. periodSeconds: {{ .Values.jobmanager.livenessProbe.periodSeconds }}
  111. volumeMounts:
  112. - name: flink-config-volume
  113. mountPath: {{ .Values.flink.workDir }}/conf/flink-conf.yaml.tpl
  114. subPath: flink-conf.yaml.tpl
  115. - name: flink-config-volume
  116. mountPath: {{ .Values.flink.workDir }}/conf/log4j.properties
  117. subPath: log4j.properties
  118. - name: flink-config-volume
  119. mountPath: {{ .Values.flink.workDir }}/conf/security.properties
  120. subPath: security.properties
  121. {{- if .Values.jobmanager.highAvailability.enabled }}
  122. - name: flink-config-volume
  123. mountPath: {{ .Values.flink.workDir }}/conf/masters
  124. subPath: masters
  125. {{- end }}
  126. {{- range $secret := .Values.secrets.kubernetesSecrets }}
  127. {{- if $secret.mountPath }}
  128. {{- if $secret.keys }}
  129. {{- range $key := $secret.keys }}
  130. - name: {{ include "flink.fullname" $ }}-{{ $secret.name }}
  131. mountPath: {{ $secret.mountPath }}/{{ $key }}
  132. subPath: {{ $key }}
  133. readOnly: true
  134. {{- end }}
  135. {{- else }}
  136. - name: {{ include "flink.fullname" $ }}-{{ $secret.name }}
  137. mountPath: {{ $secret.mountPath }}
  138. readOnly: true
  139. {{- end }}
  140. {{- end }}
  141. {{- end }}
  142. {{- if .Values.jobmanager.extraVolumeMounts -}}
  143. {{ toYaml .Values.jobmanager.extraVolumeMounts | nindent 12 }}
  144. {{- end }}
  145. {{- if and .Values.jobmanager.persistent.enabled .Values.jobmanager.statefulset }}
  146. - name: jobmanager-data
  147. mountPath: {{ .Values.jobmanager.persistent.mountPath }}
  148. {{- end }}
  149. {{- if and (and .Values.secrets.bitnamiSealedSecrets.enabled .Values.secrets.bitnamiSealedSecrets.sealedSecretFiles) .Values.secrets.bitnamiSealedSecrets.sealedSecretFilesPath }}
  150. - name: sealed-secret-files
  151. mountPath: {{ .Values.secrets.bitnamiSealedSecrets.sealedSecretFilesPath }}
  152. {{- end }}
  153. resources:
  154. {{- toYaml .Values.jobmanager.resources | nindent 12 }}
  155. volumes:
  156. - name: flink-config-volume
  157. configMap:
  158. name: {{ include "flink.fullname" . }}-config
  159. items:
  160. - key: flink-conf.yaml
  161. path: flink-conf.yaml.tpl
  162. - key: log4j.properties
  163. path: log4j.properties
  164. - key: security.properties
  165. path: security.properties
  166. {{- if .Values.jobmanager.highAvailability.enabled }}
  167. - key: masters
  168. path: masters
  169. {{- end }}
  170. {{- range .Values.secrets.kubernetesSecrets }}
  171. - name: {{ include "flink.fullname" $ }}-{{ .name }}
  172. secret:
  173. secretName: {{ .name }}
  174. {{- end }}
  175. {{- if .Values.jobmanager.extraVolumes -}}
  176. {{ toYaml .Values.jobmanager.extraVolumes | nindent 8 }}
  177. {{- end }}
  178. {{- if and (and .Values.secrets.bitnamiSealedSecrets.enabled .Values.secrets.bitnamiSealedSecrets.sealedSecretFiles) .Values.secrets.bitnamiSealedSecrets.sealedSecretFilesPath }}
  179. - name: sealed-secret-files
  180. secret:
  181. secretName: {{ .Release.Name }}-secretfiles
  182. {{- end }}
  183. {{- with .Values.jobmanager.nodeSelector }}
  184. nodeSelector:
  185. {{- toYaml . | nindent 8 }}
  186. {{- end }}
  187. {{- with .Values.jobmanager.affinity }}
  188. affinity:
  189. {{- toYaml . | nindent 8 }}
  190. {{- end }}
  191. {{- with .Values.jobmanager.tolerations }}
  192. tolerations:
  193. {{- toYaml . | nindent 8 }}
  194. {{- end }}
  195. {{- if and .Values.jobmanager.persistent.enabled .Values.jobmanager.statefulset }}
  196. volumeClaimTemplates:
  197. - metadata:
  198. name: jobmanager-data
  199. labels:
  200. {{ include "flink.labels" . | indent 10 }}
  201. spec:
  202. accessModes:
  203. - ReadWriteOnce
  204. {{- if eq (kindIs "invalid" .Values.jobmanager.persistent.storageClass) false }}
  205. storageClassName: {{ .Values.jobmanager.persistent.storageClass | quote }}
  206. {{- end }}
  207. resources:
  208. requests:
  209. storage: {{ .Values.jobmanager.persistent.size }}
  210. {{- end }}