This commit is contained in:
parent
72580b1a67
commit
63c029b9df
88
RESTORE_VALIDATION.md
Normal file
88
RESTORE_VALIDATION.md
Normal file
@ -0,0 +1,88 @@
|
||||
# Gitea Helm Chart And Restore Validation
|
||||
|
||||
Дата проверки: 2026-05-06
|
||||
|
||||
## Что входит в чарт
|
||||
|
||||
Чарт расположен в `gitea/.helm` и ставится как release `gitea` в namespace `gitea`.
|
||||
|
||||
- Gitea `gitea/gitea:1.22.6`.
|
||||
- Gitea runner `gitea/act_runner:0.2.11`.
|
||||
- PostgreSQL через dependency `postgresql-preprod:16.4.8` из `cr.yandex/crp3ccidau046kdj8g9q/charts/postgresql-preprod`.
|
||||
- `universal-chart:0.1.9` используется для runner.
|
||||
- Для Gitea используется статический Deployment template, потому что нужны sidecar containers для файлового backup без Multi-Attach PVC.
|
||||
- Ingress/VirtualService в чарте нет, внешний routing остается в отдельном чарте.
|
||||
- Чувствительные значения не лежат в `values.yaml`; секреты берутся из `gitea-secret`/`postgresql-secret`, шаблон секрета использует `lookup` и generated fallback values.
|
||||
|
||||
## Backup
|
||||
|
||||
Файлы Gitea backup:
|
||||
|
||||
- Реализованы sidecar containers в pod Gitea.
|
||||
- `gitea-files-archive` читает `/data` read-only и собирает архив во временный `emptyDir`.
|
||||
- `gitea-files-upload` отправляет архив в S3.
|
||||
- Такой режим не монтирует `gitea-data` во второй pod и не ловит Multi-Attach на RWO PVC.
|
||||
|
||||
PostgreSQL backup:
|
||||
|
||||
- В чарте есть `CronJob/gitea-postgresql-backup`.
|
||||
- Dump создается через `pg_dump` пользователем `gitea`.
|
||||
- Upload идет в S3 через `amazon/aws-cli:2.15.57`.
|
||||
|
||||
Использованные S3 keys:
|
||||
|
||||
- Files: `gitops-backups/gitea-files/gitea-files-2026-05-06-145356.tar.gz`
|
||||
- PostgreSQL: `gitops-backups/postgresql/gitea-postgresql-2026-05-06-145822.sql.gz`
|
||||
|
||||
## Restore
|
||||
|
||||
Restore запускается через `helm upgrade --install` с отдельным values-файлом:
|
||||
|
||||
- `restore.enabled=true`
|
||||
- `restore.files.enabled=true`
|
||||
- `restore.postgresql.enabled=true`
|
||||
- `restore.s3.giteaFilesKey=<files backup key>`
|
||||
- `restore.s3.postgresqlDumpKey=<postgresql dump key>`
|
||||
|
||||
Restore hook делает:
|
||||
|
||||
- scale down Deployment `gitea`;
|
||||
- скачивание backup archives из S3;
|
||||
- очистку `/data` и распаковку файлового backup;
|
||||
- drop schema `public` в базе `gitea`;
|
||||
- restore SQL dump через пользователя `gitea`;
|
||||
- verification количества public tables и core tables;
|
||||
- scale up Deployment `gitea`.
|
||||
|
||||
## Проверка
|
||||
|
||||
Проверено на `yc-infra-prod`, namespace `gitea`.
|
||||
|
||||
- Release `gitea` установлен заново после полной очистки namespace/PVC/PV.
|
||||
- Pods после чистой установки: `gitea`, `gitea-ci-worker`, `postgresql-0`.
|
||||
- Создан admin user `bootstrap`.
|
||||
- Создан access token для API/git push.
|
||||
- В свежий Gitea запушен репозиторий `bootstrap/gitea`.
|
||||
- В репозиторий добавлен workflow `.gitea/workflows/trash-ci.yaml`.
|
||||
- Runner зарегистрирован через generated registration token.
|
||||
- Runner объявился с labels `linux-amd64` и `linux-shell`.
|
||||
- CI task по `bootstrap/gitea` был принят runner.
|
||||
- Тестовые файлы для restore созданы в `/data/backup-test` и `/data/gitea/custom/backup-test`.
|
||||
- Файловый backup отправлен в S3.
|
||||
- PostgreSQL backup вручную запущен из существующего `CronJob/gitea-postgresql-backup`.
|
||||
- Restore запущен через `helm upgrade --install`.
|
||||
- Restore job завершился успешно.
|
||||
- Verification restore job: `110 public tables`, `3 core tables`.
|
||||
- После restore Gitea API вернул `bootstrap/gitea|main`.
|
||||
- После restore на PVC найдены:
|
||||
- `/data/backup-test/blob.bin`
|
||||
- `/data/backup-test/generated-at.txt`
|
||||
- `/data/gitea/custom/backup-test/marker.txt`
|
||||
- `/data/git/repositories/bootstrap/gitea.git`
|
||||
- После restore в базе:
|
||||
- `users=1`
|
||||
- `repos=1`
|
||||
- repository `bootstrap/gitea`
|
||||
- action runs `1` и `2`
|
||||
|
||||
Итог: полный цикл install, runner, CI, backup files, backup PostgreSQL и restore из S3 проверен.
|
||||
Loading…
Reference in New Issue
Block a user