jobmanager-statefulset.yaml 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. apiVersion: apps/v1
  2. kind: StatefulSet
  3. metadata:
  4. name: {{ include "flink.fullname" . }}-jobmanager
  5. labels:
  6. {{ include "flink.labels" . | indent 4 }}
  7. component: jobmanager
  8. annotations:
  9. {{- range $key, $value := .Values.jobmanager.annotations }}
  10. {{ $key | quote }}: {{ $value | quote }}
  11. {{- end }}
  12. spec:
  13. replicas: {{ .Values.jobmanager.replicaCount }}
  14. podManagementPolicy: {{ .Values.jobmanager.podManagementPolicy }}
  15. selector:
  16. matchLabels:
  17. app.kubernetes.io/name: {{ include "flink.name" . }}
  18. app.kubernetes.io/instance: {{ .Release.Name }}
  19. component: jobmanager
  20. serviceName: {{ include "flink.fullname" . }}-jobmanager-headless
  21. template:
  22. metadata:
  23. labels:
  24. app.kubernetes.io/name: {{ include "flink.name" . }}
  25. app.kubernetes.io/instance: {{ .Release.Name }}
  26. component: jobmanager
  27. spec:
  28. {{- with .Values.imagePullSecrets }}
  29. imagePullSecrets:
  30. {{- toYaml . | nindent 8 }}
  31. {{- end }}
  32. serviceAccount: {{ include "jobmanager.serviceAccount" . }}
  33. containers:
  34. - name: jobmanager
  35. image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
  36. imagePullPolicy: {{ .Values.image.pullPolicy }}
  37. workingDir: {{ .Values.flink.workDir }}
  38. command:
  39. - "/bin/bash"
  40. - "-c"
  41. - {{ include "jobmanager.command" . | quote }}
  42. env:
  43. - name: JVM_ARGS
  44. value: {{ tpl .Values.jobmanager.jvmArgs . | quote }}
  45. {{- if .Values.extraEnvs }}
  46. {{- toYaml .Values.extraEnvs | nindent 12 }}
  47. {{- end }}
  48. {{- if .Values.jobmanager.extraEnvs }}
  49. {{- toYaml .Values.jobmanager.extraEnvs | nindent 12 }}
  50. {{- end }}
  51. ports:
  52. {{- range $name, $port := .Values.jobmanager.ports }}
  53. - containerPort: {{ $port }}
  54. name: {{ $name }}
  55. {{- end }}
  56. {{- if .Values.flink.monitoring.enabled }}
  57. - containerPort: {{ .Values.flink.monitoring.port }}
  58. name: metrics
  59. {{- end }}
  60. {{- if .Values.jobmanager.highAvailability.enabled }}
  61. - containerPort: {{ .Values.jobmanager.highAvailability.syncPort }}
  62. name: ha
  63. {{- end }}
  64. readinessProbe:
  65. tcpSocket:
  66. {{- if .Values.jobmanager.highAvailability.enabled }}
  67. port: {{ .Values.jobmanager.highAvailability.syncPort }}
  68. {{- else }}
  69. port: {{ .Values.jobmanager.ports.rpc }}
  70. {{- end }}
  71. periodSeconds: {{ .Values.jobmanager.readinessProbe.periodSeconds }}
  72. initialDelaySeconds: {{ .Values.jobmanager.readinessProbe.initialDelaySeconds }}
  73. livenessProbe:
  74. tcpSocket:
  75. port: {{ .Values.jobmanager.ports.blob }}
  76. initialDelaySeconds: {{ .Values.jobmanager.livenessProbe.initialDelaySeconds }}
  77. periodSeconds: {{ .Values.jobmanager.livenessProbe.periodSeconds }}
  78. volumeMounts:
  79. - name: flink-config-volume
  80. mountPath: {{ .Values.flink.workDir }}/conf/flink-conf.yaml.tpl
  81. subPath: flink-conf.yaml.tpl
  82. - name: flink-config-volume
  83. mountPath: {{ .Values.flink.workDir }}/conf/log4j.properties
  84. subPath: log4j.properties
  85. - name: flink-config-volume
  86. mountPath: {{ .Values.flink.workDir }}/conf/security.properties
  87. subPath: security.properties
  88. {{- if .Values.jobmanager.highAvailability.enabled }}
  89. - name: flink-config-volume
  90. mountPath: {{ .Values.flink.workDir }}/conf/masters
  91. subPath: masters
  92. {{- end }}
  93. {{- if .Values.jobmanager.persistent.enabled }}
  94. - name: jobmanager-data
  95. mountPath: {{ .Values.jobmanager.persistent.mountPath }}
  96. {{- end }}
  97. resources:
  98. {{- toYaml .Values.jobmanager.resources | nindent 12 }}
  99. volumes:
  100. - name: flink-config-volume
  101. configMap:
  102. name: {{ include "flink.fullname" . }}-config
  103. items:
  104. - key: flink-conf.yaml
  105. path: flink-conf.yaml.tpl
  106. - key: log4j.properties
  107. path: log4j.properties
  108. - key: security.properties
  109. path: security.properties
  110. {{- if .Values.jobmanager.highAvailability.enabled }}
  111. - key: masters
  112. path: masters
  113. {{- end }}
  114. {{- with .Values.jobmanager.nodeSelector }}
  115. nodeSelector:
  116. {{- toYaml . | nindent 8 }}
  117. {{- end }}
  118. {{- with .Values.jobmanager.affinity }}
  119. affinity:
  120. {{- toYaml . | nindent 8 }}
  121. {{- end }}
  122. {{- with .Values.jobmanager.tolerations }}
  123. tolerations:
  124. {{- toYaml . | nindent 8 }}
  125. {{- end }}
  126. {{- if .Values.jobmanager.persistent.enabled }}
  127. volumeClaimTemplates:
  128. - metadata:
  129. name: jobmanager-data
  130. annotations:
  131. volume.alpha.kubernetes.io/storage-class: {{ .Values.jobmanager.persistent.storageClass }}
  132. labels:
  133. {{ include "flink.labels" . | indent 10 }}
  134. spec:
  135. accessModes:
  136. - ReadWriteOnce
  137. resources:
  138. requests:
  139. storage: {{ .Values.jobmanager.persistent.size }}
  140. {{- end }}