1d5bd27cdc
Zastępuje gałąź feat/astroklient. Tamta była odbita od mastera sprzed jedenastu commitów i miała przypięte obrazy `ee3c515d`, podczas gdy master stoi na `320a0ab2` — merge w tamtej postaci COFNĄŁBY klaster o kilka wersji. Zamiast przepychać cztery commity przez rebase (każdy konfliktował na README), gałąź jest odtworzona jednym commitem na aktualnym masterze, z zachowanymi tagami. ZMIANA NAZWY. astroklient-demo → astrodemo, wraz z nazwą obrazu, zmiennymi (ASTRODEMO_USERS) i sekretem (astrololo-astrodemo). Nazwa „astroklient" jest zarezerwowana dla warstwy pośredniej: pełne funkcje astrologiczne, bez generowania tekstu i bez administracji. BRAKOWAŁO WEJŚCIA Z ZEWNĄTRZ. Manifesty tworzyły Deployment i Service, ale żadnej reguły w Ingressie — usługa wstałaby i nie dałoby się do niej wejść. Dołożony host astrodemo.czernobog.pl z przekierowaniem z http, a certyfikat obejmuje teraz oba hosty. Osobny host, a nie ścieżka `/demo` pod adresem astrololo, CELOWO: ścieżka dzieliłaby z pełną aplikacją pochodzenie w rozumieniu przeglądarki, czyli i ciasteczka — wejście do jednej ruszałoby sesję w drugiej. OBRAZ NA LIŚCIE OBSERWOWANYCH. Bez wpisu w image-updater.yaml obraz nigdy się nie podbije, choćby CI go budowało. Tak przez chwilę wisiał render na :latest. POPRAWKI W RUNBOOKU. Opis twierdził, że demo pracuje na produkcyjnej warstwie danych — nieprawda od PRE-29, ma własny stos i własny udział. Ponadto zmiana nazw rozjechała ścieżkę udziału: `zfs create Tank1/astrololo-astrodemo` przy manifeście montującym `/mnt/Tank1/astrololo-demo` utworzyłby inny zbiór niż ten, którego pod szuka. Ścieżka jest stanem na dysku, nie nazwą w kodzie — zostaje jak była. Sprawdzone: `kubectl kustomize astrololo/` buduje 29 obiektów, tagi obrazów pozostają na 320a0ab2. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
87 lines
3.9 KiB
YAML
87 lines
3.9 KiB
YAML
# astrodemo — wersja demonstracyjna (PRE-28).
|
|
#
|
|
# Osobna usługa o DWÓCH funkcjach: dodanie pliku bazy i zapytanie o interpretację
|
|
# urodzeniową. Pozostałe funkcje nie są tu ukryte — nie ma ich w obrazie.
|
|
#
|
|
# IZOLACJA (PRE-29): astrodemo ma WŁASNĄ warstwę logiczną i WŁASNĄ warstwę
|
|
# danych (astrodemo-stack.yaml), pracujące na osobnym, pustym na starcie
|
|
# udziale. Oryginalne bazy interpretacyjne są dla demo NIEOSIĄGALNE.
|
|
#
|
|
# Wewnątrz demo każde konto ma własną pulę plików — swój podkatalog na tym
|
|
# udziale — niewidoczną dla pozostałych kont. Dzięki temu demo można rozdawać
|
|
# szeroko, a pliki jednego klienta da się później przenieść do pełnej aplikacji
|
|
# jako jeden katalog (patrz README-astrodemo.md).
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: astrodemo
|
|
namespace: astrololo
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels: { app: astrodemo }
|
|
template:
|
|
metadata:
|
|
labels: { app: astrodemo }
|
|
spec:
|
|
containers:
|
|
- name: astrodemo
|
|
image: gitea.czernobog.pl/gitea/astrololo-astrodemo:latest
|
|
ports: [{ containerPort: 8005 }]
|
|
env:
|
|
# WŁASNA warstwa logiczna, wskazująca na WŁASNĄ warstwę danych.
|
|
# Wpisanie tu produkcyjnego `logic` cofnęłoby całą izolację demo
|
|
# jednym słowem — dlatego stoi to tuż obok siebie w jednym pliku.
|
|
- name: LOGIC_URL
|
|
value: "http://logic-demo:8001"
|
|
# Konto demo — WŁASNE, nie astrololo-auth. Sekret tworzony POZA repo
|
|
# (jak pozostałe), patrz README-astrodemo.md.
|
|
# KONTA DEMO — lista `login:sekret` po przecinku. Każde konto ma
|
|
# WŁASNĄ, niewidoczną dla pozostałych pulę baz (PRE-29), więc jedno
|
|
# wspólne konto oznaczałoby klientów oglądających swoje wgrania
|
|
# nawzajem. Sekrety najlepiej jako hash scrypt.
|
|
- name: ASTRODEMO_USERS
|
|
valueFrom:
|
|
secretKeyRef: { name: astrololo-astrodemo, key: ASTRODEMO_USERS }
|
|
# Token międzywarstwowy i klucz łącza — TE SAME co prezentacja:
|
|
# demo nie jest furtką omijającą ochronę warstwy logicznej.
|
|
- name: INTERNAL_TOKEN
|
|
valueFrom:
|
|
secretKeyRef: { name: astrololo-auth, key: INTERNAL_TOKEN }
|
|
- name: LINK_KEY_PRESENTATION_LOGIC
|
|
valueFrom:
|
|
secretKeyRef: { name: astrololo-link, key: LINK_KEY_PRESENTATION_LOGIC }
|
|
- name: LINK_ENCRYPTION_REQUIRED
|
|
value: "true"
|
|
# Klucz podpisu ciasteczek sesji (LOG-34). WYMAGANY — pod bez niego
|
|
# celowo nie wstaje. WŁASNY, nie ten z pełnej aplikacji: demo i produkcja
|
|
# nie mają powodu uznawać nawzajem swoich sesji, a wspólny klucz
|
|
# znaczyłby, że sesja z demo bywa ważna tam, gdzie nie powinna.
|
|
- name: SESSION_SECRET
|
|
valueFrom:
|
|
secretKeyRef: { name: astrololo-astrodemo, key: SESSION_SECRET }
|
|
# Za Ingressem bezpośrednim rozmówcą jest pod Traefika. Bez tego limit
|
|
# liczyłby WSZYSTKICH do jednego wiadra i pierwsza osoba, która go
|
|
# wyklika, odcięłaby pozostałe.
|
|
- name: TRUST_PROXY
|
|
value: "true"
|
|
# Niższy niż w pełnej aplikacji: demo bywa udostępniane szerzej,
|
|
# a każde zapytanie sięga do treści baz.
|
|
- name: RATE_LIMIT_PER_MIN
|
|
value: "60"
|
|
resources:
|
|
requests: { cpu: "50m", memory: "96Mi" }
|
|
limits: { cpu: "300m", memory: "256Mi" }
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: astrodemo
|
|
namespace: astrololo
|
|
spec:
|
|
# ClusterIP — wejście z zewnątrz wyłącznie przez Ingress po https, tak samo
|
|
# jak prezentacja. Druga, nieszyfrowana droga byłaby obejściem PRE-16.
|
|
type: ClusterIP
|
|
selector: { app: astrodemo }
|
|
ports: [{ port: 8005, targetPort: 8005 }]
|