blob: d4d74a9d8f7ecc0dc6176f1de2d98b0e62f3155b [file] [log] [blame]
{{- $root := . -}}
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ .Release.Name }}-gerrit-replica-statefulset
labels:
app.kubernetes.io/component: gerrit-replica
app.kubernetes.io/instance: {{ .Release.Name }}
chart: {{ template "gerrit-replica.chart" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
{{- if .Values.additionalLabels }}
{{ toYaml .Values.additionalLabels | indent 4 }}
{{- end }}
spec:
serviceName: {{ .Release.Name }}-gerrit-replica-service
replicas: {{ .Values.gerritReplica.replicas }}
updateStrategy:
rollingUpdate:
partition: {{ .Values.gerritReplica.updatePartition }}
selector:
matchLabels:
app.kubernetes.io/component: gerrit-replica
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/component: gerrit-replica
app.kubernetes.io/instance: {{ .Release.Name }}
chart: {{ template "gerrit-replica.chart" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
{{- if .Values.additionalLabels }}
{{ toYaml .Values.additionalLabels | indent 8 }}
{{- end }}
{{- if .Values.gerritReplica.additionalPodLabels }}
{{ toYaml .Values.gerritReplica.additionalPodLabels | indent 8 }}
{{- end }}
annotations:
chartRevision: "{{ .Release.Revision }}"
{{- if .Values.gerritReplica.additionalAnnotations }}
{{ toYaml .Values.gerritReplica.additionalAnnotations | indent 8 }}
{{- end }}
spec:
{{- with .Values.gerritReplica.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.gerritReplica.topologySpreadConstraints }}
topologySpreadConstraints:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.gerritReplica.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.gerritReplica.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.gerritReplica.priorityClassName }}
priorityClassName: {{ . }}
{{- end }}
terminationGracePeriodSeconds: {{ .Values.gerritReplica.gracefulStopTimeout }}
securityContext:
fsGroup: 100
{{ if .Values.images.registry.ImagePullSecret.name -}}
imagePullSecrets:
- name: {{ .Values.images.registry.ImagePullSecret.name }}
{{- range .Values.images.additionalImagePullSecrets }}
- name: {{ . }}
{{- end }}
{{- end }}
initContainers:
{{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.chownOnStartup }}
- name: nfs-init
image: {{ .Values.images.busybox.registry -}}/busybox:{{- .Values.images.busybox.tag }}
command:
- sh
- -c
args:
- |
chown 1000:100 /var/mnt/logs
chown 1000:100 /var/mnt/git
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
volumeMounts:
- name: logs
subPathExpr: "gerrit-replica/$(POD_NAME)"
mountPath: "/var/mnt/logs"
- name: git-repositories
mountPath: "/var/mnt/git"
{{- if .Values.nfsWorkaround.idDomain }}
- name: nfs-config
mountPath: "/etc/idmapd.conf"
subPath: idmapd.conf
{{- end }}
{{- end }}
- name: gerrit-init
image: {{ template "registry" . }}{{ .Values.gerritReplica.images.gerritInit }}:{{ .Values.images.version }}
imagePullPolicy: {{ .Values.images.imagePullPolicy }}
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
volumeMounts:
- name: gerrit-site
mountPath: "/var/gerrit"
- name: git-repositories
mountPath: "/var/mnt/git"
- name: logs
subPathExpr: "gerrit-replica/$(POD_NAME)"
mountPath: "/var/mnt/logs"
- name: gerrit-init-config
mountPath: "/var/config/gerrit-init.yaml"
subPath: gerrit-init.yaml
{{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.idDomain }}
- name: nfs-config
mountPath: "/etc/idmapd.conf"
subPath: idmapd.conf
{{- end }}
{{- if and .Values.gerritReplica.pluginManagement.cache.enabled }}
- name: gerrit-plugin-cache
mountPath: "/var/mnt/plugins"
{{- end }}
- name: gerrit-config
mountPath: "/var/mnt/etc/config"
- name: gerrit-replica-secure-config
mountPath: "/var/mnt/etc/secret"
{{ if .Values.caCert -}}
- name: tls-ca
subPath: ca.crt
mountPath: "/var/config/ca.crt"
{{- end }}
{{- range .Values.gerritReplica.additionalConfigMaps }}
- name: {{ .name }}
mountPath: "/var/mnt/data/{{ .subDir }}"
{{- end }}
containers:
- name: gerrit-replica
image: {{ template "registry" . }}{{ .Values.gerritReplica.images.gerritReplica }}:{{ .Values.images.version }}
imagePullPolicy: {{ .Values.images.imagePullPolicy }}
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
lifecycle:
preStop:
exec:
command:
- "/bin/ash"
- "-c"
- "kill -2 $(pidof java) && tail --pid=$(pidof java) -f /dev/null"
ports:
- name: http
containerPort: 8080
{{ if .Values.gerritReplica.service.ssh -}}
- name: ssh
containerPort: 29418
{{- end }}
volumeMounts:
- name: gerrit-site
mountPath: "/var/gerrit"
- name: git-repositories
mountPath: "/var/mnt/git"
- name: logs
subPathExpr: "gerrit-replica/$(POD_NAME)"
mountPath: "/var/mnt/logs"
{{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.idDomain }}
- name: nfs-config
mountPath: "/etc/idmapd.conf"
subPath: idmapd.conf
{{- end }}
- name: gerrit-config
mountPath: "/var/mnt/etc/config"
- name: gerrit-replica-secure-config
mountPath: "/var/mnt/etc/secret"
{{- range .Values.gerritReplica.additionalConfigMaps }}
- name: {{ .name }}
mountPath: "/var/mnt/data/{{ .subDir }}"
{{- end }}
livenessProbe:
httpGet:
path: /config/server/healthcheck~status
port: http
{{ toYaml .Values.gerritReplica.livenessProbe | indent 10 }}
readinessProbe:
httpGet:
path: /config/server/healthcheck~status
port: http
{{ toYaml .Values.gerritReplica.readinessProbe | indent 10 }}
startupProbe:
httpGet:
path: /config/server/healthcheck~status
port: http
{{ toYaml .Values.gerritReplica.startupProbe | indent 10 }}
resources:
{{ toYaml .Values.gerritReplica.resources | indent 10 }}
{{ if .Values.istio.enabled -}}
- name: istio-proxy
image: auto
lifecycle:
preStop:
exec:
command:
- "/bin/sh"
- "-c"
- "while [ $(netstat -plunt | grep tcp | grep -v envoy | wc -l | xargs) -ne 0 ]; do sleep 1; done"
{{- end }}
{{ if .Values.promtailSidecar.enabled -}}
- name: promtail
image: {{ .Values.promtailSidecar.image }}:v{{ .Values.promtailSidecar.version }}
imagePullPolicy: {{ .Values.images.imagePullPolicy }}
command:
- sh
- -ec
args:
- |-
/usr/bin/promtail \
-config.file=/etc/promtail/promtail.yaml \
-client.url={{ .Values.promtailSidecar.loki.url }}/loki/api/v1/push \
-client.external-labels=instance=$HOSTNAME
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
resources:
{{ toYaml .Values.promtailSidecar.resources | indent 10 }}
volumeMounts:
- name: promtail-config
mountPath: /etc/promtail/promtail.yaml
subPath: promtail.yaml
- name: promtail-secret
mountPath: /etc/promtail/promtail.secret
subPath: promtail.secret
{{- if not .Values.promtailSidecar.tls.skipVerify }}
- name: tls-ca
mountPath: /etc/promtail/promtail.ca.crt
subPath: ca.crt
{{- end }}
- name: logs
subPathExpr: "gerrit-replica/$(POD_NAME)"
mountPath: "/var/gerrit/logs"
{{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.idDomain }}
- name: nfs-config
mountPath: "/etc/idmapd.conf"
subPath: idmapd.conf
{{- end }}
{{- end }}
volumes:
{{ if not .Values.gerritReplica.persistence.enabled -}}
- name: gerrit-site
emptyDir: {}
{{- end }}
{{- if and .Values.gerritReplica.pluginManagement.cache.enabled }}
- name: gerrit-plugin-cache
persistentVolumeClaim:
claimName: {{ .Release.Name }}-plugin-cache-pvc
{{- end }}
- name: git-repositories
persistentVolumeClaim:
{{- if .Values.gitRepositoryStorage.externalPVC.use }}
claimName: {{ .Values.gitRepositoryStorage.externalPVC.name }}
{{- else }}
claimName: {{ .Release.Name }}-git-repositories-pvc
{{- end }}
- name: logs
{{ if .Values.logStorage.enabled -}}
persistentVolumeClaim:
{{- if .Values.logStorage.externalPVC.use }}
claimName: {{ .Values.logStorage.externalPVC.name }}
{{- else }}
claimName: {{ .Release.Name }}-log-pvc
{{- end }}
{{ else -}}
emptyDir: {}
{{- end }}
- name: gerrit-init-config
configMap:
name: {{ .Release.Name }}-gerrit-init-configmap
- name: gerrit-config
configMap:
name: {{ .Release.Name }}-gerrit-replica-configmap
- name: gerrit-replica-secure-config
secret:
secretName: {{ .Release.Name }}-gerrit-replica-secure-config
{{ if .Values.caCert -}}
- name: tls-ca
secret:
secretName: {{ .Release.Name }}-tls-ca
{{- end }}
{{- range .Values.gerritReplica.additionalConfigMaps }}
- name: {{ .name }}
configMap:
name: {{ if .data }}{{ $root.Release.Name }}-{{ .name }}{{ else }}{{ .name }}{{ end }}
{{- end }}
{{- if and .Values.nfsWorkaround.enabled .Values.nfsWorkaround.idDomain }}
- name: nfs-config
configMap:
name: {{ .Release.Name }}-nfs-configmap
{{- end }}
{{ if .Values.promtailSidecar.enabled -}}
- name: promtail-config
configMap:
name: {{ .Release.Name }}-promtail-gerrit-configmap
- name: promtail-secret
secret:
secretName: {{ .Release.Name }}-promtail-secret
{{- end }}
{{ if .Values.gerritReplica.persistence.enabled -}}
volumeClaimTemplates:
- metadata:
name: gerrit-site
labels:
app.kubernetes.io/component: gerrit-replica
app.kubernetes.io/instance: {{ .Release.Name }}
chart: {{ template "gerrit-replica.chart" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
{{- if .Values.additionalLabels }}
{{ toYaml .Values.additionalLabels | indent 8 }}
{{- end }}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.gerritReplica.persistence.size }}
storageClassName: {{ .Values.storageClasses.default.name }}
{{- end }}