blob: e156db27dbd55f09ce0d3f221ae3cbda5d9d0269 [file] [log] [blame]
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +02001{{/*
2# Copyright © 2018 Orange
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15*/}}
16
milaszki305089c2020-07-07 12:31:21 +000017apiVersion: apps/v1
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +020018kind: StatefulSet
19metadata:
20 name: {{ include "common.fullname" . }}
21 namespace: {{ include "common.namespace" . }}
22 labels:
23 app: {{ include "common.name" . }}
24 chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
Krzysztof Opasiak137d7cc2020-01-24 23:49:11 +010025 release: {{ include "common.release" . }}
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +020026 heritage: {{ .Release.Service }}
27spec:
28 serviceName: {{ .Values.service.name }}
29 replicas: {{ .Values.replicaCount }}
milaszki305089c2020-07-07 12:31:21 +000030 selector:
31 matchLabels:
32 app: {{ include "common.name" . }}
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +020033 template:
34 metadata:
35 labels:
36 app: {{ include "common.name" . }}
Krzysztof Opasiak137d7cc2020-01-24 23:49:11 +010037 release: {{ include "common.release" . }}
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +020038 spec:
Krzysztof Opasiak86a28cd2020-09-09 21:23:32 +020039{{ include "common.podSecurityContext" . | indent 6 }}
andreas-geisslerf84cccd2021-07-07 15:40:41 +020040 imagePullSecrets:
41 - name: "{{ include "common.namespace" . }}-docker-registry-key"
Andreas Geissler7baf2db2021-12-10 07:50:46 +000042 initContainers:
43 # we shouldn't need this but for unknown reason, it's fsGroup is not
44 # applied
45 - name: fix-permission
46 command:
47 - /bin/sh
48 args:
49 - -c
50 - |
51 chown -R {{ .Values.securityContext.user_id }}:{{ .Values.securityContext.group_id }} /data
52 image: {{ include "repositoryGenerator.image.busybox" . }}
53 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
54 securityContext:
55 runAsUser: 0
56 volumeMounts:
57 - name: {{ include "common.fullname" . }}-data
58 mountPath: /data
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +020059 containers:
60 - name: {{ include "common.name" . }}
Sylvain Desbureauxb0864452020-11-19 17:17:17 +010061 image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +020062 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
Krzysztof Opasiak86a28cd2020-09-09 21:23:32 +020063 command:
64 - docker-entrypoint.sh
65 args:
66 - --nounixsocket
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +020067 env:
68 - name: MONGO_INITDB_DATABASE
69 value: "{{ .Values.config.dbName }}"
70 ports:
71 - containerPort: {{ .Values.service.internalPort }}
72 # disable liveness probe when breakpoints set in debugger
73 # so K8s doesn't restart unresponsive container
74 {{- if eq .Values.liveness.enabled true }}
75 livenessProbe:
76 exec:
77 command:
78 - mongo
79 - --eval
80 - "db.adminCommand('ping')"
81 initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
82 periodSeconds: {{ .Values.liveness.periodSeconds }}
83 timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
84 {{end -}}
85 readinessProbe:
86 tcpSocket:
87 port: {{ .Values.service.internalPort }}
88 initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
89 periodSeconds: {{ .Values.readiness.periodSeconds }}
90 volumeMounts:
Sylvain Desbureauxb7ed2ee2019-11-29 11:35:13 +010091 - name: {{ include "common.fullname" . }}-data
Andreas Geissler7baf2db2021-12-10 07:50:46 +000092 mountPath: /data/db
Sylvain Desbureauxc27b6a32020-09-23 10:39:31 +020093 resources: {{ include "common.resources" . | nindent 12 }}
Krzysztof Opasiak86a28cd2020-09-09 21:23:32 +020094{{ include "common.containerSecurityContext" . | indent 10 }}
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +020095 {{- if .Values.nodeSelector }}
96 nodeSelector:
97{{ toYaml .Values.nodeSelector | indent 10 }}
98 {{- end -}}
99 {{- if .Values.affinity }}
100 affinity:
101{{ toYaml .Values.affinity | indent 10 }}
102 {{- end }}
103 volumes:
104 - name: localtime
105 hostPath:
106 path: /etc/localtime
Sylvain Desbureauxb7ed2ee2019-11-29 11:35:13 +0100107 {{- if .Values.persistence.enabled }}
108 volumeClaimTemplates:
109 - metadata:
110 name: {{ include "common.fullname" . }}-data
111 labels:
112 name: {{ include "common.fullname" . }}
113 chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
Krzysztof Opasiak137d7cc2020-01-24 23:49:11 +0100114 release: "{{ include "common.release" . }}"
Sylvain Desbureauxb7ed2ee2019-11-29 11:35:13 +0100115 heritage: "{{ .Release.Service }}"
116 spec:
117 accessModes:
118 - {{ .Values.persistence.accessMode | quote }}
119 storageClassName: {{ include "common.storageClass" . }}
120 resources:
121 requests:
122 storage: {{ .Values.persistence.size | quote }}
123 {{- else }}
124 volumes:
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +0200125 - name: {{ include "common.fullname" . }}-data
Sylvain Desbureauxe44d1702018-05-07 20:39:16 +0200126 emptyDir: {}
Sylvain Desbureauxb7ed2ee2019-11-29 11:35:13 +0100127 {{- end }}