4.2 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| project_prod_ist_stand | Prod (ocp-01 / 1401-plato-production) — Secrets (inkl. SAP) erledigt+aktiviert; einziger Blocker noch das to_be_replaced Image-Tag |
|
Stand 2026-06-19, verifiziert direkt am Prod-Cluster (api.ocp-01.wgn.wuerth.com, Projekt 1401-plato-production).
Stand 2026-06-19 abends: Prod ist LIVE und voll erreichbar — backend 0.38.4 1/1 Running auf ocp-01, alle 3 Secrets (customer/postgres/sap) gemountet, ghcr-Pull funktioniert. Öffentliche URL https://plato.witglobal.net (Test: https://plato-test.witglobal.net auf ocp-dev01), zusätzlich zur alten fahrzeugeinrichtung-Route. OIDC-Login funktioniert.
Custom-Routes + OIDC: Routes als route-public.yaml je Overlay im gitops-Repo (commit 11ba61c), edge/Redirect, host plato.witglobal.net bzw. plato-test.witglobal.net → backend-service:3000. Redirect-URI baut die App aus req.headers.host + fixem Pfad /oauth/callback (oidc.controller.ts computeRedirectUri). Beim IdP (PingFederate, strict byte-match, kein Trailing-Slash) pro client_id registriert: https://plato.witglobal.net/oauth/callback an KONZ-PlaTo-Customer-PROD, https://plato-test.witglobal.net/oauth/callback an KONZ-PlaTo-Customer-DEV. Kein Post-Logout-Redirect nötig.
PR development → main gemergt — main spiegelt den Prod-Stand. Go-live abgeschlossen.
Reihenfolge der Blocker, die fielen: (1) Secrets gesealt+aktiviert; (2) Dockerfile-Build-Bruch crm.sqlite raus → Image 0.38.4; (3) PR-Review REVIEW_REQUIRED approved; (4) Namespace-Quota voll (totes Frontend-Orphan-Deployment fraß 1 CPU/4Gi) → Frontend-Deployment/Service/Route gelöscht (war alter Split-Ansatz, Backend serviert FE-Assets selbst) → oc rollout restart → Pod startet.
Quota-Warnung für später: default-resource-quotas = 3 CPU / 12Gi hart. backend(1)+postgres(1) = 2, lässt nur 1 Slot Surge. Sobald ein zweiter Workload dazukommt (oder Rolling Update mit maxSurge), reicht es nicht → Quota anheben (Plattform) oder maxSurge=0.
Historischer Ausgangsbefund (vor heute):
-
Image-Tag nie ersetzt (offen). backend-/frontend-Pods ziehen wörtlich
…/backend:to_be_replaced→ ImagePullBackOff (Deployment 198d, 0/1). Der.deploy to production-Workflow (PRdevelopment→main, Kommentar.deploy to production) ist nie gelaufen. Das ist der gewählte Weg A, um es zu lösen — bringt echten Tag + klärt zugleich den offenen ghcr-Pull-Recht-Punkt auf Prod. -
Secrets — ERLEDIGT. Alle drei SealedSecrets gegen ocp-01 gesealt, Entsiegelung auf Prod verifiziert (Synced=True), in
production/kustomization.yamlaktiviert + inbackend.yamlperenvFromreferenziert:plato-customer-secrets,plato-postgres-secrets(commit1ba047e)plato-sap-secrets(commit4601ea7): SAP MUSS auf Prod (zentral). Werte = dieselben wie dev; dev-Klartext vom dev-Cluster gelesen, gegen ocp-01 neu gesealt.SAP_URL= dev-Endpointodatang9.wgn.wuerth.com/...(User-Ansage „dieselben Werte"). Sealing-Rezept:kubeseal --fetch-certgeht auf Prod per Default-Pfad; dev-Secret peroc --context=<dev> get secret -o json→ jq auf prod-ns umschreiben →kubeseal --cert.- Beide gitops-Commits noch nicht gepusht (ahead 2; Push macht Marcus). Inhaltliche Werte-Korrektheit (richtige Prod-Creds?) erst sichtbar, wenn Backend hochkommt.
Sauber/fertig auf Prod: Namespace-Label argocd.argoproj.io/managed-by=issp-gitops-developers gesetzt, ArgoCD-App existiert und syncht. Plattformseite steht.
Noch offen / nicht testbar: ghcr-Pull-Berechtigung auf Prod (Pull via default-dockercfg, kein explizites imagePullSecrets) — scheitert aktuell am nicht-existenten Tag, nicht erkennbar an Auth. Zeigt sich erst mit echtem Tag. Außerdem: SAP-Secret fehlt für Prod komplett (dev hat plato-sap-secrets.sealed.yaml, prod nicht; production/backend.yaml referenziert SAP auch nicht).
Deploy-Mechanik siehe PDF ressources/GitHub CICD to OpenShift.pdf: Image nur auf development gebaut + wiederverwendet, Prod via PR-Kommentar .deploy to production, Prod-ArgoCD vermutlich autoSync: false → manueller Sync. Dev-Cluster = ocp-dev01 läuft sauber (backend 0.38.1).