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
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>
69 lines
2.7 KiB
YAML
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 }
|