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 apiVersion: v1
description: etcdctl Client description: etcdctl Client
name: etcdctl-utility name: etcdctl-utility
version: 0.1.6 version: 0.1.7

View File

@@ -146,43 +146,24 @@ EOF
if $ETCD_REMOTE_BACKUP_ENABLED; then if $ETCD_REMOTE_BACKUP_ENABLED; then
export ETCD_RGW_SECRET={{ $envAll.Values.conf.etcd_backup_restore.secrets.kube_system.rgw_secret }} 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: valueFrom:
secretKeyRef: secretKeyRef:
name: ${ETCD_RGW_SECRET} name: ${ETCD_RGW_SECRET}
key: OS_AUTH_URL key: ${KEY_NAME}
- 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
EOF EOF
fi
done
fi fi
cat >> $TMP_FILE << EOF cat >> $TMP_FILE << EOF

View File

@@ -13,4 +13,4 @@
apiVersion: v1 apiVersion: v1
description: Porthole MySql Client description: Porthole MySql Client
name: mysqlclient-utility 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) 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 MARIADB_REMOTE_BACKUP_ENABLED=$(echo $MARIADB_REMOTE_BACKUP_ENABLED | sed 's/"//g')
export TMP_FILE=$(mktemp -p /tmp) 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 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 if $MARIADB_REMOTE_BACKUP_ENABLED; then
export MARIADB_RGW_SECRET={{ $envAll.Values.conf.mariadb_backup_restore.secrets.rgw_secret }} 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: valueFrom:
secretKeyRef: secretKeyRef:
name: ${MARIADB_RGW_SECRET} name: ${MARIADB_RGW_SECRET}
key: OS_AUTH_URL key: ${KEY_NAME}
- 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
EOF EOF
fi
done
fi fi
if $TLS_ENABLED; then if $TLS_ENABLED; then

View File

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

View File

@@ -159,43 +159,24 @@ EOF
if $POSTGRESQL_REMOTE_BACKUP_ENABLED; then if $POSTGRESQL_REMOTE_BACKUP_ENABLED; then
export POSTGRESQL_RGW_SECRET={{ $envAll.Values.conf.postgresql_backup_restore.secrets.rgw_secret }} 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: valueFrom:
secretKeyRef: secretKeyRef:
name: ${POSTGRESQL_RGW_SECRET} name: ${POSTGRESQL_RGW_SECRET}
key: OS_AUTH_URL key: ${KEY_NAME}
- 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
EOF EOF
fi
done
fi fi
cat >> $TMP_FILE << EOF cat >> $TMP_FILE << EOF
@@ -248,4 +229,4 @@ cat >> $TMP_FILE << EOF
EOF EOF
kubectl create -n $POSTGRESQL_POD_NAMESPACE -f $TMP_FILE kubectl create -n $POSTGRESQL_POD_NAMESPACE -f $TMP_FILE
rm -rf $TMP_FILE # rm -rf $TMP_FILE