feat(on-snolla): MinIO split S3-direct-path cutover — stack 22 bump 473923e494db->07db7e3

Track B3 pilot (on-snolla, S3-direct reads, no imgproxy). In-place image bump
of live stack 22 by snolla-live-prod-inplace-image-bump recipe:
- build on VDS (07db7e3 = config endpoint minio.kzntsv.site -> minio.vds.kzntsv.site,
  snolla 0.42.1 v2, NO package.json bump — user decision: split without snolla version bump)
- staging :5077 from live env: robots/home/sitemap 200
- S3-direct gate: theme asset /themes/c406.../bootstrap.min.css -> 200, 97324 B == live
  (aws-sdk v2 -> vds minio 2025 — compat CONFIRMED, no @smithy pin needed, no SigV4 403)
- sitemap parity staging==live 3/3 (/, /c, /yandex); /c 404 parity
- Portainer PUT stack 22 env-preserving (8/8), prune:false pullImage:true -> 200
- live container 07db7e3 healthy, mem_limit 512m preserved
- live-smoke https://on.snolla.com: theme asset 200 97324 B, TLS cert untouched (LE YR1, Oct 18)
Rollback: PUT stack 22 back to 473923e494db (rollback tag in registry, pred endpoint
minio.kzntsv.site/books-vds, live mirror). RUVDS DECOMM 2026-07-21 — image-tag rollback only.

scripts/minio-split-cutover/runbook.md: Track B progress table (B1 mirror DONE,
B2 imgproxy DNS-flip LIVE, B3 on-snolla pilot LIVE, remaining 5 sites + Track A TODO).

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-30 13:23:23 +03:00
parent 71dee93e86
commit 443713e8b3
2 changed files with 215 additions and 7 deletions

View File

@@ -4,13 +4,15 @@
# (VDS-rule: стеки через Portainer, не ssh+compose).
#
# Модель: монолит @snollajs/snolla (0.42.1) / core / liquid / data — читает БД-контент MoreThenCms
# (mssql.kzntsv.site) + server-side Liquid render. Ассеты из MinIO (minio.kzntsv.site). In-process sharp,
# delivery=serve-bytes, cache=local-variant. imgproxy в путях нет (как tandemmebel — сырой /imgproxy -> 404 норма).
# (mssql.kzntsv.site) + server-side Liquid render. Ассеты из MinIO (minio.vds.kzntsv.site — CMS-media split
# 2026-07-30, был minio.kzntsv.site/books-vds). In-process sharp, delivery=serve-bytes, cache=local-variant.
# imgproxy в путях нет (как tandemmebel — сырой /imgproxy -> 404 норма).
# node-config: NODE_ENV=production -> default(dev,gitignored)+production.json+ENV-override.
# ЛЕНДИНГ (1 Page / + 2 StaticPages), БЕЗ блога/каталога/e-commerce.
#
# Образ собирается АДМИНОМ на VDS из victor/on.snolla.com/deploy/Dockerfile (build-arg VERDACCIO_TOKEN,
# @snollajs/* из verdaccio.kzntsv.site). Тег = git-sha репо on.snolla.com (текущий 473923e494db).
# @snollajs/* из verdaccio.kzntsv.site). Тег = git-sha репо on.snolla.com (текущий 07db7e3 — s3.endpoint
# -> minio.vds.kzntsv.site; pred. 473923e494db).
# Homepage render byte-identical прод-HTML (verified direct diff + completeness-gate 3/3 loc parity 2026-07-20).
#
# Домен: LIVE — on.snolla.com (cert LE HTTP-01, CN=on.snolla.com, issued 2026-07-20, until 2026-10-18).
@@ -18,10 +20,11 @@
# авторит. NS ns1/ns2.reg.ru verified -> VDS), traefik rule staging->боевой (LE-порядок соблюдён),
# LE-серт issued on first hit. Live-smoke GREEN, homepage byte-identical прод-HTML, sitemap 3/3 parity.
# Предыстория: жил на RUVDS IIS (80.64.31.36) до 2026-07-20. RUVDS IIS не тронут (rollback = revert DNS).
# План отката = revert DNS reg.ru -> 80.64.31.36 (RUVDS IIS жив) ИЛИ PUT стека 22 назад на тег (пока
# единственный тег 473923e494db = :latest — первый deploy; образных rollback-тегов пока нет).
# План отката = PUT стека 22 назад на тег 473923e494db (rollback-тег в registry, pred. endpoint
# minio.kzntsv.site/books-vds — жив, миррор там). RUVDS IIS DECOMM 2026-07-21 — rollback только образ-тегом.
#
# Runtime egress: mssql.kzntsv.site:1433, minio.kzntsv.site:443 (оригиналы + variant-cache), smtp.yandex.ru:465.
# Runtime egress: mssql.kzntsv.site:1433, minio.vds.kzntsv.site:443 (theme assets — CMS-media split 2026-07-30,
# только чтение aws-sdk v2; был minio.kzntsv.site/books-vds), smtp.yandex.ru:465.
#
# Секреты — env на VDS (Portainer stack env), НЕ в образ, НЕ в git. Значения ${...} инжектит Portainer
# из stack-переменных (переиспользованы verbatim из tandemmebel стека 20 — общая snolla-инфра). Контракт:
@@ -31,7 +34,7 @@
services:
on-snolla:
container_name: on-snolla
image: registry.kzntsv.site/on-snolla:473923e494db # git-sha victor/on.snolla.com master 473923e494db (snolla 0.42.1). rollback-теги в registry: 473923e494db (:latest он же — первый deploy, отката пока нет, revert DNS -> RUVDS).
image: registry.kzntsv.site/on-snolla:07db7e3 # git-sha on.snolla.com master 07db7e3 (snolla 0.42.1, s3.endpoint -> minio.vds.kzntsv.site). rollback-тег в registry: 473923e494db (pred. endpoint minio.kzntsv.site/books-vds, жив).
restart: unless-stopped
mem_limit: 512m # guardrail: snolla baseline ~100-200M; OOM -> restart. standalone-compose -> mem_limit (НЕ deploy.resources, swarm-only).
environment: