Резервное копирование в Kubernetes
Создание резервной копии
Внимание!
- Продукт будет остановлен на время создания резервной копии. Не используйте утилиту
sudo
для создания резервных копий. - Приведенный скрипт не распространяется на внешние БД (в случае их настройки и использования). Для внешних БД необходимо настроить резервное копирование отдельным шагом (штатными средствами PostgreSQL, Minio и т.д.)
- Перед выполнением скрипта на создание резервной копии перейдите в директорию, где будут храниться резервные копии, папки scripts/ и jobs/:
cd my-testit-directory ls # Здесь должны присутствовать папки scripts/ и jobs/
- Определите namespace (пространство имен), в котором запущено приложение Test IT:
kubectl get ns # Здесь будут отображены доступные пространства имен
- Убедитесь, что версии Postgres и Minio/mc: совпадают с версиями, запущенными в пакете Test IT:
# testit_backend/values.yaml postgres: image: name: <...> tag: 14.8-bookworm # /jobs/postgres/restore/job.yaml, /jobs/postgres/backup/job.yaml spec: template: spec: containers: - name: <...> image: postgres:14.8-bookworm ####################################################### # testit_backend/values.yaml minio: image: name: <...> tag: RELEASE.2023-05-04T21-44-30Z
- Создайте резервную копию с помощью набора команд, заменив
<namespace>
на нужное вам пространство имен:# Задайте переменные для доступа на PostgreSQL и Minio: # Значения для переменных располагаются в testit_backend/values.yaml:general:config или testit_backend/values-override.yaml:general:config export POSTGRES_HOST="postgres" export POSTGRES_PORT="5432" export POSTGRES_USER="postgres" export POSTGRES_PASSWORD="password" export AWS_CONNECTION_STRING="http://minio:9000" export AWS_ACCESS_KEY="myMinioAccessKey" export AWS_SECRET_KEY="myMinioSecretKey" chmod +x scripts/k8s_backup.sh ./scripts/k8s_backup.sh <namespace> # Пример: ./scripts/k8s_backup.sh my-testit-namespace
Система будет запущена после окончания процесса. В рабочей директории будет создана папка backups
, содержащая папки с датами резервного копирования, внутри которых расположены архивы с резервными копиями. Формат отображения дат:
backups/
{день}_{месяц}_{год}/
{сервис1}_backup.tar
{сервис2}_backup.tar
...
# Например:
backups/
18_07_2023/
postgres_backup.tar
minio_backup.tar
...
Восстановление из резервной копии
Внимание!
- Продукт будет остановлен на время восстановления из резервной копии.
- В директории со скриптами (в папке scripts/) должна находиться папка jobs/, в которой указаны ресурсы K8s, необходимые для восстановления из резервной копии.
- При переносе продукта на другой сервер рекомендуется предварительно установить Test IT на новый сервер с настройками по умолчанию, затем восстановить данные системы из резервной копии. Для наилучшей совместимости на новом сервере рекомендуется устанавливать Test IT той же версии, которая содержится в резервной копии, переносимой из исходного сервера.
- Перед выполнением скрипта на восстановление из резервной копии перейдите в директорию, где хранятся резервные копии, и выберите дату создания резервной копии для восстановления. Например:
# Перейдите в директорию cd my-testit-directory ls # Здесь должны присутствовать папки backups/, scripts/ и jobs/ # Проверьте содержимое папки с резервными копиями: ls backups/ # Здесь будут выведены папки с датами резервного копирования, например: 19_07_2023/ 20_07_2023/ 21_07_2023/
- Определите namespace (пространство имен), в котором запущено Test IT:
kubectl get ns # Здесь будут отображены доступные пространства имен
- Восстановите систему из резервной копии с помощью набора команд:
# Задайте переменные для доступа на PostgreSQL и Minio: # Значения для переменных располагаются в testit_backend/values.yaml:general:config или testit_backend/values-override.yaml:general:config export POSTGRES_HOST="postgres" export POSTGRES_PORT="5432" export POSTGRES_USER="postgres" export POSTGRES_PASSWORD="password" export AWS_CONNECTION_STRING="http://minio:9000" export AWS_ACCESS_KEY="myMinioAccessKey" export AWS_SECRET_KEY="myMinioSecretKey" chmod +x scripts/k8s_restore.sh ./scripts/k8s_restore.sh <namespace> <backup_date> # Пример: ./scripts/k8s_restore.sh my-testit-namespace 18_07_2023
Система будет запущена после окончания процесса.