[COMMON][MARIADB] Upgrade Mariadb DB galera version

Mariadb DB Galera containers version is outdated and unmaintained. We
need them to move to a new image provider.
As new image provider is not compatible with our old templates, we
also update the templates (by reworking bitnami mariadb-galera chart).
An update of global mariadb image is also done in order to match mariadb
galera version.

Issue-ID: OOM-1720
Signed-off-by: Sylvain Desbureaux <sylvain.desbureaux@orange.com>
Change-Id: Ib9976227759e90022183d4f37fc655143be4d6ac
diff --git a/kubernetes/common/mariadb-galera/templates/backup/cronjob.yaml b/kubernetes/common/mariadb-galera/templates/backup/cronjob.yaml
index 1c78017..210fbd0 100644
--- a/kubernetes/common/mariadb-galera/templates/backup/cronjob.yaml
+++ b/kubernetes/common/mariadb-galera/templates/backup/cronjob.yaml
@@ -1,5 +1,6 @@
 {{/*
 # Copyright © 2019 Amdocs, Bell Canada, Samsung Electronics
+# Copyright © 2020 Orange
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -13,17 +14,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 */}}
+
 {{- if .Values.backup.enabled }}
 apiVersion: batch/v1beta1
 kind: CronJob
 metadata:
   name: {{ include "common.fullname" . }}-backup
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.fullname" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ include "common.release" . }}
-    heritage: {{ .Release.Service }}
+  labels: {{- include "common.labels" . | nindent 4 }}
 spec:
   schedule: {{ .Values.backup.cron | quote }}
   concurrencyPolicy: Forbid
@@ -32,141 +30,130 @@
     spec:
       template:
         spec:
+          serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
+          {{ include "common.podSecurityContext" . | indent 10 | trim}}
           restartPolicy: Never
-          initContainers:
-          - command:
-            - /app/ready.py
-            args:
-            - --container-name
-            - {{ include "common.name" . }}
-            env:
-            - name: NAMESPACE
-              valueFrom:
-                fieldRef:
-                  apiVersion: v1
-                  fieldPath: metadata.namespace
-            image: {{ include "repositoryGenerator.image.readiness" . }}
-            imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-            name: {{ include "common.name" . }}-readiness
-          - name: mariadb-galera-backup-init
-            image: {{ include "repositoryGenerator.image.mariadb" . }}
-            imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-            command:
-            - /bin/bash
-            - -c
-            - |
-              remove_dir(){
-                dirToRemove=$1
-                rm -rf $dirToRemove
-                echo "Failed" > /backup/backup.log
-                echo "Backup failed!!!"
-              }
+          initContainers: {{- include "common.readinessCheck.waitFor" . | nindent 12 }}
+            - name: mariadb-galera-backup-init
+              image: {{ include "repositoryGenerator.image.mariadb" . }}
+              imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+              {{ include "common.containerSecurityContext" . | indent 14 | trim }}
+              command:
+                - /bin/bash
+                - -c
+                - |
+                    remove_dir(){
+                      dirToRemove=$1
+                      rm -rf $dirToRemove
+                      echo "Failed" > /backup/backup.log
+                      echo "Backup failed!!!"
+                    }
 
-              target_dir=/backup/backup-`date +%s`
-              mkdir -p $target_dir
+                    target_dir=/backup/backup-`date +%s`
+                    mkdir -p $target_dir
 
-              mysqlhost={{ include "common.fullname" . }}-{{ sub .Values.replicaCount 1 }}.{{ .Values.service.name }}
+                    mysqlhost={{ include "common.servicename" . }}.{{ include "common.namespace" . }}
 
-              mariabackup --backup --target-dir=$target_dir --user=root --password=$DB_PASS --host=$mysqlhost
+                    mariabackup --backup --target-dir=$target_dir --user=root --password=$DB_PASS --host=$mysqlhost
 
