Files
deploy/astrololo-swisseph/engine-swisseph.yaml
T
gitea d3b518273a feat(astrololo): profil deployu swisseph (silnik B, AGPL)
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>
2026-07-21 01:02:28 +00:00

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.