4.2 KiB
4.2 KiB
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читает/dataread-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=truerestore.files.enabled=truerestore.postgresql.enabled=truerestore.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=1repos=1- repository
bootstrap/gitea - action runs
1и2
Итог: полный цикл install, runner, CI, backup files, backup PostgreSQL и restore из S3 проверен.