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