blob: 31868bd8af48f4dfea7026dd441cb32686e0ec93 [file] [log] [blame]
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +00001# Copyright © 2017 Amdocs, Bell Canada
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14{{- if .Values.global.migration.enabled }}
15apiVersion: batch/v1
16kind: Job
17metadata:
18 name: {{ include "common.fullname" . }}-backup
19 namespace: {{ include "common.namespace" . }}
20 labels:
21 app: {{ include "common.name" . }}
22 chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
Krzysztof Opasiak137d7cc2020-01-24 23:49:11 +010023 release: {{ include "common.release" . }}
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +000024 heritage: {{ .Release.Service }}
25 annotations:
26 "helm.sh/hook": pre-upgrade,pre-install
27 "helm.sh/hook-weight": "1"
28 "helm.sh/hook-delete-policy": before-hook-creation
29spec:
30 backoffLimit: 20
31 template:
32 metadata:
33 labels:
34 app: {{ include "common.name" . }}
Krzysztof Opasiak137d7cc2020-01-24 23:49:11 +010035 release: {{ include "common.release" . }}
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +000036 name: {{ include "common.name" . }}
37 spec:
38 containers:
39 - name: {{ include "common.fullname" . }}
40 image: "{{ include "common.repository" . }}/{{ .Values.image }}"
41 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
42 env:
43 - name: DB_HOST
44 value: {{ .Values.global.migration.dbHost }}
45 - name: DB_USER
Krzysztof Opasiak587b6e62020-03-24 03:26:03 +010046 {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-backup-creds" "key" "login") | indent 10 }}
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +000047 - name: DB_PORT
48 value: "{{ .Values.global.migration.dbPort }}"
49 - name: DB_PASS
Krzysztof Opasiak587b6e62020-03-24 03:26:03 +010050 {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-backup-creds" "key" "password") | indent 10 }}
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +000051 command:
52 - /bin/bash
53 - -c
54 - mysqldump -vv --user=${DB_USER} --password=${DB_PASS} --host=${DB_HOST} --port=${DB_PORT} --databases --single-transaction --quick --lock-tables=false catalogdb requestdb > /var/data/mariadb/backup-`date +%s`.sql
55 volumeMounts:
56 - mountPath: /etc/localtime
57 name: localtime
58 readOnly: true
59 - name: backup-storage
60 mountPath: /var/data/mariadb
61 volumes:
62 - name: localtime
63 hostPath:
64 path: /etc/localtime
65 - name: backup-storage
66 persistentVolumeClaim:
67 claimName: {{ include "common.fullname" . }}-migration
68 imagePullSecrets:
69 - name: "{{ include "common.namespace" . }}-docker-registry-key"
70 restartPolicy: Never
71---
72{{- end }}
73apiVersion: batch/v1
74kind: Job
75metadata:
76 name: {{ include "common.fullname" . }}-config-job
77 namespace: {{ include "common.namespace" . }}
78 labels:
79 app: {{ include "common.name" . }}
80 chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
Krzysztof Opasiak137d7cc2020-01-24 23:49:11 +010081 release: {{ include "common.release" . }}
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +000082 heritage: {{ .Release.Service }}
83 annotations:
84 "helm.sh/hook": post-upgrade,post-rollback,post-install
85 "helm.sh/hook-weight": "0"
86 "helm.sh/hook-delete-policy": before-hook-creation
87spec:
88 backoffLimit: 20
89 template:
90 metadata:
91 labels:
92 app: {{ include "common.name" . }}-job
Krzysztof Opasiak137d7cc2020-01-24 23:49:11 +010093 release: {{ include "common.release" . }}
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +000094 name: {{ include "common.name" . }}
95 spec:
96 initContainers:
97 - name: {{ include "common.name" . }}-readiness
98 command:
99 - /root/ready.py
100 args:
101 - --container-name
102 - {{ .Values.global.mariadbGalera.nameOverride }}
103 env:
104 - name: NAMESPACE
105 valueFrom:
106 fieldRef:
107 apiVersion: v1
108 fieldPath: metadata.namespace
109 image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
110 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +0000111 containers:
112 - name: {{ include "common.name" . }}
113 image: "{{ include "common.repository" . }}/{{ .Values.image }}"
114 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
115 command:
116 - /bin/bash
117 - -c
118 - >
119 mysql() { /usr/bin/mysql -h ${DB_HOST} -P ${DB_PORT} "$@"; };
120 export -f mysql;
121 mysql --user=root --password=${MYSQL_ROOT_PASSWORD} requestdb -e exit > /dev/null 2>&1 {{ if not .Values.global.migration.enabled }} && echo "Database already initialized!!!" && exit 0 {{ end }};
122 for f in /docker-entrypoint-initdb.d/*; do case "$f" in *.sh) echo "$0: running $f"; . "$f" ;; *.sql) echo "$0: running $f"; "${mysql[@]}" < "$f"; echo ;; *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${mysql[@]}"; echo ;; *) echo "$0: ignoring $f" ;; esac; echo; done;
123 {{- if .Values.global.migration.enabled }}
124 mysql -vv --user=root --password=${MYSQL_ROOT_PASSWORD} < `ls -tr /var/data/mariadb/* | tail -1`;
125 {{- end }}
126 env:
127 - name: DB_HOST
128 valueFrom:
129 secretKeyRef:
Krzysztof Opasiak137d7cc2020-01-24 23:49:11 +0100130 name: {{ include "common.release" . }}-so-db-secrets
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +0000131 key: mariadb.readwrite.host
132 - name: DB_PORT
133 valueFrom:
134 secretKeyRef:
Krzysztof Opasiak137d7cc2020-01-24 23:49:11 +0100135 name: {{ include "common.release" . }}-so-db-secrets
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +0000136 key: mariadb.readwrite.port
137 - name: MYSQL_ROOT_PASSWORD
Krzysztof Opasiak587b6e62020-03-24 03:26:03 +0100138 {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-root-pass" "key" "password") | indent 10 }}
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +0000139 volumeMounts:
140 - mountPath: /etc/localtime
141 name: localtime
142 readOnly: true
Tomáš Levora2a63ef32019-09-20 08:16:54 +0200143 - name: docker-entrypoint-initdb-d-sh
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +0000144 mountPath: "/docker-entrypoint-initdb.d"
Tomáš Levora2a63ef32019-09-20 08:16:54 +0200145 - name: docker-entrypoint-initdb-d-sql
146 mountPath: "/docker-entrypoint-initdb.d/db-sql-scripts"
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +0000147 {{- if .Values.global.migration.enabled }}
148 - name: backup-storage
149 mountPath: /var/data/mariadb
150 {{- end }}
151 resources:
152{{ include "common.resources" . | indent 12 }}
153 {{- if .Values.nodeSelector }}
154 nodeSelector:
155{{ toYaml .Values.nodeSelector | indent 10 }}
156 {{- end -}}
157 {{- if .Values.affinity }}
158 affinity:
159{{ toYaml .Values.affinity | indent 10 }}
160 {{- end }}
161 volumes:
162 - name: localtime
163 hostPath:
164 path: /etc/localtime
Tomáš Levora2a63ef32019-09-20 08:16:54 +0200165 - name: docker-entrypoint-initdb-d-sh
166 configMap:
167 name: {{ include "common.fullname" . }}-mariadb-sh
168 - name: docker-entrypoint-initdb-d-sql
169 configMap:
170 name: {{ include "common.fullname" . }}-mariadb-sql
Mahendra Raghuwanshi72b69c12019-04-04 10:43:25 +0000171 {{- if .Values.global.migration.enabled }}
172 - name: backup-storage
173 persistentVolumeClaim:
174 claimName: {{ include "common.fullname" . }}-migration
175 {{- end }}
176 restartPolicy: Never
177 imagePullSecrets:
178 - name: "{{ include "common.namespace" . }}-docker-registry-key"