sts.yaml 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. {{- if and .Values.alertmanager.enabled .Values.alertmanager.statefulSet.enabled -}}
  2. apiVersion: apps/v1
  3. kind: StatefulSet
  4. metadata:
  5. {{- if .Values.alertmanager.statefulSet.annotations }}
  6. annotations:
  7. {{ toYaml .Values.alertmanager.statefulSet.annotations | nindent 4 }}
  8. {{- end }}
  9. labels:
  10. {{- include "prometheus.alertmanager.labels" . | nindent 4 }}
  11. {{- if .Values.alertmanager.statefulSet.labels}}
  12. {{ toYaml .Values.alertmanager.statefulSet.labels | nindent 4 }}
  13. {{- end}}
  14. name: {{ template "prometheus.alertmanager.fullname" . }}
  15. {{ include "prometheus.namespace" . | indent 2 }}
  16. spec:
  17. serviceName: {{ template "prometheus.alertmanager.fullname" . }}-headless
  18. selector:
  19. matchLabels:
  20. {{- include "prometheus.alertmanager.matchLabels" . | nindent 6 }}
  21. replicas: {{ .Values.alertmanager.replicaCount }}
  22. podManagementPolicy: {{ .Values.alertmanager.statefulSet.podManagementPolicy }}
  23. template:
  24. metadata:
  25. {{- if .Values.alertmanager.podAnnotations }}
  26. annotations:
  27. {{ toYaml .Values.alertmanager.podAnnotations | nindent 8 }}
  28. {{- end }}
  29. labels:
  30. {{- include "prometheus.alertmanager.labels" . | nindent 8 }}
  31. {{- if .Values.alertmanager.podLabels}}
  32. {{ toYaml .Values.alertmanager.podLabels | nindent 8 }}
  33. {{- end}}
  34. spec:
  35. {{- if .Values.alertmanager.affinity }}
  36. affinity:
  37. {{ toYaml .Values.alertmanager.affinity | indent 8 }}
  38. {{- end }}
  39. {{- if .Values.alertmanager.schedulerName }}
  40. schedulerName: "{{ .Values.alertmanager.schedulerName }}"
  41. {{- end }}
  42. serviceAccountName: {{ template "prometheus.serviceAccountName.alertmanager" . }}
  43. {{- if .Values.alertmanager.priorityClassName }}
  44. priorityClassName: "{{ .Values.alertmanager.priorityClassName }}"
  45. {{- end }}
  46. containers:
  47. - name: {{ template "prometheus.name" . }}-{{ .Values.alertmanager.name }}
  48. image: "{{ .Values.alertmanager.image.repository }}:{{ .Values.alertmanager.image.tag }}"
  49. imagePullPolicy: "{{ .Values.alertmanager.image.pullPolicy }}"
  50. env:
  51. {{- range $key, $value := .Values.alertmanager.extraEnv }}
  52. - name: {{ $key }}
  53. value: {{ $value }}
  54. {{- end }}
  55. - name: POD_IP
  56. valueFrom:
  57. fieldRef:
  58. apiVersion: v1
  59. fieldPath: status.podIP
  60. args:
  61. - --config.file=/etc/config/alertmanager.yml
  62. - --storage.path={{ .Values.alertmanager.persistentVolume.mountPath }}
  63. {{- if .Values.alertmanager.statefulSet.headless.enableMeshPeer }}
  64. - --cluster.advertise-address=[$(POD_IP)]:6783
  65. - --cluster.listen-address=0.0.0.0:6783
  66. {{- range $n := until (.Values.alertmanager.replicaCount | int) }}
  67. - --cluster.peer={{ template "prometheus.alertmanager.fullname" $ }}-{{ $n }}.{{ template "prometheus.alertmanager.fullname" $ }}-headless:6783
  68. {{- end }}
  69. {{- else }}
  70. - --cluster.listen-address=
  71. {{- end }}
  72. {{- range $key, $value := .Values.alertmanager.extraArgs }}
  73. - --{{ $key }}={{ $value }}
  74. {{- end }}
  75. {{- if .Values.alertmanager.baseURL }}
  76. - --web.external-url={{ .Values.alertmanager.baseURL }}
  77. {{- end }}
  78. ports:
  79. - containerPort: 9093
  80. {{- if .Values.alertmanager.statefulSet.headless.enableMeshPeer }}
  81. - containerPort: 6783
  82. {{- end }}
  83. readinessProbe:
  84. httpGet:
  85. path: {{ .Values.alertmanager.prefixURL }}/#/status
  86. port: 9093
  87. initialDelaySeconds: 30
  88. timeoutSeconds: 30
  89. resources:
  90. {{ toYaml .Values.alertmanager.resources | indent 12 }}
  91. volumeMounts:
  92. - name: config-volume
  93. mountPath: /etc/config
  94. - name: storage-volume
  95. mountPath: "{{ .Values.alertmanager.persistentVolume.mountPath }}"
  96. subPath: "{{ .Values.alertmanager.persistentVolume.subPath }}"
  97. {{- range .Values.alertmanager.extraSecretMounts }}
  98. - name: {{ .name }}
  99. mountPath: {{ .mountPath }}
  100. subPath: {{ .subPath }}
  101. readOnly: {{ .readOnly }}
  102. {{- end }}
  103. {{- if .Values.configmapReload.alertmanager.enabled }}
  104. - name: {{ template "prometheus.name" . }}-{{ .Values.alertmanager.name }}-{{ .Values.configmapReload.alertmanager.name }}
  105. image: "{{ .Values.configmapReload.alertmanager.image.repository }}:{{ .Values.configmapReload.alertmanager.image.tag }}"
  106. imagePullPolicy: "{{ .Values.configmapReload.alertmanager.image.pullPolicy }}"
  107. args:
  108. - --volume-dir=/etc/config
  109. - --webhook-url=http://localhost:9093{{ .Values.alertmanager.prefixURL }}/-/reload
  110. resources:
  111. {{ toYaml .Values.configmapReload.alertmanager.resources | indent 12 }}
  112. volumeMounts:
  113. - name: config-volume
  114. mountPath: /etc/config
  115. readOnly: true
  116. {{- end }}
  117. {{- if .Values.imagePullSecrets }}
  118. imagePullSecrets:
  119. {{ toYaml .Values.imagePullSecrets | indent 8 }}
  120. {{- end }}
  121. {{- if .Values.alertmanager.nodeSelector }}
  122. nodeSelector:
  123. {{ toYaml .Values.alertmanager.nodeSelector | indent 8 }}
  124. {{- end }}
  125. {{- if .Values.alertmanager.securityContext }}
  126. securityContext:
  127. {{ toYaml .Values.alertmanager.securityContext | indent 8 }}
  128. {{- end }}
  129. {{- if .Values.alertmanager.tolerations }}
  130. tolerations:
  131. {{ toYaml .Values.alertmanager.tolerations | indent 8 }}
  132. {{- end }}
  133. volumes:
  134. - name: config-volume
  135. {{- if empty .Values.alertmanager.configFromSecret }}
  136. configMap:
  137. name: {{ if .Values.alertmanager.configMapOverrideName }}{{ .Release.Name }}-{{ .Values.alertmanager.configMapOverrideName }}{{- else }}{{ template "prometheus.alertmanager.fullname" . }}{{- end }}
  138. {{- else }}
  139. secret:
  140. secretName: {{ .Values.alertmanager.configFromSecret }}
  141. {{- end }}
  142. {{- range .Values.alertmanager.extraSecretMounts }}
  143. - name: {{ .name }}
  144. secret:
  145. secretName: {{ .secretName }}
  146. {{- with .optional }}
  147. optional: {{ . }}
  148. {{- end }}
  149. {{- end }}
  150. {{- if .Values.alertmanager.persistentVolume.enabled }}
  151. volumeClaimTemplates:
  152. - metadata:
  153. name: storage-volume
  154. {{- if .Values.alertmanager.persistentVolume.annotations }}
  155. annotations:
  156. {{ toYaml .Values.alertmanager.persistentVolume.annotations | indent 10 }}
  157. {{- end }}
  158. spec:
  159. accessModes:
  160. {{ toYaml .Values.alertmanager.persistentVolume.accessModes | indent 10 }}
  161. resources:
  162. requests:
  163. storage: "{{ .Values.alertmanager.persistentVolume.size }}"
  164. {{- if .Values.server.persistentVolume.storageClass }}
  165. {{- if (eq "-" .Values.server.persistentVolume.storageClass) }}
  166. storageClassName: ""
  167. {{- else }}
  168. storageClassName: "{{ .Values.alertmanager.persistentVolume.storageClass }}"
  169. {{- end }}
  170. {{- end }}
  171. {{- else }}
  172. - name: storage-volume
  173. emptyDir:
  174. {{- if .Values.alertmanager.emptyDir.sizeLimit }}
  175. sizeLimit: {{ .Values.alertmanager.emptyDir.sizeLimit }}
  176. {{- else }}
  177. {}
  178. {{- end -}}
  179. {{- end }}
  180. {{- end }}