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>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user