apiVersion: apps/v1 kind: StatefulSet metadata: name: {{ include "mongo.name" . }} labels: {{- include "mongo.labels" . | nindent 4 }} spec: serviceName: {{ include "mongo.name" . }} replicas: {{ .Values.statefulset.replicas }} podManagementPolicy: {{ .Values.statefulset.podManagementPolicy }} updateStrategy: type: {{ .Values.statefulset.updateStrategy.type }} selector: matchLabels: app.kubernetes.io/name: {{ include "mongo.name" . }} template: metadata: labels: app.kubernetes.io/name: {{ include "mongo.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} spec: {{- if .Values.securityContext.enabled }} securityContext: fsGroup: {{ .Values.securityContext.fsGroup }} runAsUser: {{ .Values.securityContext.runAsUser }} runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }} {{- end }} containers: - name: mongo image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} args: {{- if .Values.extraCommandLineArgs }} - "{{ .Values.extraCommandLineArgs }}" {{- end }} ports: - containerPort: {{ .Values.service.port }} name: mongodb envFrom: - secretRef: name: {{ include "mongo.name.secret" . }} volumeMounts: - name: data mountPath: /data/db {{- if .Values.readinessProbe.enabled }} readinessProbe: exec: command: {{ toJson .Values.healthCheck.command }} initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.readinessProbe.periodSeconds }} timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} failureThreshold: {{ .Values.readinessProbe.failureThreshold }} successThreshold: {{ .Values.readinessProbe.successThreshold }} {{- end }} {{- if .Values.livenessProbe.enabled }} livenessProbe: exec: command: {{ toJson .Values.healthCheck.command }} initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.livenessProbe.periodSeconds }} timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} failureThreshold: {{ .Values.livenessProbe.failureThreshold }} successThreshold: {{ .Values.livenessProbe.successThreshold }} {{- end }} resources: {{- toYaml .Values.resources | nindent 10 }} volumeClaimTemplates: - metadata: name: data spec: accessModes: {{- toYaml .Values.persistence.accessModes | nindent 10 }} resources: requests: storage: {{ .Values.persistence.size }} {{- if .Values.persistence.storageClass }} storageClassName: {{ .Values.persistence.storageClass }} {{- end }}