# 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.