ibo/infra/k8s/base/ibo/values.yaml
timu d1ccf17b5f
Some checks failed
Momentrum CI / Version (aus PR-ID / SHA) (push) Successful in 2s
Momentrum CI / Test (compile + pytest) (push) Failing after 43s
Momentrum CI / Build & Push image (push) Has been skipped
Momentrum CI / Helm lint + template (push) Successful in 9s
Momentrum CI / Deploy PROD (Image-Tag -> CD-Repo) (push) Has been skipped
ibo-CI: PR-Preview-dev statt fixer Dev-Env, prod Auto-Deploy bei main-Merge
Umstellung auf das kanban-Modell (PR-Preview-dev + prod), Zitadel-SSO vor beiden.
- CI: Job deploy-dev -> deploy; Write-back bei main-Merge jetzt nach app.yaml
  (prod) statt dev.yaml. dev braucht keinen Write-back (ApplicationSet liest den
  PR-Tag direkt).
- Chart: ingress.novncStripPrefixRef (Preview referenziert die geteilte externe
  strip-novnc-Middleware statt eine eigene anzulegen -> vom previews-AppProject
  erlaubt); priorityClassName (Preview-Pods sterben bei Memory-Pressure zuerst).
- RUNBOOK-ibo.md: auf PR-Preview-dev + prod-Auto-Deploy umgeschrieben.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 23:49:27 +02:00

69 lines
2.7 KiB
YAML

# Defaults fuer das ibo-Chart.
# Overlays (dev / prod) im CD-Repo momentrum-deploy patchen image.tag, ingress.host,
# ingress.tls.secretName und ingress.ssoMiddlewares. Das Chart selbst ist
# umgebungs-agnostisch.
image:
repository: momentrum-k3s-01.tailcc1bcf.ts.net:3000/momentrum/ibo-web
tag: latest
pullPolicy: IfNotPresent
# IMPORTANT: 1 lassen. Die App haelt In-Memory-State (Batch-Status, SSE-Streams,
# offener Consent-Browser) — mehrere Replicas wuerden ihn nicht teilen.
replicaCount: 1
# Previews setzen "preview" (niedrige PriorityClass, definiert in contabo-infra):
# unter Memory-Pressure auf der 12-GB-Box sterben Preview-Pods zuerst, nie Prod.
# Prod laesst das leer.
priorityClassName: ""
service:
# Nach aussen (ClusterIP) sichtbare Ports; targetPorts sind die Container-Ports.
appPort: 80
appTargetPort: 5000
novncPort: 7900
# Selenium-Chrome-Sidecar (Chrome + noVNC). Laeuft im selben Pod; die App spricht
# ihn ueber localhost:4444 an, noVNC lauscht auf 7900.
selenium:
image: selenium/standalone-chrome:latest
maxSessions: 4 # >= config.json run.parallel_workers
shmSize: 2Gi # /dev/shm (emptyDir Memory) — Chrome braucht das
app:
# Basis-URL des eingebetteten noVNC-Live-Views (Ingress-Pfad, siehe stripPrefix).
novncUrl: /novnc/
# Zusaetzliche Env-Vars fuer den App-Container, z.B. [{name: IBO_MODE, value: prod}]
env: []
ingress:
enabled: true
className: traefik
host: ibo.momentrum.de
novncPath: /novnc
tls:
enabled: true
secretName: ibo-tls
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
# Zitadel-SSO davor. Reihenfolge: errors VOR auth, damit 401 zum Login-Redirect
# wird. Die stripPrefix-Middleware fuer /novnc haengt das Chart hinten an
# (siehe _helpers.tpl). Vom CD-Repo gesetzt:
# prod -> "iam-oauth2-ibo-errors@kubernetescrd,iam-oauth2-ibo-auth@kubernetescrd" (per-App ibo-sso)
# preview -> "iam-oauth2-errors@kubernetescrd,iam-oauth2-auth@kubernetescrd" (generisches dev-sso)
ssoMiddlewares: ""
# Referenz auf eine EXTERNE /novnc-stripPrefix-Middleware ("<ns>-<name>@kubernetescrd").
# Leer = das Chart legt die Middleware selbst im Release-Namespace an (Prod/Default).
# Gesetzt = Chart legt KEINE eigene an, haengt stattdessen diese Referenz an die Kette.
# PR-Previews MUESSEN das setzen: das ArgoCD-"previews"-Project blockt das Anlegen von
# traefik.io/Middleware im Preview-ns (Anti-Auth-Faelschung) -> geteilte iam-strip-novnc.
novncStripPrefixRef: ""
resources:
app:
requests: { cpu: 50m, memory: 128Mi }
limits: { cpu: "1", memory: 512Mi }
selenium:
requests: { cpu: 100m, memory: 512Mi }
limits: { cpu: "2", memory: 2Gi }