Nowy komponent skladajacy raport PDF. Osobny obraz, bo dzwiga TeX Live (setki MB)
— ta sama zasada co przy izolacji swissepha (LOG-27): obraz produktu zostaje maly,
TeX aktualizuje sie niezaleznie, a awaria renderu nie kladzie aplikacji, tylko
przycisk „Pobierz PDF".
- render.yaml — Deployment + Service. ClusterIP, BEZ NodePortu i Ingressu: nie ma
powodu, zeby ktokolwiek siegal do tej uslugi z zewnatrz. Rozmawia wylacznie
z prezentacja.
- Szyfrowanie: wlasny, TRZECI klucz LINK_KEY_PRESENTATION_RENDER z sekretu
astrololo-link. Osobny, bo tym laczem plynie CALY raport (dane urodzeniowe
i opisy z baz) — przejecie go nie moze otwierac lacza do logiki ani danych.
LINK_ENCRYPTION_REQUIRED=true, wiec bez klucza pod NIE wstaje.
- readOnlyRootFilesystem + emptyDir na /tmp: kompilacja pisze tylko do katalogu
tymczasowego, raport nie zostawia sladu w kontenerze.
- Limity rozjechane celowo (100m/256Mi -> 1500m/1Gi): XeLaTeX na obszernym
raporcie bierze duzo, ale na krotko.
- presentation: RENDER_URL + trzeci klucz lacza.
Sekret astrololo-link trzeba UZUPELNIC o trzeci klucz PRZED wdrozeniem,
zachowujac dwa dotychczasowe — komenda w instrukcji.
Sprawdzone: kubectl kustomize + apply --dry-run=server na zywym klastrze
(service/render i deployment.apps/render created).
Pelna instrukcja: docs/wdrozenie-render-pdf.md w repo astrololo.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
updates image gitea/astrololo-data tag 'f1956a08' to 'f34016a4'
updates image gitea/astrololo-logic tag '40c9bf79' to 'f34016a4'
updates image gitea/astrololo-presentation tag '40c9bf79' to 'f34016a4'
updates image gitea/astrololo-data tag 'e8f868e9' to 'f1956a08'
updates image gitea/astrololo-logic tag 'e8f868e9' to 'f1956a08'
updates image gitea/astrololo-presentation tag 'e8f868e9' to 'f1956a08'
updates image gitea/astrololo-data tag '56fdf01d' to 'e8f868e9'
updates image gitea/astrololo-logic tag '56fdf01d' to 'e8f868e9'
updates image gitea/astrololo-presentation tag '56fdf01d' to 'e8f868e9'
Do tej pory aplikacja chodzila po zwyklym http, a logowanie szlo przez HTTP
Basic — czyli haslo leciało siecia w postaci trywialnej do podsluchania.
Poza bezpieczenstwem TLS naprawia DWIE funkcje zepsute dzis z tego samego
powodu: geolokalizacja przegladarki („Tu i teraz") i kopiowanie promptu do
schowka dzialaja wylacznie w secure context, wiec po http po prostu odmawialy.
Wlasne CA, nie Let's Encrypt — klaster stoi w LAN (traefik trzyma LoadBalancera
na 192.168.1.x), wiec walidacja HTTP-01 nie ma jak dojsc z internetu, a DNS-01
wymagalby trzymania w klastrze tokena API do domeny.
Co dochodzi:
- tls.yaml — Issuer selfSigned -> korzen CA (10 lat, importowany raz do
przegladarki) -> Issuer CA -> certyfikat serwera (90 dni, odnawiany sam).
Krotki termin certyfikatu serwera jest CELOWY: odnawianie sprawdza sie wtedy
co kwartal, a nie dopiero za dekade.
- ingress.yaml — wejscie po https + naglowki (HSTS rok, nosniff, frameDeny)
oraz osobny Ingress na porcie 80 robiacy przekierowanie. Rozdzielone
swiadomie: gdyby redirect wisial na tym samym routerze co wejscie po https,
odsylalby sam do siebie w kolko.
- presentation: Service NodePort -> ClusterIP. NodePort byl druga,
nieszyfrowana droga do aplikacji, czyli obejsciem calego PRE-16.
Zmiana wymagajaca uwagi: TRUST_PROXY=true. Za Ingressem bezposrednim rozmowca
jest zawsze pod Traefika, wiec bez tego limit zadan liczylby WSZYSTKICH do
jednego wiadra i pierwsza osoba, ktora go wyklika, odcielaby pozostalych.
Sprawdzone: Ingress i Middleware przechodza `kubectl apply --dry-run=server`
na zywym klastrze (CRD traefik.io/v1alpha1 sa, entrypointy web/websecure sa).
Obiekty cert-managera zwalidowane offline wobec oficjalnego schematu z CRD
v1.21.0 z additionalProperties=false — literowka w nazwie pola zostalaby
zlapana. `kubectl kustomize` przechodzi dla obu profili (bazowego i swisseph).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
updates image gitea/astrololo-data tag '877ec91f' to '929b6912'
updates image gitea/astrololo-logic tag '114b7eeb' to '929b6912'
updates image gitea/astrololo-presentation tag '114b7eeb' to '929b6912'
updates image gitea/astrololo-data tag '752f477a' to '877ec91f'
updates image gitea/astrololo-logic tag '5203ba9e' to '877ec91f'
updates image gitea/astrololo-presentation tag '64d1afc7' to '877ec91f'
updates image gitea/astrololo-data tag 'c75f8377' to 'de5d5895'
updates image gitea/astrololo-logic tag 'ab6fc072' to 'de5d5895'
updates image gitea/astrololo-presentation tag 'ab6fc072' to 'de5d5895'
updates image gitea/astrololo-data tag '9323803c' to 'c75f8377'
updates image gitea/astrololo-logic tag '9323803c' to 'c75f8377'
updates image gitea/astrololo-presentation tag '9323803c' to 'c75f8377'