Подготовить безопасный production rollout
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Журнал исправления проблем
|
||||
|
||||
Обновлено: 2026-07-19 (Europe/Moscow).
|
||||
Обновлено: 2026-07-29 (Europe/Moscow).
|
||||
|
||||
## Область и неизменяемые данные
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
| `V2__subgroups_active_unique_name.sql` | `68f5525a50ddba4f8800a63cab3cd0f84779e301c4a1f29a6e0399f97fbdb30b` |
|
||||
|
||||
Текущая единая baseline-миграция: `V1__init.sql`, SHA-256
|
||||
`fffedf66e8bf7d25d2d8c1b1a6146b45dd5b7e52233d05a68de8bf62c817f7a7`.
|
||||
`a984718777f1b4695868549e3c805c8b22edbb82fbe0b8731563adf5f11e1742`.
|
||||
Упоминания V2–V7 в исторических записях ниже описывают последовательность разработки до
|
||||
консолидации и не означают наличие этих файлов в текущем дереве.
|
||||
|
||||
@@ -1047,21 +1047,41 @@
|
||||
- Полностью закрыты и проверены 32 пункта. Для № 1 остаются только операторские ротация,
|
||||
provisioning, rollout и очистка истории, которые исходный prompt прямо запрещает
|
||||
выполнять без отдельных production-полномочий.
|
||||
- Полный backend PostgreSQL/Testcontainers-прогон: 277 тестов, 0 failures, 0 errors,
|
||||
- Полный backend PostgreSQL/Testcontainers-прогон: 300 тестов, 0 failures, 0 errors,
|
||||
0 skipped. Четыре frontend test-suite, `npm run check`, Compose validation,
|
||||
Workflow YAML, artifact/deploy shell-тесты и `git diff --check` прошли.
|
||||
- `kubectl kustomize ../k8s`, production secret-scan, синтаксис deploy-скрипта и расширенный
|
||||
artifact-scan прошли. В production-манифестах отсутствуют mutable `latest` и `:main`.
|
||||
- Каталог Flyway содержит ровно `V1__init.sql`; V2–V4 и другие дополнительные миграции
|
||||
отсутствуют. Финальный SHA-256 V1:
|
||||
`fffedf66e8bf7d25d2d8c1b1a6146b45dd5b7e52233d05a68de8bf62c817f7a7`.
|
||||
`a984718777f1b4695868549e3c805c8b22edbb82fbe0b8731563adf5f11e1742`.
|
||||
- Исправление нумерации недель календарного графика также перенесено из промежуточной V2
|
||||
непосредственно в V1. Чистое применение baseline и формула недель
|
||||
`понедельник–воскресенье` подтверждены
|
||||
`AcademicCalendarWeekNumberBaselineIntegrationTest`.
|
||||
|
||||
## Точка продолжения
|
||||
|
||||
Текущий этап: **реализация и проверка всех разрешённых изменений завершены**.
|
||||
Текущий этап: **репозиторная реализация завершена, production подготовлен к первому
|
||||
контролируемому rollout**.
|
||||
|
||||
Оставшееся операторское действие владельца:
|
||||
29 июля 2026 года по отдельному разрешению владельца выполнена production-подготовка:
|
||||
|
||||
1. при готовности production-полномочий выполнить `docs/SECURITY_RUNBOOK.md`: ротацию,
|
||||
provisioning, rollout и очистку истории для № 1. Эти действия не выполнялись
|
||||
автоматически и не требуются для завершения репозиторной реализации.
|
||||
- старый backend остановлен на `0` реплик;
|
||||
- обе tenant-БД (`magistr`, `n8n`) доступны, их схемы `public` пусты, у application role
|
||||
есть права `CREATE` на схему и БД;
|
||||
- в `app-secret` без вывода значения добавлен новый случайный `JWT_SECRET`;
|
||||
- из действующей конфигурации без вывода значений созданы переходные `tenants-secret` и
|
||||
`otel-postgres-secret`;
|
||||
- push в `main` больше не запускает production deploy: job разрешён только для ручного
|
||||
`workflow_dispatch`;
|
||||
- server-side dry-run выявил immutable `roleRef` старого RoleBinding; в
|
||||
`../k8s/rbac.yaml` новый binding переименован в `backend-tenant-secret-binding`, после
|
||||
чего `kubectl apply --dry-run=server -k ../k8s` прошёл.
|
||||
|
||||
Оставшиеся операторские действия:
|
||||
|
||||
1. Закоммитить и отправить изменения в `main`, дождаться checks, сборки и Trivy scan.
|
||||
2. Выполнить первый rollout по digest через `../k8s/deploy.sh apply`.
|
||||
3. После проверки удалить старые ConfigMap/RBAC-объекты, ротировать перенесённые DB/OTel
|
||||
credentials и выполнить согласованную очистку истории по `docs/SECURITY_RUNBOOK.md`.
|
||||
|
||||
Reference in New Issue
Block a user