Skip to content

Commit 4a1fbc0

Browse files
committed
feat: setup install_app function to install DB helm charts of choice
and setup respective delete_app function setup mysql, mariadb & postgresql specific dynamic helm values Signed-off-by: Siddharth Tiwari <[email protected]>
1 parent dd3cc9f commit 4a1fbc0

File tree

1 file changed

+91
-37
lines changed

1 file changed

+91
-37
lines changed

auto-deploy

Lines changed: 91 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -196,40 +196,82 @@ function auto_database_uri() {
196196
esac
197197
}
198198

199-
function install_postgresql() {
199+
function install_app() {
200200

201-
local name="$POSTGRESQL_RELEASE_NAME"
201+
local name="${!2}"
202202

203203
local debug_flag=()
204204
if [[ -n "$AUTO_DEVOPS_DEPLOY_DEBUG" ]]; then
205205
debug_flag=('--debug')
206206
fi
207207

208-
local postgresql_helm_values_args=()
209-
local postgresql_helm_values_file=${POSTGRESQL_HELM_UPGRADE_VALUES_FILE:-.gitlab/auto-deploy-postgresql-values.yaml}
210-
if [[ -f "${postgresql_helm_values_file}" ]]; then
211-
echo "Using PostgreSQL helm values file ${postgresql_helm_values_file@Q}"
212-
postgresql_helm_values_args=(--values "${postgresql_helm_values_file}")
213-
else
214-
echo "No PostgreSQL helm values file found at ${postgresql_helm_values_file@Q}"
208+
if [[ "${MARIADB_ENABLED}" == "true" ]]; then
209+
210+
yq eval --null-input '.auth.database= env(MARIADB_DB)' >mariadb-specific-values.yaml
211+
yq eval '.auth.username = env(MARIADB_USER)' -i mariadb-specific-values.yaml
212+
yq eval '.auth.password = env(MARIADB_PASSWORD)' -i mariadb-specific-values.yaml
213+
yq eval '.auth.rootPassword = env(MARIADB_ROOT_PASSWORD)' -i mariadb-specific-values.yaml
214+
215+
#metrics.enabled: true
216+
#rbac.create=true
217+
#architecture: replication
218+
#secondary.replicaCount: 2
219+
#auth.forcePassword: true
220+
#auth.usePasswordFiles: true
221+
fi
222+
if [[ "${MYSQL_ENABLED}" == "true" ]]; then
223+
yq eval --null-input '.auth.database= env(MYSQL_DB)' >mysql-specific-values.yaml
224+
yq eval '.auth.username = env(MYSQL_USER)' -i mysql-specific-values.yaml
225+
yq eval '.auth.password = env(MYSQL_PASSWORD)' -i mysql-specific-values.yaml
226+
yq eval '.auth.rootPassword = env(MYSQL_ROOT_PASSWORD)' -i mysql-specific-values.yaml
215227
fi
216228

217-
# shellcheck disable=SC2086 # POSTGRESQL_HELM_UPGRADE_EXTRA_ARGS -- double quote variables to prevent globbing
218-
helm upgrade --install \
219-
--atomic \
220-
"${debug_flag[@]}" \
221-
--wait \
222-
--version "${POSTGRESQL_CHART_VERSION}" \
223-
--set fullnameOverride="$name" \
224-
--set postgresqlUsername="$POSTGRESQL_USER" \
225-
--set postgresqlPassword="$POSTGRESQL_PASSWORD" \
226-
--set postgresqlDatabase="$POSTGRESQL_DB" \
227-
--set image.tag="$POSTGRESQL_VERSION" \
228-
"${postgresql_helm_values_args[@]}" \
229-
$POSTGRESQL_HELM_UPGRADE_EXTRA_ARGS \
230-
--namespace="${KUBE_NAMESPACE}" \
231-
"$name" \
232-
bitnami/postgresql
229+
if [[ "${POSTGRESQL_ENABLED}" == "true" ]]; then
230+
231+
yq eval --null-input '.postgresqlDatabase = env(POSTGRESQL_DB)' >postgresql-specific-values.yaml
232+
yq eval '.postgresqlUsername = env(POSTGRESQL_USER)' -i postgresql-specific-values.yaml
233+
yq eval '.postgresqlPassword = env(POSTGRESQL_PASSWORD)' -i postgresql-specific-values.yaml
234+
yq eval '.postgresqlPostgresPassword = env(POSTGRESQL_ROOT_PASSWORD)' -i postgresql-specific-values.yaml
235+
236+
#metrics.enabled
237+
#rbac.create
238+
#replication.enabled: true
239+
#replication.readReplicas: 2
240+
#replication.synchronousCommit: "on"
241+
#replication.numSynchronousReplicas: 1
242+
#usePasswordFile
243+
fi
244+
245+
# shellcheck disable=SC1090
246+
source <(
247+
cat <<EOF
248+
local ${i}_helm_values_args=()
249+
local ${i}_helm_values_file=\${${i^^}_HELM_UPGRADE_VALUES_FILE:-.gitlab/auto-deploy-${i}-values.yaml}
250+
if [[ -f "\${${i}_helm_values_file}" ]]; then
251+
echo "Using ${i^^} helm values file \${${i}_helm_values_file@Q}"
252+
${i}_helm_values_args=(--values "\${${i}_helm_values_file}")
253+
else
254+
echo "No ${i^^} helm values file found at \${${i}_helm_values_file@Q}"
255+
fi
256+
257+
# shellcheck disable=SC2086 # POSTGRESQL_HELM_UPGRADE_EXTRA_ARGS -- double quote variables to prevent globbing
258+
helm upgrade --install \
259+
--atomic \
260+
"\${debug_flag[@]}" \
261+
--wait \
262+
--version "\${${i^^}_CHART_VERSION}" \
263+
--set fullnameOverride="$name" \
264+
--set ${i}Username="\${${i^^}_USER}" \
265+
--set ${i}Password="\${${i^^}_PASSWORD}" \
266+
--set ${i}Database="\${${i^^}_DB}" \
267+
--set image.tag="\${${i^^}_VERSION}" \
268+
"\${${i}_helm_values_args[@]}" \
269+
\${${i^^}_HELM_UPGRADE_EXTRA_ARGS} \
270+
--namespace="${KUBE_NAMESPACE}" \
271+
"$name" \
272+
"bitnami/${i}"
273+
EOF
274+
)
233275
}
234276

235277
# shellcheck disable=SC2153 # warns that my_var vs MY_VAR is a possible misspelling
@@ -244,9 +286,17 @@ function deploy() {
244286
local stable_name
245287
stable_name=$(deploy_name stable)
246288

247-
if [[ "$POSTGRESQL_ENABLED" == "true" ]]; then
248-
install_postgresql
249-
fi
289+
for i in "${APPS[@]}"; do
290+
291+
# shellcheck disable=SC1090
292+
source <(
293+
cat <<EOF
294+
if [[ "\${${i^^}_ENABLED}" == "true" ]]; then
295+
install_app "${i}" "${i^^}_RELEASE_NAME"
296+
fi
297+
EOF
298+
)
299+
done
250300

251301
validate-chart-version "$(helm list --namespace "${KUBE_NAMESPACE}" --output json)" "chart" "$name"
252302

@@ -411,12 +461,12 @@ function scale() {
411461
fi
412462
}
413463

414-
function delete_postgresql() {
415-
local name="$POSTGRESQL_RELEASE_NAME"
464+
function delete_app() {
465+
local name="${!2}"
416466

417-
if [[ -n "$(helm ls --namespace "${KUBE_NAMESPACE}" -q -f "^$name$")" ]]; then
418-
helm delete "$name" --namespace "${KUBE_NAMESPACE}"
419-
kubectl delete pvc -n "${KUBE_NAMESPACE}" -l "release=$POSTGRESQL_RELEASE_NAME"
467+
if [[ -n "$(helm ls --namespace "${KUBE_NAMESPACE}" -q -f "^${name}$")" ]]; then
468+
helm delete "${name}" --namespace "${KUBE_NAMESPACE}"
469+
kubectl delete pvc -n "${KUBE_NAMESPACE}" -l "release=${name}"
420470
fi
421471
}
422472

@@ -430,9 +480,13 @@ function delete() {
430480
helm delete "$name" --namespace "${KUBE_NAMESPACE}"
431481
fi
432482

433-
if [[ "$track" == "stable" ]]; then
434-
delete_postgresql
435-
fi
483+
for i in "${APPS[@]}"; do
484+
485+
if [[ "$track" == "stable" ]]; then
486+
delete_app "${i}" "${i^^}_RELEASE_NAME"
487+
fi
488+
489+
done
436490

437491
local secret_name
438492
secret_name=$(application_secret_name "$track")
@@ -536,7 +590,7 @@ ensure_namespace) ensure_namespace ;;
536590
create_secret) create_secret ;;
537591
persist_environment_url) persist_environment_url ;;
538592
auto_database_uri) auto_database_uri ;;
539-
install_postgresql) install_postgresql "${@:2}" ;;
593+
install_app) install_app "${@:2}" ;;
540594
deploy) deploy "${@:2}" ;;
541595
scale) scale "${@:2}" ;;
542596
delete) delete "${@:2}" ;;

0 commit comments

Comments
 (0)