590679ad65
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>
119 lines
4.1 KiB
YAML
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 } }
|