blob: 8493c7a8c47d89d63515d65db0a5728acc20981f [file] [log] [blame]
Giorgi Lekveishviliee15ee22024-03-28 12:35:10 +04001{{- $root := . -}}
2
3apiVersion: apps/v1
4kind: StatefulSet
5metadata:
6 name: {{ .Release.Name }}-gerrit-replica-statefulset
7 labels:
8 app.kubernetes.io/component: gerrit-replica
9 app.kubernetes.io/instance: {{ .Release.Name }}
10 chart: {{ template "gerrit-replica.chart" . }}
11 heritage: {{ .Release.Service }}
12 release: {{ .Release.Name }}
13 {{- if .Values.additionalLabels }}
14{{ toYaml .Values.additionalLabels | indent 4 }}
15 {{- end }}
16spec:
17 serviceName: {{ .Release.Name }}-gerrit-replica-service
18 replicas: {{ .Values.gerritReplica.replicas }}
19 updateStrategy:
20 rollingUpdate:
21 partition: {{ .Values.gerritReplica.updatePartition }}
22 selector:
23 matchLabels:
24 app.kubernetes.io/component: gerrit-replica
25 app.kubernetes.io/instance: {{ .Release.Name }}
26 template:
27 metadata:
28 labels:
29 app.kubernetes.io/component: gerrit-replica
30 app.kubernetes.io/instance: {{ .Release.Name }}
31 chart: {{ template "gerrit-replica.chart" . }}
32 heritage: {{ .Release.Service }}
33 release: {{ .Release.Name }}
34 {{- if .Values.additionalLabels }}
35{{ toYaml .Values.additionalLabels | indent 8 }}
36 {{- end }}
37 {{- if .Values.gerritReplica.additionalPodLabels }}
38{{ toYaml .Values.gerritReplica.additionalPodLabels | indent 8 }}
39 {{- end }}
40 annotations:
41 chartRevision: "{{ .Release.Revision }}"
42 {{- if .Values.gerritReplica.additionalAnnotations }}
43{{ toYaml .Values.gerritReplica.additionalAnnotations | indent 8 }}
44 {{- end }}
45 spec:
46 {{- with .Values.gerritReplica.tolerations }}
47 tolerations:
48 {{- toYaml . | nindent 8 }}
49 {{- end }}
50 {{- with .Values.gerritReplica.topologySpreadConstraints }}
51 topologySpreadConstraints:
52 {{- toYaml . | nindent 8 }}
53 {{- end }}
54 {{- with .Values.gerritReplica.nodeSelector }}
55 nodeSelector:
56 {{- toYaml . | nindent 8 }}
57 {{- end }}
58 {{- with .Values.gerritReplica.affinity }}
59 affinity:
60 {{- toYaml . | nindent 8 }}
61 {{- end }}
62 {{- with .Values.gerritReplica.priorityClassName }}
63 priorityClassName: {{ . }}
64 {{- end }}
65 terminationGracePeriodSeconds: {{ .Values.gerritReplica.gracefulStopTimeout }}
66 securityContext:
67 fsGroup: 100
68 {{ if .Values.images.registry.ImagePullSecret.name -}}
69 imagePullSecrets:
70 - name: {{ .Values.images.registry.ImagePullSecret.name }}
71 {{- range .Values.images.additionalImagePullSecrets }}
72 - name: {{ . }}
73 {{- end }}
74 {{- end }}
75 initContainers:
76 {{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.chownOnStartup }}
77 - name: nfs-init
78 image: {{ .Values.images.busybox.registry -}}/busybox:{{- .Values.images.busybox.tag }}
79 command:
80 - sh
81 - -c
82 args:
83 - |
84 chown 1000:100 /var/mnt/logs
85 chown 1000:100 /var/mnt/git
86 env:
87 - name: POD_NAME
88 valueFrom:
89 fieldRef:
90 fieldPath: metadata.name
91 volumeMounts:
92 - name: logs
93 subPathExpr: "gerrit-replica/$(POD_NAME)"
94 mountPath: "/var/mnt/logs"
95 - name: git-repositories
96 mountPath: "/var/mnt/git"
97 {{- if .Values.nfsWorkaround.idDomain }}
98 - name: nfs-config
99 mountPath: "/etc/idmapd.conf"
100 subPath: idmapd.conf
101 {{- end }}
102 {{- end }}
103 - name: gerrit-init
104 image: {{ template "registry" . }}{{ .Values.gerritReplica.images.gerritInit }}:{{ .Values.images.version }}
105 imagePullPolicy: {{ .Values.images.imagePullPolicy }}
106 env:
107 - name: POD_NAME
108 valueFrom:
109 fieldRef:
110 fieldPath: metadata.name
111 volumeMounts:
112 - name: gerrit-site
113 mountPath: "/var/gerrit"
114 - name: git-repositories
115 mountPath: "/var/mnt/git"
116 - name: logs
117 subPathExpr: "gerrit-replica/$(POD_NAME)"
118 mountPath: "/var/mnt/logs"
119 - name: gerrit-init-config
120 mountPath: "/var/config/gerrit-init.yaml"
121 subPath: gerrit-init.yaml
122 {{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.idDomain }}
123 - name: nfs-config
124 mountPath: "/etc/idmapd.conf"
125 subPath: idmapd.conf
126 {{- end }}
127 {{- if and .Values.gerritReplica.pluginManagement.cache.enabled }}
128 - name: gerrit-plugin-cache
129 mountPath: "/var/mnt/plugins"
130 {{- end }}
131 - name: gerrit-config
132 mountPath: "/var/mnt/etc/config"
133 - name: gerrit-replica-secure-config
134 mountPath: "/var/mnt/etc/secret"
135 {{ if .Values.caCert -}}
136 - name: tls-ca
137 subPath: ca.crt
138 mountPath: "/var/config/ca.crt"
139 {{- end }}
140 {{- range .Values.gerritReplica.additionalConfigMaps }}
141 - name: {{ .name }}
142 mountPath: "/var/mnt/data/{{ .subDir }}"
143 {{- end }}
144 containers:
145 - name: gerrit-replica
146 image: {{ template "registry" . }}{{ .Values.gerritReplica.images.gerritReplica }}:{{ .Values.images.version }}
147 imagePullPolicy: {{ .Values.images.imagePullPolicy }}
148 env:
149 - name: POD_NAME
150 valueFrom:
151 fieldRef:
152 fieldPath: metadata.name
153 lifecycle:
154 preStop:
155 exec:
156 command:
157 - "/bin/ash"
158 - "-c"
159 - "kill -2 $(pidof java) && tail --pid=$(pidof java) -f /dev/null"
160 ports:
161 - name: http
162 containerPort: 8080
163 {{ if .Values.gerritReplica.service.ssh -}}
164 - name: ssh
165 containerPort: 29418
166 {{- end }}
167 volumeMounts:
168 - name: gerrit-site
169 mountPath: "/var/gerrit"
170 - name: git-repositories
171 mountPath: "/var/mnt/git"
172 - name: logs
173 subPathExpr: "gerrit-replica/$(POD_NAME)"
174 mountPath: "/var/mnt/logs"
175 {{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.idDomain }}
176 - name: nfs-config
177 mountPath: "/etc/idmapd.conf"
178 subPath: idmapd.conf
179 {{- end }}
180 - name: gerrit-config
181 mountPath: "/var/mnt/etc/config"
182 - name: gerrit-replica-secure-config
183 mountPath: "/var/mnt/etc/secret"
184 {{- range .Values.gerritReplica.additionalConfigMaps }}
185 - name: {{ .name }}
186 mountPath: "/var/mnt/data/{{ .subDir }}"
187 {{- end }}
188 livenessProbe:
189 httpGet:
190 path: /config/server/healthcheck~status
191 port: http
192{{- if .Values.gerritReplica.probeScheme }}
193 scheme: {{ .Values.gerritReplica.probeScheme }}
194{{- end }}
195{{ toYaml .Values.gerritReplica.livenessProbe | indent 10 }}
196 readinessProbe:
197 httpGet:
198 path: /config/server/healthcheck~status
199 port: http
200{{- if .Values.gerritReplica.probeScheme }}
201 scheme: {{ .Values.gerritReplica.probeScheme }}
202{{- end }}
203{{ toYaml .Values.gerritReplica.readinessProbe | indent 10 }}
204 startupProbe:
205 httpGet:
206 path: /config/server/healthcheck~status
207 port: http
208{{- if .Values.gerritReplica.probeScheme }}
209 scheme: {{ .Values.gerritReplica.probeScheme }}
210{{- end }}
211{{ toYaml .Values.gerritReplica.startupProbe | indent 10 }}
212 resources:
213{{ toYaml .Values.gerritReplica.resources | indent 10 }}
214 {{ if .Values.istio.enabled -}}
215 - name: istio-proxy
216 image: auto
217 lifecycle:
218 preStop:
219 exec:
220 command:
221 - "/bin/sh"
222 - "-c"
223 - "while [ $(netstat -plunt | grep tcp | grep -v envoy | wc -l | xargs) -ne 0 ]; do sleep 1; done"
224 {{- end }}
225 {{ if .Values.promtailSidecar.enabled -}}
226 - name: promtail
227 image: {{ .Values.promtailSidecar.image }}:v{{ .Values.promtailSidecar.version }}
228 imagePullPolicy: {{ .Values.images.imagePullPolicy }}
229 command:
230 - sh
231 - -ec
232 args:
233 - |-
234 /usr/bin/promtail \
235 -config.file=/etc/promtail/promtail.yaml \
236 -client.url={{ .Values.promtailSidecar.loki.url }}/loki/api/v1/push \
237 -client.external-labels=instance=$HOSTNAME
238 env:
239 - name: POD_NAME
240 valueFrom:
241 fieldRef:
242 fieldPath: metadata.name
243 resources:
244{{ toYaml .Values.promtailSidecar.resources | indent 10 }}
245 volumeMounts:
246 - name: promtail-config
247 mountPath: /etc/promtail/promtail.yaml
248 subPath: promtail.yaml
249 - name: promtail-secret
250 mountPath: /etc/promtail/promtail.secret
251 subPath: promtail.secret
252 {{- if not .Values.promtailSidecar.tls.skipVerify }}
253 - name: tls-ca
254 mountPath: /etc/promtail/promtail.ca.crt
255 subPath: ca.crt
256 {{- end }}
257 - name: logs
258 subPathExpr: "gerrit-replica/$(POD_NAME)"
259 mountPath: "/var/gerrit/logs"
260 {{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.idDomain }}
261 - name: nfs-config
262 mountPath: "/etc/idmapd.conf"
263 subPath: idmapd.conf
264 {{- end }}
265 {{- end }}
266 volumes:
267 {{ if not .Values.gerritReplica.persistence.enabled -}}
268 - name: gerrit-site
269 emptyDir: {}
270 {{- end }}
271 {{- if and .Values.gerritReplica.pluginManagement.cache.enabled }}
272 - name: gerrit-plugin-cache
273 persistentVolumeClaim:
274 claimName: {{ .Release.Name }}-plugin-cache-pvc
275 {{- end }}
276 - name: git-repositories
277 persistentVolumeClaim:
278 {{- if .Values.gitRepositoryStorage.externalPVC.use }}
279 claimName: {{ .Values.gitRepositoryStorage.externalPVC.name }}
280 {{- else }}
281 claimName: {{ .Release.Name }}-git-repositories-pvc
282 {{- end }}
283 - name: logs
284 {{ if .Values.logStorage.enabled -}}
285 persistentVolumeClaim:
286 {{- if .Values.logStorage.externalPVC.use }}
287 claimName: {{ .Values.logStorage.externalPVC.name }}
288 {{- else }}
289 claimName: {{ .Release.Name }}-log-pvc
290 {{- end }}
291 {{ else -}}
292 emptyDir: {}
293 {{- end }}
294 - name: gerrit-init-config
295 configMap:
296 name: {{ .Release.Name }}-gerrit-init-configmap
297 - name: gerrit-config
298 configMap:
299 name: {{ .Release.Name }}-gerrit-replica-configmap
300 - name: gerrit-replica-secure-config
301 secret:
302 secretName: {{ .Release.Name }}-gerrit-replica-secure-config
303 {{ if .Values.caCert -}}
304 - name: tls-ca
305 secret:
306 secretName: {{ .Release.Name }}-tls-ca
307 {{- end }}
308 {{- range .Values.gerritReplica.additionalConfigMaps }}
309 - name: {{ .name }}
310 configMap:
311 name: {{ if .data }}{{ $root.Release.Name }}-{{ .name }}{{ else }}{{ .name }}{{ end }}
312 {{- end }}
313 {{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.idDomain }}
314 - name: nfs-config
315 configMap:
316 name: {{ .Release.Name }}-nfs-configmap
317 {{- end }}
318 {{ if .Values.promtailSidecar.enabled -}}
319 - name: promtail-config
320 configMap:
321 name: {{ .Release.Name }}-promtail-gerrit-configmap
322 - name: promtail-secret
323 secret:
324 secretName: {{ .Release.Name }}-promtail-secret
325 {{- end }}
326 {{ if .Values.gerritReplica.persistence.enabled -}}
327 volumeClaimTemplates:
328 - metadata:
329 name: gerrit-site
330 labels:
331 app.kubernetes.io/component: gerrit-replica
332 app.kubernetes.io/instance: {{ .Release.Name }}
333 chart: {{ template "gerrit-replica.chart" . }}
334 heritage: {{ .Release.Service }}
335 release: {{ .Release.Name }}
336 {{- if .Values.additionalLabels }}
337{{ toYaml .Values.additionalLabels | indent 8 }}
338 {{- end }}
339 spec:
340 accessModes:
341 - ReadWriteOnce
342 resources:
343 requests:
344 storage: {{ .Values.gerritReplica.persistence.size }}
345 storageClassName: {{ .Values.storageClasses.default.name }}
346 {{- end }}