--- /dev/null
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ template "mysql.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ app: {{ template "mysql.fullname" . }}
+ chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+ release: "{{ .Release.Name }}"
+ heritage: "{{ .Release.Service }}"
+{{- with .Values.deploymentAnnotations }}
+ annotations:
+{{ toYaml . | indent 4 }}
+{{- end }}
+
+spec:
+ strategy:
+{{ toYaml .Values.strategy | indent 4 }}
+ selector:
+ matchLabels:
+ app: {{ template "mysql.fullname" . }}
+ release: {{ .Release.Name }}
+ template:
+ metadata:
+ labels:
+ app: {{ template "mysql.fullname" . }}
+ release: {{ .Release.Name }}
+{{- with .Values.podLabels }}
+{{ toYaml . | indent 8 }}
+{{- end }}
+{{- with .Values.podAnnotations }}
+ annotations:
+{{ toYaml . | indent 8 }}
+{{- end }}
+ spec:
+ {{- if .Values.schedulerName }}
+ schedulerName: "{{ .Values.schedulerName }}"
+ {{- end }}
+ {{- if .Values.imagePullSecrets }}
+ imagePullSecrets:
+{{ toYaml .Values.imagePullSecrets | indent 8 }}
+ {{- end }}
+ {{- if .Values.priorityClassName }}
+ priorityClassName: "{{ .Values.priorityClassName }}"
+ {{- end }}
+ {{- if .Values.securityContext.enabled }}
+ securityContext:
+ fsGroup: {{ .Values.securityContext.fsGroup }}
+ runAsUser: {{ .Values.securityContext.runAsUser }}
+ {{- end }}
+ serviceAccountName: {{ template "mysql.serviceAccountName" . }}
+ initContainers:
+ - name: "remove-lost-found"
+ image: "{{ .Values.busybox.image}}:{{ .Values.busybox.tag }}"
+ imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
+ resources:
+{{ toYaml .Values.initContainer.resources | indent 10 }}
+ command: ["rm", "-fr", "/var/lib/mysql/lost+found"]
+ volumeMounts:
+ - name: data
+ mountPath: /var/lib/mysql
+ {{- if .Values.persistence.subPath }}
+ subPath: {{ .Values.persistence.subPath }}
+ {{- end }}
+ {{- if .Values.extraInitContainers }}
+{{ tpl .Values.extraInitContainers . | indent 6 }}
+ {{- end }}
+ {{- if .Values.nodeSelector }}
+ nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
+ {{- end }}
+ {{- if .Values.affinity }}
+ affinity:
+{{ toYaml .Values.affinity | indent 8 }}
+ {{- end }}
+ {{- if .Values.tolerations }}
+ tolerations:
+{{ toYaml .Values.tolerations | indent 8 }}
+ {{- end }}
+ containers:
+ - name: {{ template "mysql.fullname" . }}
+ image: "{{ .Values.image }}:{{ .Values.imageTag }}"
+ imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
+
+ {{- with .Values.args }}
+ args:
+ {{- range . }}
+ - {{ . | quote }}
+ {{- end }}
+ {{- end }}
+ resources:
+{{ toYaml .Values.resources | indent 10 }}
+ env:
+ {{- if .Values.mysqlAllowEmptyPassword }}
+ - name: MYSQL_ALLOW_EMPTY_PASSWORD
+ value: "true"
+ {{- end }}
+ {{- if not (and .Values.allowEmptyRootPassword (not .Values.mysqlRootPassword)) }}
+ - name: MYSQL_ROOT_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ # name: {{ template "mysql.secretName" . }}
+ name: mysql
+ key: mysql-root-password
+ {{- if .Values.mysqlAllowEmptyPassword }}
+ optional: true
+ {{- end }}
+ {{- end }}
+ {{- if not (and .Values.allowEmptyRootPassword (not .Values.mysqlPassword)) }}
+ - name: MYSQL_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ # name: {{ template "mysql.secretName" . }}
+ name: mysql
+ key: mysql-password
+ {{- if or .Values.mysqlAllowEmptyPassword (empty .Values.mysqlUser) }}
+ optional: true
+ {{- end }}
+ {{- end }}
+ - name: MYSQL_USER
+ value: {{ default "" .Values.mysqlUser | quote }}
+ - name: MYSQL_DATABASE
+ value: {{ default "" .Values.mysqlDatabase | quote }}
+ {{- if .Values.timezone }}
+ - name: TZ
+ value: {{ .Values.timezone }}
+ {{- end }}
+ {{- if .Values.extraEnvVars }}
+{{ tpl .Values.extraEnvVars . | indent 8 }}
+ {{- end }}
+ ports:
+ - name: mysql
+ containerPort: 3306
+ livenessProbe:
+ exec:
+ command:
+ {{- if .Values.mysqlAllowEmptyPassword }}
+ - mysqladmin
+ - ping
+ {{- else }}
+ - sh
+ - -c
+ - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
+ {{- end }}
+ initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
+ periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
+ timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
+ successThreshold: {{ .Values.livenessProbe.successThreshold }}
+ failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
+ readinessProbe:
+ exec:
+ command:
+ {{- if .Values.mysqlAllowEmptyPassword }}
+ - mysqladmin
+ - ping
+ {{- else }}
+ - sh
+ - -c
+ - "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
+ {{- end }}
+ initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
+ periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
+ timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
+ successThreshold: {{ .Values.readinessProbe.successThreshold }}
+ failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
+ volumeMounts:
+ - name: data
+ mountPath: /var/lib/mysql
+ {{- if .Values.persistence.subPath }}
+ subPath: {{ .Values.persistence.subPath }}
+ {{- end }}
+ {{- if .Values.configurationFiles }}
+ {{- range $key, $val := .Values.configurationFiles }}
+ - name: configurations
+ mountPath: {{ $.Values.configurationFilesPath }}{{ $key }}
+ subPath: {{ $key }}
+ {{- end -}}
+ {{- end }}
+ {{- if .Values.initializationFiles }}
+ - name: migrations
+ mountPath: /docker-entrypoint-initdb.d
+ {{- end }}
+ {{- if .Values.ssl.enabled }}
+ - name: certificates
+ mountPath: /ssl
+ {{- end }}
+ {{- if .Values.extraVolumeMounts }}
+{{ tpl .Values.extraVolumeMounts . | indent 8 }}
+ {{- end }}
+ {{- if .Values.metrics.enabled }}
+ - name: metrics
+ image: "{{ .Values.metrics.image }}:{{ .Values.metrics.imageTag }}"
+ imagePullPolicy: {{ .Values.metrics.imagePullPolicy | quote }}
+ {{- if .Values.mysqlAllowEmptyPassword }}
+ command:
+ - 'sh'
+ - '-c'
+ - 'DATA_SOURCE_NAME="root@(localhost:3306)/" /bin/mysqld_exporter'
+ {{- else }}
+ env:
+ - name: MYSQL_ROOT_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ # name: {{ template "mysql.secretName" . }}
+ name: mysql
+ key: mysql-root-password
+ command:
+ - 'sh'
+ - '-c'
+ - 'DATA_SOURCE_NAME="root:$MYSQL_ROOT_PASSWORD@(localhost:3306)/" /bin/mysqld_exporter'
+ {{- end }}
+ {{- range $f := .Values.metrics.flags }}
+ - {{ $f | quote }}
+ {{- end }}
+ ports:
+ - name: metrics
+ containerPort: 9104
+ livenessProbe:
+ httpGet:
+ path: /
+ port: metrics
+ initialDelaySeconds: {{ .Values.metrics.livenessProbe.initialDelaySeconds }}
+ timeoutSeconds: {{ .Values.metrics.livenessProbe.timeoutSeconds }}
+ readinessProbe:
+ httpGet:
+ path: /
+ port: metrics
+ initialDelaySeconds: {{ .Values.metrics.readinessProbe.initialDelaySeconds }}
+ timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }}
+ resources:
+{{ toYaml .Values.metrics.resources | indent 10 }}
+ {{- end }}
+ volumes:
+ {{- if .Values.configurationFiles }}
+ - name: configurations
+ configMap:
+ name: {{ template "mysql.fullname" . }}-configuration
+ {{- end }}
+ {{- if .Values.initializationFiles }}
+ - name: migrations
+ configMap:
+ name: {{ template "mysql.fullname" . }}-initialization
+ {{- end }}
+ {{- if .Values.ssl.enabled }}
+ - name: certificates
+ secret:
+ secretName: {{ .Values.ssl.secret }}
+ {{- end }}
+ - name: data
+ {{- if .Values.persistence.enabled }}
+ persistentVolumeClaim:
+ claimName: {{ .Values.persistence.existingClaim | default (include "mysql.fullname" .) }}
+ {{- else }}
+ emptyDir: {}
+ {{- end -}}
+ {{- if .Values.extraVolumes }}
+{{ tpl .Values.extraVolumes . | indent 6 }}
+ {{- end }}