-              ret_code=$?
-              if [ $ret_code -ne 0 ]; then
-                remove_dir $target_dir
-                exit 0
-              fi
+                    ret_code=$?
+                    if [ $ret_code -ne 0 ]; then
+                      remove_dir $target_dir
+                      exit 0
+                    fi
 
-              echo "Starting Backup Preparation!!!"
-              mariabackup --prepare --target-dir=$target_dir
-              ret_code=$?
-              if [ $ret_code -ne 0 ]; then
-                remove_dir $target_dir
-                exit 0
-              fi
-              echo "Success" > /backup/backup.log
-              echo "Backup Successful!!!"
-            env:
-            - name: DB_PASS
-              {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mariadb.secret.rootPassUID" .) "key" "password") | indent 14}}
-            volumeMounts:
-            - name: backup-dir
-              mountPath: /backup
-            - name: db-data
-              mountPath: /var/lib/mysql
+                    echo "Starting Backup Preparation!!!"
+                    mariabackup --prepare --target-dir=$target_dir
+                    ret_code=$?
+                    if [ $ret_code -ne 0 ]; then
+                      remove_dir $target_dir
+                      exit 0
+                    fi
+                    echo "Success" > /backup/backup.log
+                    echo "Backup Successful!!!"
+              env:
+                - name: DB_PASS
+                  {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mariadb.secret.rootPassUID" .) "key" "password") | indent 18 }}
+              resources: {{ include "common.resources" . | nindent 12 }}
+              volumeMounts:
+                - name: backup-dir
+                  mountPath: /backup
           containers:
-          - name: mariadb-backup-validate
-            image: {{ include "repositoryGenerator.image.mariadb" . }}
-            imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-            env:
-            - name: MYSQL_ROOT_PASSWORD
-              {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mariadb.secret.rootPassUID" .) "key" "password") | indent 14}}
-            command:
-            - /bin/bash
-            - -c
-            - |
-              remove_dir(){
-                dirToRemove=$1
-                rm -rf $dirToRemove
-                echo "Validation Failed!!!";
-              }
+            - name: mariadb-backup-validate
+              image: {{ include "repositoryGenerator.image.mariadb" . }}
+              imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+              {{ include "common.containerSecurityContext" . | indent 14 | trim }}
+              env:
+                - name: MYSQL_ROOT_PASSWORD
+                  {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mariadb.secret.rootPassUID" .) "key" "password") | indent 18 }}
+              command:
+                - /bin/bash
+                - -c
+                - |
+                  remove_dir(){
+                    dirToRemove=$1
+                    rm -rf $dirToRemove
+                    echo "Validation Failed!!!";
+                  }
 
-              backup_result=`cat /backup/backup.log`
-              rm -rf /backup/backup.log
+                  backup_result=`cat /backup/backup.log`
+                  rm -rf /backup/backup.log
 
-              if [ "$backup_result" == "Failed" ]; then
-                echo "Backup Failed!!! So Validation Failed!!!";
-                exit 0
-              fi
+                  if [ "$backup_result" == "Failed" ]; then
+                    echo "Backup Failed!!! Validation Failed!!!";
+                    exit 0
+                  fi
 
-              target_dir=$(ls -td -- /backup/backup-* | head -n 1)
-              cp -Ra $target_dir/* /var/lib/mysql/
+                  target_dir=$(ls -td -- /backup/backup-* | head -n 1)
+                  cp -Ra $target_dir/* /var/lib/mysql/
 
-              if [ ! "$(ls -A /var/lib/mysql)" ]; then
-                remove_dir $target_dir
-                exit 0
-              fi
+                  if [ ! "$(ls -A /var/lib/mysql)" ]; then
+                    remove_dir $target_dir
+                    exit 0
+                  fi
 
-              /docker-entrypoint.sh mysqld &
+                  /docker-entrypoint.sh mysqld &
 
-              count=0
-              until mysql --user=root --password=$MYSQL_ROOT_PASSWORD  -e "SELECT 1";
-                do sleep 3;
-                count=`expr $count + 1`;
-                if [ $count -ge 30 ]; then
-                  remove_dir $target_dir
-                  exit 0;
-                fi;
-              done
+                  count=0
+                  until mysql --user=root --password=$MYSQL_ROOT_PASSWORD  -e "SELECT 1";
+                    do sleep 3;
+                    count=`expr $count + 1`;
+                    if [ $count -ge 30 ]; then
+                      remove_dir $target_dir
+                      exit 0;
+                    fi;
+                  done
 
-              mysqlcheck -A  --user=root --password=$MYSQL_ROOT_PASSWORD > /tmp/output.log
-              error_lines=`cat /tmp/output.log| grep -v "OK" | wc -l`
+                  mysqlcheck -A  --user=root --password=$MYSQL_ROOT_PASSWORD > /tmp/output.log
+                  error_lines=`cat /tmp/output.log| grep -v "OK" | wc -l`
 
-              cat /tmp/output.log
+                  cat /tmp/output.log
 
-              if [ $error_lines -gt 1 ];then
-                remove_dir $target_dir
-              else
-                echo "Validation successful!!!"
-                cd /backup
-                totalFiles=`ls -t | grep "backup-" | wc -l`
-                if [ $totalFiles -gt {{ .Values.backup.retentionPeriod }} ]; then
-                  filestoDelete=`expr $totalFiles - {{ .Values.backup.retentionPeriod }}`
-                  ls -tr | grep backup | head -$filestoDelete | xargs rm -rf
-                fi
-              fi
-            volumeMounts:
-            - mountPath: /etc/localtime
-              name: localtime
-              readOnly: true
-            - name: backup-dir
-              mountPath: /backup
+                  if [ $error_lines -gt 1 ];then
+                    remove_dir $target_dir
+                  else
+                    echo "Validation successful!!!"
+                    cd /backup
+                    totalFiles=`ls -t | grep "backup-" | wc -l`
+                    if [ $totalFiles -gt {{ .Values.backup.retentionPeriod }} ]; then
+                      filestoDelete=`expr $totalFiles - {{ .Values.backup.retentionPeriod }}`
+                      ls -tr | grep backup | head -$filestoDelete | xargs rm -rf
+                    fi
+                  fi
+              resources: {{ include "common.resources" . | nindent 12 }}
+              volumeMounts:
+                - mountPath: /etc/localtime
+                  name: localtime
+                  readOnly: true
+                - name: backup-dir
+                  mountPath: /backup
+          imagePullSecrets:
+            - name: {{ include "common.namespace" . }}-docker-registry-key
           volumes:
-          - name: localtime
-            hostPath:
-              path: /etc/localtime
-          - name: backup-dir
-            persistentVolumeClaim:
-              claimName: {{ include "common.fullname" . }}-backup-data
-          - name: db-data
-            persistentVolumeClaim:
-              claimName: {{ include "common.fullname" . }}-data-{{ include "common.fullname" . }}-{{ sub .Values.replicaCount 1 }}
+            - name: localtime
+              hostPath:
+                path: /etc/localtime
+            - name: backup-dir
+              persistentVolumeClaim:
+                claimName: {{ include "common.fullname" . }}-backup-data
 {{- end }}
diff --git a/kubernetes/common/mariadb-galera/templates/backup/pv.yaml b/kubernetes/common/mariadb-galera/templates/backup/pv.yaml
index ec6f44d..30eb74b 100644
--- a/kubernetes/common/mariadb-galera/templates/backup/pv.yaml
+++ b/kubernetes/common/mariadb-galera/templates/backup/pv.yaml
@@ -1,5 +1,6 @@
 {{/*
-# Copyright © 2019 Amdocs, Bell Canada, Orange
+# Copyright © 2019 Amdocs, Bell Canada
+# Copyright © 2019-2020 Orange
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,28 +15,29 @@
 # limitations under the License.
 */}}
 {{- if .Values.backup.enabled }}
-{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
+{{- if and .Values.backup.persistence.enabled (not .Values.backup.persistence.existingClaim) -}}
 {{- if eq "True" (include "common.needPV" .) -}}
 ---
 apiVersion: v1
 kind: PersistentVolume
 metadata:
-  name: {{ include "common.fullname" . }}-backup-data
+  name: {{ include "common.fullname" . }}-backup
   namespace: {{ include "common.namespace" . }}
   labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    heritage: {{ .Release.Service }}
-    name: {{ include "common.fullname" . }}-backup-data
+    app: {{ include "common.fullname" . }}-backup
+    app.kubernetes.io/name: {{ include "common.name" . }}
+    helm.sh/chart: {{ include "common.chart" . }}
+    app.kubernetes.io/instance: {{ include "common.release" . }}-backup
+    app.kubernetes.io/managed-by: {{ .Release.Service }}
 spec:
   capacity:
-    storage: {{ .Values.persistence.size }}
+    storage: {{ .Values.backup.persistence.size }}
   accessModes:
-  - {{ .Values.persistence.accessMode }}
-  persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }}
+  - {{ .Values.backup.persistence.accessMode }}
+  persistentVolumeReclaimPolicy: {{ .Values.backup.persistence.volumeReclaimPolicy }}
   storageClassName: "{{ include "common.fullname" . }}-data-backup"
   hostPath:
-    path: {{ .Values.global.persistence.backup.mountPath | default .Values.persistence.backup.mountPath }}/{{ include "common.namespace" $ }}/{{ include "common.fullname" $ }}
+    path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ include "common.namespace" . }}/{{ include "common.fullname" . }}
 {{- end -}}
 {{- end -}}
 {{- end -}}
