Files
deploy/astrololo/ingress.yaml
T
gitea 590679ad65 astrodemo: wdrożenie wersji demonstracyjnej (PRE-28/29)
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>
2026-08-26 15:56:46 +02:00

119 lines
4.1 KiB
YAML

# Wejście do aplikacji po HTTPS (PRE-16).
#
# Poza bezpieczeństwem — Basic Auth po zwykłym http leci siecią czytelny dla
# każdego, kto słucha — TLS naprawia DWIE funkcje zepsute dziś z tego samego
# powodu: geolokalizacja przeglądarki („Tu i teraz") oraz kopiowanie promptu do
# schowka działają wyłącznie w tzw. secure context i po http po prostu odmawiają.
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: security-headers
namespace: astrololo
spec:
headers:
stsSeconds: 31536000 # HSTS: rok
stsIncludeSubdomains: false # dotyczy tylko tego hosta
stsPreload: false # preload to wpis na listę w przeglądarkach
# — praktycznie nieodwracalny, nie wchodzimy
forceSTSHeader: true # nagłówek także przy odpowiedziach z backendu
contentTypeNosniff: true
frameDeny: true
referrerPolicy: same-origin
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: redirect-https
namespace: astrololo
spec:
redirectScheme:
scheme: https
permanent: true
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: astrololo
namespace: astrololo
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.middlewares: astrololo-security-headers@kubernetescrd
spec:
tls:
- hosts: [astrololo.czernobog.pl]
secretName: astrololo-tls # wypełnia cert-manager (tls.yaml)
rules:
- host: astrololo.czernobog.pl
http:
paths:
- path: /
pathType: Prefix
backend:
service: { name: presentation, port: { number: 8000 } }
---
# Osobny Ingress wyłącznie na porcie 80 — istnieje po to, żeby odesłać na https.
# Rozdzielone świadomie: gdyby przekierowanie wisiało na tym samym routerze, co
# wejście po https, odsyłałoby samo do siebie w kółko. Backend jest tu formalnością,
# bo żadne żądanie do niego nie dojdzie.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: astrololo-redirect
namespace: astrololo
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
traefik.ingress.kubernetes.io/router.middlewares: astrololo-redirect-https@kubernetescrd
spec:
rules:
- host: astrololo.czernobog.pl
http:
paths:
- path: /
pathType: Prefix
backend:
service: { name: presentation, port: { number: 8000 } }
---
# ── astrodemo ──────────────────────────────────────────────────────────────
# Osobny host, nie ścieżka pod astrololo.czernobog.pl. Ścieżka („/demo") dzieliłaby
# z pełną aplikacją pochodzenie w rozumieniu przeglądarki, czyli i ciasteczka:
# wejście do jednej ruszałoby sesję w drugiej. Osobny host trzyma je rozdzielnie.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: astrodemo
namespace: astrololo
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.middlewares: astrololo-security-headers@kubernetescrd
spec:
tls:
- hosts: [astrodemo.czernobog.pl]
secretName: astrololo-tls # ten sam certyfikat obejmuje oba hosty (tls.yaml)
rules:
- host: astrodemo.czernobog.pl
http:
paths:
- path: /
pathType: Prefix
backend:
service: { name: astrodemo, port: { number: 8005 } }
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: astrodemo-redirect
namespace: astrololo
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
traefik.ingress.kubernetes.io/router.middlewares: astrololo-redirect-https@kubernetescrd
spec:
rules:
- host: astrodemo.czernobog.pl
http:
paths:
- path: /
pathType: Prefix
backend:
service: { name: astrodemo, port: { number: 8005 } }