2 # Copyright © 2019 Orange
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
18 UID of mariadb root password
20 {{- define "common.mariadb.secret.rootPassUID" -}}
21 {{- printf "db-root-password" }}
25 Name of mariadb secret
27 {{- define "common.mariadb.secret._secretName" -}}
28 {{- $global := .dot }}
29 {{- $chartName := tpl .chartName $global -}}
30 {{- include "common.secret.genName" (dict "global" $global "uid" (include .uidTemplate $global) "chartName" $chartName) }}
34 Name of mariadb root password secret
36 {{- define "common.mariadb.secret.rootPassSecretName" -}}
37 {{- include "common.mariadb.secret._secretName" (set . "uidTemplate" "common.mariadb.secret.rootPassUID") }}
41 UID of mariadb user credentials
43 {{- define "common.mariadb.secret.userCredentialsUID" -}}
44 {{- printf "db-user-credentials" }}
48 UID of mariadb backup credentials
50 {{- define "common.mariadb.secret.backupCredentialsUID" -}}
51 {{- printf "db-backup-credentials" }}
55 Name of mariadb user credentials secret
57 {{- define "common.mariadb.secret.userCredentialsSecretName" -}}
58 {{- include "common.mariadb.secret._secretName" (set . "uidTemplate" "common.mariadb.secret.userCredentialsUID") }}
62 Choose the name of the mariadb app label to use.
64 {{- define "common.mariadbAppName" -}}
65 {{- if .Values.global.mariadbGalera.localCluster -}}
66 {{- index .Values "mariadb-galera" "nameOverride" -}}
68 {{- .Values.global.mariadbGalera.nameOverride -}}
73 Choose the name of the mariadb service to use.
75 {{- define "common.mariadbService" -}}
76 {{- if .Values.global.mariadbGalera.localCluster -}}
77 {{- if and .Values.global.mariadbGalera.useOperator (index .Values "mariadb-galera" "mariadbOperator" "galera" "enabled") }}
78 {{- printf "%s-primary" (index .Values "mariadb-galera" "nameOverride") -}}
80 {{- index .Values "mariadb-galera" "nameOverride" -}}
83 {{- if .Values.global.mariadbGalera.useOperator }}
84 {{- printf "%s-primary" (.Values.global.mariadbGalera.service) }}
86 {{- .Values.global.mariadbGalera.service -}}
92 Choose the value of mariadb port to use.
94 {{- define "common.mariadbPort" -}}
95 {{- if .Values.global.mariadbGalera.localCluster -}}
96 {{- index .Values "mariadb-galera" "service" "internalPort" -}}
98 {{- .Values.global.mariadbGalera.internalPort -}}
103 Choose the value of secret to retrieve user value.
105 {{- define "common.mariadbSecret" -}}
106 {{- if .Values.global.mariadbGalera.localCluster -}}
107 {{ printf "%s-%s-db-user-credentials" (include "common.fullname" .) (index .Values "mariadb-galera" "nameOverride") -}}
109 {{ printf "%s-%s-%s" ( include "common.release" .) (index .Values "mariadb-init" "nameOverride") (index .Values "mariadb-init" "config" "mysqlDatabase" ) -}}
114 Choose the value of secret param to retrieve user value.
116 {{- define "common.mariadbSecretParam" -}}
117 {{ printf "password" -}}
121 Create MariaDB Database via mariadb-operator
123 {{- define "common.mariadbOpDatabase" -}}
124 {{- $dot := default . .dot -}}
125 {{- $dbname := (required "'dbame' param, is required." .dbname) -}}
126 {{- $dbinst := (required "'dbinst' param, is required." .dbinst) -}}
128 apiVersion: k8s.mariadb.com/v1alpha1
131 name: {{ $dbinst }}-{{ $dbname }}
137 collate: utf8_general_ci
142 Create MariaDB User via mariadb-operator
144 {{- define "common.mariadbOpUser" -}}
145 {{- $dot := default . .dot -}}
146 {{- $dbuser := (required "'dbuser' param, is required." .dbuser) -}}
147 {{- $dbinst := (required "'dbinst' param, is required." .dbinst) -}}
148 {{- $dbsecret := (required "'dbsecret' param, is required." .dbsecret) -}}
150 apiVersion: k8s.mariadb.com/v1alpha1
153 name: {{ $dbinst }}-{{ $dbuser }}
159 passwordSecretKeyRef:
160 name: {{ $dbsecret }}
162 # This field is immutable and defaults to 10
163 maxUserConnections: 100
168 Grant rights to a MariaDB User via mariadb-operator
170 {{- define "common.mariadbOpGrants" -}}
171 {{- $dot := default . .dot -}}
172 {{- $dbuser := (required "'dbuser' param, is required." .dbuser) -}}
173 {{- $dbname := (required "'dbame' param, is required." .dbname) -}}
174 {{- $dbinst := (required "'dbinst' param, is required." .dbinst) -}}
176 apiVersion: k8s.mariadb.com/v1alpha1
179 name: {{ $dbuser }}-{{ $dbname }}-{{ $dbinst }}
186 database: {{ $dbname }}
188 username: {{ $dbuser }}
194 MariaDB Backup via mariadb-operator
196 {{- define "common.mariadbOpBackup" -}}
197 {{- $dot := default . .dot -}}
198 {{- $dbinst := include "common.name" $dot -}}
199 {{- $name := default $dbinst $dot.Values.backup.nameOverride -}}
201 apiVersion: k8s.mariadb.com/v1alpha1
208 sidecar.istio.io/inject: 'false'
215 cron: {{ $dot.Values.backup.cron }}
217 maxRetention: {{ $dot.Values.backup.maxRetention }}
219 {{- if eq $dot.Values.backup.storageType "PVC" }}
220 persistentVolumeClaim:
223 storage: {{ $dot.Values.backup.persistence.size }}
224 {{- if $dot.Values.mariadbOperator.storageClassName }}
225 storageClassName: {{ $dot.Values.mariadbOperator.storageClassName }}
228 - {{ $dot.Values.backup.persistence.accessMode }}
230 {{- if eq $dot.Values.backup.storageType "S3" }}
231 s3: {{- include "common.tplValue" ( dict "value" .Values.backup.s3 "context" $) | nindent 6 }}
233 {{- if eq $dot.Values.backup.storageType "volume" }}
234 volume: {{- include "common.tplValue" ( dict "value" .Values.backup.volume "context" $) | nindent 6 }}
246 Create a MariaDB instance via mariadb-operator
248 {{- define "common.mariadbOpInstance" -}}
249 {{- $dot := default . .dot -}}
250 {{- $global := $dot.Values.global -}}
251 {{- $dbinst := include "common.name" $dot -}}
252 {{- $dbrootsecret := tpl (default (include "common.mariadb.secret.rootPassSecretName" (dict "dot" $dot "chartName" "")) $dot.Values.rootUser.externalSecret) $dot -}}
253 {{- $dbusersecret := tpl (default (include "common.mariadb.secret.userCredentialsSecretName" (dict "dot" $dot "chartName" "")) $dot.Values.db.externalSecret) $dot -}}
255 apiVersion: k8s.mariadb.com/v1alpha1
265 {{ if .Values.podAnnotations -}}
266 annotations: {{ toYaml .Values.podAnnotations | nindent 6 }}
269 # temporarily test mariaDB without sidecar (fix initial Job, Backup and Metrics)
270 # will be obsolete with "native-sidecars" feature in K8S and Istio
271 sidecar.istio.io/inject: "false"
273 version: {{ .Values.mariadbOperator.appVersion }}
274 rootPasswordSecretKeyRef:
275 name: {{ $dbrootsecret }}
277 image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.mariadbOperator.image }}:{{ $dot.Values.mariadbOperator.appVersion }}
278 imagePullPolicy: IfNotPresent
279 {{- include "common.imagePullSecrets" . | nindent 2 }}
281 replicas: {{ $dot.Values.replicaCount }}
282 {{- if $dot.Values.mariadbOperator.galera.enabled }}
288 image: {{ include "repositoryGenerator.githubContainerRegistry" . }}/{{ .Values.mariadbOperator.galera.agentImage }}:{{ $dot.Values.mariadbOperator.galera.agentVersion }}
289 imagePullPolicy: IfNotPresent
293 authDelegatorRoleName: {{ $dbinst }}-auth
294 gracefulShutdownTimeout: 5s
296 automaticFailover: true
300 clusterHealthyTimeout: 30s
301 clusterBootstrapTimeout: 10m0s
303 podRecoveryTimeout: 3m0s
306 image: {{ include "repositoryGenerator.githubContainerRegistry" . }}/{{ $dot.Values.mariadbOperator.galera.initImage }}:{{ $dot.Values.mariadbOperator.galera.initVersion }}
307 imagePullPolicy: IfNotPresent
309 reuseStorageVolume: false
311 {{- if .Values.mariadbOperator.persistence.storageClassName }}
312 storageClassName: {{ .Values.mariadbOperator.persistence.storageClassName }}
325 - mariadb -u root -p"${MARIADB_ROOT_PASSWORD}" -e "SELECT 1;"
326 initialDelaySeconds: 20
334 - mariadb -u root -p"${MARIADB_ROOT_PASSWORD}" -e "SELECT 1;"
335 initialDelaySeconds: 20
338 {{- if default false $dot.Values.global.metrics.enabled }}
344 requiredDuringSchedulingIgnoredDuringExecution:
345 - topologyKey: kubernetes.io/hostname
347 - key: k8s.mariadb.com/ha
355 myCnfConfigMapKeyRef:
357 name: {{ printf "%s-configuration" (include "common.fullname" $dot) }}
358 resources: {{ include "common.resources" . | nindent 4 }}
360 {{- if $dot.Values.mariadbOperator.persistence.storageClassName }}
361 storageClassName: {{ $dot.Values.mariadbOperator.persistence.storageClassName }}
363 size: {{ $dot.Values.mariadbOperator.persistence.size | quote }}
364 {{- if $dot.Values.db.user }}
365 {{ include "common.mariadbOpUser" (dict "dot" . "dbuser" $dot.Values.db.user "dbinst" $dbinst "dbsecret" $dbusersecret) }}
367 {{- if $dot.Values.db.name }}
368 {{ include "common.mariadbOpDatabase" (dict "dot" . "dbname" $dot.Values.db.name "dbinst" $dbinst) }}
370 {{- if and $dot.Values.db.user $dot.Values.db.name }}
371 {{ include "common.mariadbOpGrants" (dict "dot" . "dbuser" $dot.Values.db.user "dbname" $dot.Values.db.name "dbinst" $dbinst) }}