Подготовить безопасный production rollout

This commit is contained in:
Zuev
2026-07-29 23:13:17 +03:00
parent a78a93f2f0
commit 8bb7fe97eb
16 changed files with 494 additions and 324 deletions

View File

@@ -0,0 +1,26 @@
---
type: "query"
date: "2026-07-29T19:26:44.188240+00:00"
question: "теперь напиши мне инструкцию как это всё выыкатить на прод. у мня уже поднят на проде этот сервис со старой базой данных, но я могу её затереть. ci/cd тоже настроен, по сути я прямо сейчас могу залить это в ветку мейн и оно должно раскататься. каие есть подводные камни после изменений безопасности которые мы внесли?"
contributor: "graphify"
outcome: "useful"
source_nodes: ["Workflow сборки и публикации Docker-образов", "Production-инфраструктура Kubernetes", "Flyway-миграции", "Политика JWT-секрета", "Tenants ConfigMap"]
---
# Q: теперь напиши мне инструкцию как это всё выыкатить на прод. у мня уже поднят на проде этот сервис со старой базой данных, но я могу её затереть. ci/cd тоже настроен, по сути я прямо сейчас могу залить это в ветку мейн и оно должно раскататься. каие есть подводные камни после изменений безопасности которые мы внесли?
## Answer
Expanded from original query via vocab: [auth, cookie, database, docker, flyway, jwt, kubernetes, production, refresh, secret, secure, workflow]. Прямой push в main для первого rollout небезопасен: workflow меняет только image digests, а актуальные ../k8s манифесты находятся вне Git-корня и не применяются. В действующем кластере отсутствуют tenants-secret и otel-postgres-secret, а app-secret не содержит JWT_SECRET. Для консолидированной V1 нужно полностью пересоздать все tenant-БД, затем выполнить первый rollout вручную по digest через ../k8s/deploy.sh. Инструкция и ограничения rollback обновлены в STARTUP_GUIDE.md.
## Outcome
- Signal: useful
## Source Nodes
- Workflow сборки и публикации Docker-образов
- Production-инфраструктура Kubernetes
- Flyway-миграции
- Политика JWT-секрета
- Tenants ConfigMap

View File

@@ -0,0 +1,24 @@
---
type: "query"
date: "2026-07-29T19:59:04.551881+00:00"
question: "новая схема на проде на удалённом сервере создана через CREATE SCHEMA public. я проверил, давай дальше"
contributor: "graphify"
outcome: "useful"
source_nodes: ["Workflow сборки и публикации Docker-образов", "Production-инфраструктура Kubernetes", "PostgreSQL-сервис Docker Compose"]
---
# Q: новая схема на проде на удалённом сервере создана через CREATE SCHEMA public. я проверил, давай дальше
## Answer
Expanded from original query via vocab: [auth, database, flyway, jwt, kubernetes, postgres, production, secret, workflow]. Граф связал workflow сборки immutable Docker-образов, production-инфраструктуру Kubernetes и tenant PostgreSQL. Проверка исходников и кластера подтвердила: консолидированная V1 проходит на чистом PostgreSQL, push в main запускает image-only rollout, а новые манифесты ../k8s нужно применить вручную. До push необходимо создать JWT_SECRET в app-secret, tenants-secret и otel-postgres-secret; значения секретов не читались и не изменялись.
## Outcome
- Signal: useful
## Source Nodes
- Workflow сборки и публикации Docker-образов
- Production-инфраструктура Kubernetes
- PostgreSQL-сервис Docker Compose

View File

@@ -0,0 +1,25 @@
---
type: "query"
date: "2026-07-29T20:12:38.880629+00:00"
question: "сам можешь выполнить эти действия?"
contributor: "graphify"
outcome: "useful"
source_nodes: ["Workflow сборки и публикации Docker-образов", "Production-инфраструктура Kubernetes", "Job деплоя в Kubernetes", "Политика JWT-секрета"]
---
# Q: сам можешь выполнить эти действия?
## Answer
Expanded from original query via vocab: [workflow, production, kubernetes, secret, jwt, tenant, postgres, otel, gitea, main, registry, flyway]. Первый traversal по перегруженному main был нерелевантен; повторный запрос без main связал Workflow сборки и публикации Docker-образов, Production-инфраструктуру Kubernetes, Job деплоя в Kubernetes и Политику JWT-секрета. По отдельному разрешению старый backend масштабирован до 0, обе tenant-БД read-only проверены как пустые и имеющие CREATE, в app-secret добавлен новый JWT_SECRET без вывода значения, созданы переходные tenants-secret и otel-postgres-secret. Workflow изменён так, что push выполняет build/scan, а deploy разрешён только ручному workflow_dispatch. Server dry-run выявил immutable roleRef; внешний rbac.yaml исправлен новым именем backend-tenant-secret-binding, повторный dry-run прошёл.
## Outcome
- Signal: useful
## Source Nodes
- Workflow сборки и публикации Docker-образов
- Production-инфраструктура Kubernetes
- Job деплоя в Kubernetes
- Политика JWT-секрета