blob: a307c3cc8775205670a249e58e0cda635393b6eb [file] [log] [blame]
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ .Release.Name }}-gerrit-master-stateful-set
labels:
app: gerrit-master
chart: {{ template "gerrit-master.chart" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
serviceName: {{ .Release.Name }}-gerrit-master-service
replicas: {{ .Values.gerritMaster.replicas | default 1 }}
strategy:
rollingUpdate:
maxSurge: {{ .Values.gerritMaster.maxSurge }}
maxUnavailable: {{ .Values.gerritMaster.maxUnavailable }}
selector:
matchLabels:
app: gerrit-master
template:
metadata:
labels:
app: gerrit-master
spec:
securityContext:
fsGroup: 100
{{ if .Values.images.registry.ImagePullSecret.name -}}
imagePullSecrets:
- name: {{ .Values.images.registry.ImagePullSecret.name }}
{{- end }}
initContainers:
- name: site-cleanup
image: busybox
securityContext:
runAsUser: 1000
runAsGroup: 100
command:
- sh
- -c
args:
- |
# Remove directories that should be mounted rather than exist with the
# rest of the site
[ ! -L /var/gerrit/git ] && rm -rf /var/gerrit/git
rm -f /var/gerrit/logs/gerrit.pid
volumeMounts:
- name: gerrit-site
mountPath: "/var/gerrit"
- name: gerrit-init
image: {{ template "registry" . }}{{ .Values.gerritMaster.images.gerritInit }}:{{ .Values.images.version }}
imagePullPolicy: {{ .Values.images.imagePullPolicy }}
command:
- /bin/bash
- -ce
args:
- |
symlink_config_to_site(){
{{ if .Values.gerritMaster.keystore -}}
ln -s /var/config/keystore /var/gerrit/etc/keystore
{{- end }}
ln -sf /var/config/gerrit.config /var/gerrit/etc/gerrit.config
ln -sf /var/config/secure.config /var/gerrit/etc/secure.config
}
mkdir -p /var/gerrit/etc
symlink_config_to_site
if [ ! -d /var/gerrit/git ]; then
ln -sf /var/mnt/git /var/gerrit/
fi
/var/tools/gerrit_init.py \
-s /var/gerrit \
-p replication \
-p commit-message-length-validator \
-p download-commands \
-p reviewnotes
symlink_config_to_site
volumeMounts:
- name: gerrit-site
mountPath: "/var/gerrit"
- name: git-filesystem
mountPath: "/var/mnt/git"
- name: gerrit-config
mountPath: "/var/config/gerrit.config"
subPath: gerrit.config
- name: gerrit-master-secure-config
mountPath: "/var/config/secure.config"
subPath: secure.config
{{ if .Values.gerritMaster.keystore -}}
- name: gerrit-master-secure-config
mountPath: "/var/config/keystore"
subPath: keystore
{{- end }}
containers:
- name: gerrit-master
image: {{ template "registry" . }}{{ .Values.gerritMaster.images.gerritMaster }}:{{ .Values.images.version }}
imagePullPolicy: {{ .Values.images.imagePullPolicy }}
ports:
- name: gerrit-port
containerPort: 8080
volumeMounts:
- name: gerrit-site
mountPath: "/var/gerrit"
- name: git-filesystem
mountPath: "/var/mnt/git"
- name: gerrit-config
mountPath: "/var/config/gerrit.config"
subPath: gerrit.config
- name: gerrit-config
mountPath: "/var/config/replication.config"
subPath: replication.config
- name: gerrit-master-secure-config
mountPath: "/var/config/secure.config"
subPath: secure.config
{{ if .Values.gerritMaster.keystore -}}
- name: gerrit-master-secure-config
mountPath: "/var/config/keystore"
subPath: keystore
{{- end }}
resources:
{{ toYaml .Values.gerritMaster.resources | indent 10 }}
livenessProbe:
httpGet:
path: /config/server/version
port: gerrit-port
{{ toYaml .Values.gerritMaster.livenessProbe | indent 10 }}
readinessProbe:
httpGet:
path: /config/server/version
port: gerrit-port
{{ toYaml .Values.gerritMaster.readinessProbe | indent 10 }}
volumes:
{{ if not .Values.gerritMaster.persistence.enabled -}}
- name: gerrit-site
emptyDir: {}
{{- end }}
- name: git-filesystem
persistentVolumeClaim:
{{- if .Values.gitRepositoryStorage.externalPVC.use }}
claimName: {{ .Values.gitRepositoryStorage.externalPVC.name }}
{{- else }}
claimName: {{ .Release.Name }}-git-filesystem-pvc
{{- end }}
- name: gerrit-config
configMap:
name: {{ .Release.Name }}-gerrit-master-configmap
- name: gerrit-master-secure-config
secret:
secretName: {{ .Release.Name }}-gerrit-master-secure-config
volumeClaimTemplates:
{{ if .Values.gerritMaster.persistence.enabled -}}
- metadata:
name: gerrit-site
labels:
app: gerrit-master
chart: {{ template "gerrit-master.chart" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.gerritMaster.persistence.size }}
storageClassName: {{ .Values.storageClasses.default.name }}
{{- end }}