Add remote backups failover support

This PS adds a support for a failover location to
upload and retrieve remote backups.

Change-Id: I9f79649ebb6efe112bf57d7fbac8d62e8c22a3db
This commit is contained in:
Sergiy Markin
2025-01-24 23:14:31 +00:00
parent 807a222e26
commit f8f88c6f2f
6 changed files with 46 additions and 104 deletions

View File

@@ -13,4 +13,4 @@
apiVersion: v1
description: etcdctl Client
name: etcdctl-utility
version: 0.1.6
version: 0.1.7

View File

@@ -146,43 +146,24 @@ EOF
if $ETCD_REMOTE_BACKUP_ENABLED; then
export ETCD_RGW_SECRET={{ $envAll.Values.conf.etcd_backup_restore.secrets.kube_system.rgw_secret }}
cat >> $TMP_FILE << EOF
- name: OS_AUTH_URL
# Get the list of keys and their values from the secret
SECRET_DATA=$(kubectl get secret $ETCD_RGW_SECRET -n $ETCD_POD_NAMESPACE -o jsonpath="{.data}")
# Iterate over each key
for KEY_NAME in $(echo $SECRET_DATA | jq -r 'keys[]'); do
KEY_VALUE=$(echo $SECRET_DATA | jq -r --arg key "$KEY_NAME" '.[$key]')
if [ -n "$KEY_VALUE" ]; then
cat >> $TMP_FILE << EOF
- name: ${KEY_NAME}
valueFrom:
secretKeyRef:
name: ${ETCD_RGW_SECRET}
key: OS_AUTH_URL
- name: OS_REGION_NAME
valueFrom:
secretKeyRef:
name: ${ETCD_RGW_SECRET}
key: OS_REGION_NAME
- name: OS_USERNAME
valueFrom:
secretKeyRef:
name: ${ETCD_RGW_SECRET}
key: OS_USERNAME
- name: OS_PROJECT_NAME
valueFrom:
secretKeyRef:
name: ${ETCD_RGW_SECRET}
key: OS_PROJECT_NAME
- name: OS_USER_DOMAIN_NAME
valueFrom:
secretKeyRef:
name: ${ETCD_RGW_SECRET}
key: OS_USER_DOMAIN_NAME
- name: OS_PROJECT_DOMAIN_NAME
valueFrom:
secretKeyRef:
name: ${ETCD_RGW_SECRET}
key: OS_PROJECT_DOMAIN_NAME
- name: OS_PASSWORD
valueFrom:
secretKeyRef:
name: ${ETCD_RGW_SECRET}
key: OS_PASSWORD
key: ${KEY_NAME}
EOF
fi
done
fi
cat >> $TMP_FILE << EOF

View File

@@ -13,4 +13,4 @@
apiVersion: v1
description: Porthole MySql Client
name: mysqlclient-utility
version: 0.1.9
version: 0.1.10

View File

