feat(astrololo): Postgres jako lustro baz w SQL + runbook (DAN-28)
Manifest, wpięcie w kustomization i runbook krok po kroku. DECYZJE ZAPISANE W MANIFEŚCIE, ŻEBY NIE TRZEBA ICH BYŁO ODTWARZAĆ Z GŁOWY: local-path, NIE NFS. Postgres zakłada semantykę blokad i fsync, której NFS nie gwarantuje — to klasyczne źródło uszkodzenia bazy przy nagłym restarcie. Ceną jest przywiązanie do węzła; przy luście odtwarzalnym z Excela to akceptowalne. strategy: Recreate. Wolumen jest ReadWriteOnce, a dwa procesy Postgresa na jednym katalogu danych to uszkodzona baza — rolling próbowałby wstać z nowym podem, zanim stary zejdzie. PGDATA w PODKATALOGU wolumenu: katalog główny potrafi zawierać wpisy systemu plików, a initdb odmawia pracy w niepustym katalogu. Wersja PRZYPIĘTA i poza image-updaterem: podbicie majora wymaga migracji katalogu danych, więc nie może się zdarzyć samo, w nocy, przy okazji builda aplikacji. C.UTF-8 zamiast pl_PL.UTF-8: dopasowanie tekstu robimy przez unaccent i pg_trgm, nie przez collation, a pl_PL wymagałby obrazu z wygenerowanymi lokalizacjami. DATA_PROVIDER zostaje na `excel`. Postgres można wdrożyć i obejrzeć BEZ ryzyka dla działającego wyszukiwania; przełączenie to osobna, późniejsza decyzja. SPRAWDZONE PRZED ODDANIEM: `kubectl kustomize astrololo` składa komplet 21 zasobów bez błędu, YAML parsuje się poprawnie, audyt odwołań potwierdza, że jedynym brakującym sekretem jest astrololo-postgres (oba klucze), a DSN postgresql+psycopg:// jest rozpoznawany przez SQLAlchemy z psycopg 3. NIE SPRAWDZONE: skrypt inicjalizujący nie biegł przeciwko prawdziwemu Postgresowi — na maszynie, na której to powstawało, nie ma Dockera. Zapisane wprost w runbooku; krok 4 jest tam prawdziwym testem. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit was merged in pull request #16.
This commit is contained in:
@@ -44,6 +44,16 @@ spec:
|
||||
# zdążyłby wypuścić zapytanie jawnym tekstem, zanim dostanie odmowę.
|
||||
- name: LINK_ENCRYPTION_REQUIRED
|
||||
value: "true"
|
||||
# Lustro baz w SQL (DAN-28). DSN w SEKRECIE, bo niesie hasło —
|
||||
# w manifeście zostałoby w historii gita na zawsze.
|
||||
#
|
||||
# Sam adres nie przełącza jeszcze warstwy na SQL: o tym decyduje
|
||||
# DATA_PROVIDER, które celowo zostaje na `excel`, dopóki lustro nie
|
||||
# jest zaimplementowane i sprawdzone. Dzięki temu Postgres można
|
||||
# wdrożyć i obejrzeć BEZ ryzyka dla działającego wyszukiwania.
|
||||
- name: SQL_URL
|
||||
valueFrom:
|
||||
secretKeyRef: { name: astrololo-postgres, key: SQL_URL }
|
||||
volumeMounts:
|
||||
- name: cache
|
||||
mountPath: /app/.cache
|
||||
|
||||
Reference in New Issue
Block a user