diff --git a/kubernetes/common/mariadb-galera/templates/backup/pvc.yaml b/kubernetes/common/mariadb-galera/templates/backup/pvc.yaml
index 807833a..5dd8a3f 100644
--- a/kubernetes/common/mariadb-galera/templates/backup/pvc.yaml
+++ b/kubernetes/common/mariadb-galera/templates/backup/pvc.yaml
@@ -1,5 +1,6 @@
 {{/*
-# Copyright © 2019 Amdocs, Bell Canada, Orange
+# Copyright © 2019 Amdocs, Bell Canada
+# Copyright © 2019-2020 Orange
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,7 +15,7 @@
 # limitations under the License.
 */}}
 {{- if .Values.backup.enabled }}
-{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
+{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
 ---
 kind: PersistentVolumeClaim
 apiVersion: v1
@@ -22,21 +23,22 @@
   name: {{ include "common.fullname" . }}-backup-data
   namespace: {{ include "common.namespace" . }}
   labels:
-    app: {{ include "common.name" . }}-backup
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
-    release: "{{ include "common.release" . }}"
-    heritage: "{{ .Release.Service }}"
-{{- if .Values.persistence.annotations }}
+    app: {{ include "common.fullname" . }}-backup
+    app.kubernetes.io/name: {{ include "common.name" . }}
+    helm.sh/chart: {{ include "common.chart" . }}
+    app.kubernetes.io/instance: {{ include "common.release" . }}-backup
+    app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- if .Values.backup.persistence.annotations }}
   annotations:
-{{ toYaml .Values.persistence.annotations | indent 4 }}
+{{ toYaml .Values.backup.persistence.annotations | indent 4 }}
 {{- end }}
 spec:
   accessModes:
-    - {{ .Values.persistence.accessMode }}
+    - {{ .Values.backup.persistence.accessMode }}
   resources:
     requests:
-      storage: {{ .Values.persistence.size }}
-{{- if eq "True" (include "common.needPV" .) -}}
+      storage: {{ .Values.backup.persistence.size }}
+{{- if (include "common.needPV" .) }}
   storageClassName: "{{ include "common.fullname" . }}-data-backup"
 {{- else }}
   storageClassName: {{ include "common.storageClass" . }}