21212f0f6e24d7d624d6455ee2c850f590fec8b8
[it/otf.git] / otf-helm / otf / charts / databases / mongodb / templates / statefulset-secondary-rs.yaml
1 {{- if .Values.replicaSet.enabled }}
2 apiVersion: apps/v1
3 kind: StatefulSet
4 metadata:
5   name: {{ template "mongodb.fullname" . }}-secondary
6   namespace: {{.Values.namespace }}
7   labels:
8     app: {{ template "mongodb.name" . }}
9     chart: {{ template "mongodb.chart" . }}
10     heritage: {{ .Release.Service }}
11     release: {{ .Release.Name }}
12     {{- with .Values.labels }}
13 {{ toYaml . | indent 4 }}
14     {{- end }}
15   {{- with .Values.annotations }}
16   annotations:
17 {{ toYaml . | indent 4 }}
18   {{- end }}
19 spec:
20   selector:
21     matchLabels:
22       app: {{ template "mongodb.name" . }}
23       release: {{ .Release.Name }}
24       component: secondary
25   podManagementPolicy: "Parallel"
26   serviceName: {{ template "mongodb.fullname" . }}-headless
27   replicas: {{ .Values.replicaSet.replicas.secondary }}
28   updateStrategy:
29     type: {{ .Values.updateStrategy.type }}
30     {{- if (eq "Recreate" .Values.updateStrategy.type) }}
31     rollingUpdate: null
32     {{- end }}
33   template:
34     metadata:
35       labels:
36         app: {{ template "mongodb.name" . }}
37         chart: {{ template "mongodb.chart" . }}
38         release: {{ .Release.Name }}
39         component: secondary
40       {{- if .Values.podLabels }}
41 {{ toYaml .Values.podLabels | indent 8 }}
42       {{- end }}
43       {{- if or .Values.podAnnotations .Values.metrics.enabled }}
44       annotations:
45 {{- if .Values.podAnnotations }}
46 {{ toYaml .Values.podAnnotations | indent 8 }}
47 {{- end }}
48 {{- if .Values.metrics.enabled }}
49 {{ toYaml .Values.metrics.podAnnotations | indent 8 }}
50 {{- end }}
51       {{- end }}
52     spec:
53       {{- if .Values.schedulerName }}
54       schedulerName: "{{ .Values.schedulerName }}"
55       {{- end }}
56       {{- if .Values.priorityClassName }}
57       priorityClassName: {{ .Values.priorityClassName }}
58       {{- end }}
59       {{- if .Values.securityContext.enabled }}
60       securityContext:
61         fsGroup: {{ .Values.securityContext.fsGroup }}
62       {{- end }}
63       {{- if .Values.affinity }}
64       affinity:
65 {{ toYaml .Values.affinity | indent 8 }}
66       {{- end -}}
67       {{- if .Values.nodeSelector }}
68       nodeSelector:
69 {{ toYaml .Values.nodeSelector | indent 8 }}
70       {{- end }}
71       {{- if .Values.tolerations }}
72       tolerations:
73 {{ toYaml .Values.tolerations | indent 8 }}
74       {{- end }}
75 {{- include "mongodb.imagePullSecrets" . | indent 6 }}
76       initContainers:
77       {{- if .Values.extraInitContainers }}
78 {{ tpl .Values.extraInitContainers . | indent 6}}
79       {{- end }}
80       {{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
81       - name: volume-permissions
82         image: {{ template "mongodb.volumePermissions.image" . }}
83         imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}
84         command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}", "{{ .Values.persistence.mountPath }}"]
85         securityContext:
86           runAsUser: 0
87         resources: {{ toYaml .Values.volumePermissions.resources | nindent 10 }}
88         volumeMounts:
89         - name: datadir
90           mountPath: {{ .Values.persistence.mountPath }}
91       {{- end }}
92       containers:
93         - name: {{ template "mongodb.name" . }}-secondary
94           image: {{ template "mongodb.image" . }}
95           imagePullPolicy: {{ .Values.image.pullPolicy }}
96           {{- if .Values.securityContext.enabled }}
97           securityContext:
98             runAsNonRoot: true
99             runAsUser: {{ .Values.securityContext.runAsUser }}
100           {{- end }}
101           ports:
102           - containerPort: {{ .Values.service.port }}
103             name: mongodb
104           env:
105           {{- if .Values.image.debug}}
106           - name: BITNAMI_DEBUG
107             value: "true"
108           {{- end }}
109           - name: MONGODB_SYSTEM_LOG_VERBOSITY
110             value: {{ .Values.mongodbSystemLogVerbosity | quote }}
111           - name: MONGODB_DISABLE_SYSTEM_LOG
112             {{- if .Values.mongodbDisableSystemLog }}
113             value: "yes"
114             {{- else }}
115             value: "no"
116             {{- end }}
117           - name: MONGODB_POD_NAME
118             valueFrom:
119               fieldRef:
120                 fieldPath: metadata.name
121           - name: MONGODB_REPLICA_SET_MODE
122             value: "secondary"
123           - name: MONGODB_PRIMARY_HOST
124             value: {{ template "mongodb.fullname" . }}
125           - name: MONGODB_REPLICA_SET_NAME
126             value: {{ .Values.replicaSet.name | quote }}
127             {{- if .Values.replicaSet.useHostnames }}
128           - name: MONGODB_ADVERTISED_HOSTNAME
129             value: "$(MONGODB_POD_NAME).{{ template "mongodb.fullname" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}"
130             {{- end }}
131             {{- if .Values.usePassword }}
132           - name: MONGODB_PRIMARY_ROOT_PASSWORD
133             valueFrom:
134               secretKeyRef:
135                 name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
136                 key: mongodb-root-password
137           - name: MONGODB_REPLICA_SET_KEY
138             valueFrom:
139               secretKeyRef:
140                 name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
141                 key: mongodb-replica-set-key
142             {{- end }}
143           - name: MONGODB_ENABLE_IPV6
144           {{- if .Values.mongodbEnableIPv6 }}
145             value: "yes"
146           {{- else }}
147             value: "no"
148           {{- end }}
149           - name: MONGODB_ENABLE_DIRECTORY_PER_DB
150           {{- if .Values.mongodbDirectoryPerDB }}
151             value: "yes"
152           {{- else }}
153             value: "no"
154           {{- end }}
155           {{- if .Values.mongodbExtraFlags }}
156           - name: MONGODB_EXTRA_FLAGS
157             value: {{ .Values.mongodbExtraFlags | join " " | quote }}
158           {{- end }}
159           {{- if .Values.extraEnvVars }}
160           {{- include "mongodb.tplValue" ( dict "value" .Values.extraEnvVars "context" $ ) | nindent 10 }}
161           {{- end }}
162           {{- if .Values.livenessProbe.enabled }}
163           livenessProbe:
164             exec:
165               command:
166                 - pgrep
167                 - mongod
168             initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
169             periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
170             timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
171             successThreshold: {{ .Values.livenessProbe.successThreshold }}
172             failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
173           {{- end }}
174           {{- if .Values.readinessProbe.enabled }}
175           readinessProbe:
176             exec:
177               command:
178                 - mongo
179                 - --eval
180                 - "db.adminCommand('ping')"
181             initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
182             periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
183             timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
184             successThreshold: {{ .Values.readinessProbe.successThreshold }}
185             failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
186           {{- end }}
187           volumeMounts:
188             - name: datadir
189               mountPath: {{ .Values.persistence.mountPath }}
190               subPath: {{ .Values.persistence.subPath }}
191             {{- if .Values.configmap }}
192             - name: config
193               mountPath: /opt/bitnami/mongodb/conf/mongodb.conf
194               subPath: mongodb.conf
195             {{- end }}
196           {{- if .Values.extraVolumeMounts }}
197 {{ toYaml .Values.extraVolumeMounts | indent 12}}
198           {{- end }}
199           resources:
200 {{ toYaml .Values.resources | indent 12 }}
201 {{- if .Values.metrics.enabled }}
202         - name: metrics
203           image: {{ template "mongodb.metrics.image" . }}
204           imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}
205           {{- if .Values.securityContext.enabled }}
206           securityContext:
207             runAsNonRoot: true
208             runAsUser: {{ .Values.securityContext.runAsUser }}
209           {{- end }}
210           env:
211           {{- if .Values.usePassword }}
212           - name: MONGODB_ROOT_PASSWORD
213             valueFrom:
214               secretKeyRef:
215                 name: {{ if .Values.existingSecret }}{{ .Values.existingSecret }}{{- else }}{{ template "mongodb.fullname" . }}{{- end }}
216                 key: mongodb-root-password
217           command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://root:${MONGODB_ROOT_PASSWORD}@localhost:{{ .Values.service.port }}/admin {{ .Values.metrics.extraArgs }}' ]
218           {{- else }}
219           command: [ 'sh', '-c', '/bin/mongodb_exporter --mongodb.uri mongodb://localhost:{{ .Values.service.port }} {{ .Values.metrics.extraArgs }}' ]
220           {{- end }}
221           ports:
222           - name: metrics
223             containerPort: 9216
224           {{- if .Values.metrics.livenessProbe.enabled }}
225           livenessProbe:
226             httpGet:
227               path: /metrics
228               port: metrics
229             initialDelaySeconds: {{ .Values.metrics.livenessProbe.initialDelaySeconds }}
230             periodSeconds: {{ .Values.metrics.livenessProbe.periodSeconds }}
231             timeoutSeconds: {{ .Values.metrics.livenessProbe.timeoutSeconds }}
232             failureThreshold: {{ .Values.metrics.livenessProbe.failureThreshold }}
233             successThreshold: {{ .Values.metrics.livenessProbe.successThreshold }}
234           {{- end }}
235           {{- if .Values.metrics.readinessProbe.enabled }}
236           readinessProbe:
237             httpGet:
238               path: /metrics
239               port: metrics
240             initialDelaySeconds: {{ .Values.metrics.readinessProbe.initialDelaySeconds }}
241             periodSeconds: {{ .Values.metrics.readinessProbe.periodSeconds }}
242             timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }}
243             failureThreshold: {{ .Values.metrics.readinessProbe.failureThreshold }}
244             successThreshold: {{ .Values.metrics.readinessProbe.successThreshold }}
245           {{- end }}
246           resources:
247 {{ toYaml .Values.metrics.resources | indent 12 }}
248 {{- end }}
249 {{- if .Values.sidecars }}
250 {{ toYaml .Values.sidecars | indent 8 }}
251 {{- end }}
252       volumes:
253         {{- if .Values.configmap }}
254         - name: config
255           configMap:
256             name: {{ template "mongodb.fullname" . }}
257         {{- end }}
258         {{- if .Values.extraVolumes }}
259 {{ toYaml .Values.extraVolumes | indent 8}}
260         {{- end }}
261 {{- if .Values.persistence.enabled }}
262   volumeClaimTemplates:
263     - metadata:
264         name: datadir
265         annotations:
266         {{- range $key, $value := .Values.persistence.annotations }}
267           {{ $key }}: "{{ $value }}"
268         {{- end }}
269       spec:
270         accessModes:
271         {{- range .Values.persistence.accessModes }}
272           - {{ . | quote }}
273         {{- end }}
274         resources:
275           requests:
276             storage: {{ .Values.persistence.size | quote }}
277         {{ include "mongodb.storageClass" . }}
278 {{- else }}
279         - name: datadir
280           emptyDir: {}
281 {{- end }}
282 {{- end }}