@@ -14,7 +14,6 @@ export MARIADB_BACKUP_BASE_PATH=$(kubectl get secret -n ${MARIADB_POD_NAMESPACE}
MARIADB_REMOTE_BACKUP_ENABLED=$(kubectl get secret -n ${MARIADB_POD_NAMESPACE} ${MARIADB_CONF_SECRET} -o json | jq -r .data.REMOTE_BACKUP_ENABLED | base64 -d)
export MARIADB_REMOTE_BACKUP_ENABLED=$(echo $MARIADB_REMOTE_BACKUP_ENABLED | sed 's/"//g')
export TMP_FILE=$(mktemp -p /tmp)
if ! kubectl -n ${MARIADB_POD_NAMESPACE} --no-headers=true get secret {{ $envAll.Values.conf.mariadb_backup_restore.secrets.tls_secret }} > /dev/null 2>&1 ; then
@@ -171,43 +170,24 @@ EOF
if $MARIADB_REMOTE_BACKUP_ENABLED; then
export MARIADB_RGW_SECRET={{ $envAll.Values.conf.mariadb_backup_restore.secrets.rgw_secret }}
cat >> $TMP_FILE << EOF
- name: OS_AUTH_URL
# Get the list of keys and their values from the secret
SECRET_DATA=$(kubectl get secret $MARIADB_RGW_SECRET -n $MARIADB_POD_NAMESPACE -o jsonpath="{.data}")
# Iterate over each key
for KEY_NAME in $(echo $SECRET_DATA | jq -r 'keys[]'); do
KEY_VALUE=$(echo $SECRET_DATA | jq -r --arg key "$KEY_NAME" '.[$key]')
if [ -n "$KEY_VALUE" ]; then
cat >> $TMP_FILE << EOF
- name: ${KEY_NAME}
valueFrom:
secretKeyRef:
name: ${MARIADB_RGW_SECRET}
key: OS_AUTH_URL
- name: OS_REGION_NAME
valueFrom:
secretKeyRef:
name: ${MARIADB_RGW_SECRET}
key: OS_REGION_NAME
- name: OS_USERNAME
valueFrom:
secretKeyRef:
name: ${MARIADB_RGW_SECRET}
key: OS_USERNAME
- name: OS_PROJECT_NAME
valueFrom:
secretKeyRef:
name: ${MARIADB_RGW_SECRET}
key: OS_PROJECT_NAME
- name: OS_USER_DOMAIN_NAME
valueFrom:
secretKeyRef:
name: ${MARIADB_RGW_SECRET}
key: OS_USER_DOMAIN_NAME
- name: OS_PROJECT_DOMAIN_NAME
valueFrom:
secretKeyRef:
name: ${MARIADB_RGW_SECRET}
key: OS_PROJECT_DOMAIN_NAME
- name: OS_PASSWORD
valueFrom:
secretKeyRef:
name: ${MARIADB_RGW_SECRET}
key: OS_PASSWORD
key: ${KEY_NAME}
EOF
fi
done
fi
if $TLS_ENABLED; then

View File

@@ -14,4 +14,4 @@
apiVersion: v1
description: PostgreSQL Client
name: postgresql-utility
version: 0.1.5
version: 0.1.6

View File

@@ -159,43 +159,24 @@ EOF
if $POSTGRESQL_REMOTE_BACKUP_ENABLED; then
export POSTGRESQL_RGW_SECRET={{ $envAll.Values.conf.postgresql_backup_restore.secrets.rgw_secret }}
cat >> $TMP_FILE << EOF
- name: OS_AUTH_URL
# Get the list of keys and their values from the secret
SECRET_DATA=$(kubectl get secret $POSTGRESQL_RGW_SECRET -n $POSTGRESQL_POD_NAMESPACE -o jsonpath="{.data}")
# Iterate over each key
for KEY_NAME in $(echo $SECRET_DATA | jq -r 'keys[]'); do
KEY_VALUE=$(echo $SECRET_DATA | jq -r --arg key "$KEY_NAME" '.[$key]')
if [ -n "$KEY_VALUE" ]; then
cat >> $TMP_FILE << EOF
- name: ${KEY_NAME}
valueFrom:
secretKeyRef:
name: ${POSTGRESQL_RGW_SECRET}
key: OS_AUTH_URL
- name: OS_REGION_NAME
valueFrom:
secretKeyRef:
name: ${POSTGRESQL_RGW_SECRET}
key: OS_REGION_NAME
- name: OS_USERNAME
valueFrom:
secretKeyRef:
name: ${POSTGRESQL_RGW_SECRET}
key: OS_USERNAME
- name: OS_PROJECT_NAME
valueFrom:
secretKeyRef:
name: ${POSTGRESQL_RGW_SECRET}
key: OS_PROJECT_NAME
- name: OS_USER_DOMAIN_NAME
valueFrom:
secretKeyRef:
name: ${POSTGRESQL_RGW_SECRET}
key: OS_USER_DOMAIN_NAME
- name: OS_PROJECT_DOMAIN_NAME
valueFrom:
secretKeyRef:
name: ${POSTGRESQL_RGW_SECRET}
key: OS_PROJECT_DOMAIN_NAME
- name: OS_PASSWORD
valueFrom:
secretKeyRef:
name: ${POSTGRESQL_RGW_SECRET}
key: OS_PASSWORD
key: ${KEY_NAME}
EOF
fi
done
fi
cat >> $TMP_FILE << EOF
@@ -248,4 +229,4 @@ cat >> $TMP_FILE << EOF
EOF
kubectl create -n $POSTGRESQL_POD_NAMESPACE -f $TMP_FILE
rm -rf $TMP_FILE
# rm -rf $TMP_FILE