c1648d8f73
Drugi, opcjonalny wariant deployu: ten sam stack co produkcja, ale logic liczy na Swiss Ephemeris zamiast na wlasnym Skyfieldzie. Overlay Kustomize nad ../astrololo: - dokłada usluge engine-swisseph (Deployment + Service, ClusterIP — bez wejscia z zewnatrz, izolacja AGPL: rozmawia z nia tylko logic), - patchuje logic: EPHEMERIS_ENGINE=swisseph + ENGINE_SWISSEPH_URL (wlacza tez /chart/compare, LOG-25/26), - tagi data/logic/presentation dziedziczy z bazy (sledzi wersje produkcji). Aktywacja przez wskazanie GitOps na katalog astrololo-swisseph zamiast astrololo (profil zastepujacy baze w tym samym ns). Szczegoly w README. Zwalidowane `kubectl kustomize` (9 obiektow, env logica i ClusterIP OK). Wymaga obrazu astrololo-engine-swisseph w registry — buduje go osobny workflow w repo astrololo (PR rownolegly). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
52 lines
1.7 KiB
YAML
52 lines
1.7 KiB
YAML
# Silnik B — Swiss Ephemeris (AGPL-3.0), IZOLOWANY.
|
|
#
|
|
# Wdrażany WYŁĄCZNIE w profilu swisseph. Usługa jest wystawiona tylko wewnątrz
|
|
# klastra (ClusterIP — brak NodePort/Ingress): rozmawia z nią jedynie `logic`.
|
|
# To utrzymuje granicę procesu/sieci wymaganą przez izolację AGPL — permisywny
|
|
# produkt nie jest z nią linkowany, a usługa nie jest oferowana użytkownikom
|
|
# końcowym bezpośrednio.
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: engine-swisseph
|
|
namespace: astrololo
|
|
labels:
|
|
app: engine-swisseph
|
|
license: AGPL-3.0
|
|
spec:
|
|
replicas: 1
|
|
selector: { matchLabels: { app: engine-swisseph } }
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: engine-swisseph
|
|
license: AGPL-3.0
|
|
spec:
|
|
imagePullSecrets: [{ name: gitea-registry }]
|
|
containers:
|
|
- name: engine-swisseph
|
|
image: gitea.czernobog.pl/gitea/astrololo-engine-swisseph:latest
|
|
imagePullPolicy: Always # tag ruchomy (latest) — dociągaj najnowszy
|
|
ports: [{ containerPort: 8003 }]
|
|
readinessProbe:
|
|
httpGet: { path: /health, port: 8003 }
|
|
initialDelaySeconds: 3
|
|
periodSeconds: 10
|
|
livenessProbe:
|
|
httpGet: { path: /health, port: 8003 }
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 30
|
|
resources:
|
|
requests: { cpu: "50m", memory: "96Mi" }
|
|
limits: { cpu: "300m", memory: "256Mi" }
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: engine-swisseph
|
|
namespace: astrololo
|
|
spec:
|
|
selector: { app: engine-swisseph }
|
|
ports: [{ port: 8003, targetPort: 8003 }]
|
|
# ClusterIP (domyślnie) — świadomie brak type: NodePort. Tylko ruch wewnątrz klastra.
|