apiVersion: apps/v1beta1 kind: StatefulSet metadata: name: {{ include "common.fullname" . }} namespace: {{ include "common.namespace" . }} labels: app: {{ include "common.fullname" . }} chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: serviceName: {{ include "common.fullname" . }} replicas: {{ .Values.replicaCount }} template: metadata: labels: app: {{ include "common.fullname" . }} annotations: pod.alpha.kubernetes.io/initialized: "true" spec: {{- if .Values.nodeSelector }} nodeSelector: {{ toYaml .Values.nodeSelector | indent 8 }} {{- end }} volumes: {{- if .Values.externalConfig }} - name: config configMap: name: {{ include "common.fullname" . }}-externalConfig {{- end}} - name: localtime hostPath: path: /etc/localtime imagePullSecrets: - name: {{ include "common.namespace" . }}-docker-registry-key containers: - name: {{ include "common.fullname" . }} image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy | quote}} env: - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: MYSQL_USER value: {{ default "" .Values.config.userName | quote }} - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: {{ template "common.fullname" . }} key: user-password - name: MYSQL_DATABASE value: {{ default "" .Values.config.mysqlDatabase | quote }} - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: {{ template "common.fullname" . }} key: db-root-password ports: - containerPort: {{ .Values.service.internalPort }} name: {{ .Values.service.name }} - containerPort: {{ .Values.service.sstPort }} name: {{ .Values.service.sstName }} - containerPort: {{ .Values.service.replicationPort }} name: {{ .Values.service.replicationName }} - containerPort: {{ .Values.service.istPort }} name: {{ .Values.service.istName }} readinessProbe: exec: command: - /usr/share/container-scripts/mysql/readiness-probe.sh initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} periodSeconds: {{ .Values.readiness.periodSeconds }} {{- if eq .Values.liveness.enabled true }} livenessProbe: exec: command: ["mysqladmin", "ping"] initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} periodSeconds: {{ .Values.liveness.periodSeconds }} timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} {{- end }} resources: {{ toYaml .Values.resources | indent 12 }} volumeMounts: {{- if .Values.externalConfig }} - mountPath: /etc/config name: config {{- end}} - mountPath: /etc/localtime name: localtime readOnly: true {{- if .Values.persistence.enabled }} - mountPath: /var/lib/mysql name: {{ include "common.fullname" . }}-data subPath: data initContainers: - name: mariadb-galera-prepare image: {{ .Values.global.repository | default .Values.repository }}/{{ .Values.imageInit }} command: ["sh", "-c", "chown -R 27:27 /var/lib/mysql"] volumeMounts: - name: {{ include "common.fullname" . }}-data mountPath: /var/lib/mysql volumeClaimTemplates: - metadata: name: {{ include "common.fullname" . }}-data annotations: {{- if .Values.persistence.storageClass }} volume.beta.kubernetes.io/storage-class: {{ .Values.persistence.storageClass | quote }} {{- else }} volume.alpha.kubernetes.io/storage-class: default {{- end }} spec: accessModes: - {{ .Values.persistence.accessMode | quote }} resources: requests: storage: {{ .Values.persistence.size | quote }} {{- end }}