Bless2n Food System
Infrastruktur

Runbooks

Schritt-für-Schritt-Abläufe für Betrieb und Deployments

Release deployen (Staging -> Production)

Wege:

  • Automatisch nach Merge: Workflow "Build & Push Images" auf staging/production baut und pusht nach ACR/GHCR; "Deploy - Auto (after Build)" startet Terraform Cloud apply mit Image Digests.
  • Manuell: "Build & Push Images" via workflow_dispatch starten (Digests erzeugen), dann "Reusable - Terraform Cloud Apply" mit frontend_digest, backend_digest, revision_suffix anstossen.

Schritte (manuell):

  1. "Build & Push Images" auf dem Branch (staging oder production) ausführen.
  2. Artifact image-digests notieren (enthält backend=sha256:... und frontend=sha256:...).
  3. Terraform Apply Workflow mit folgenden Inputs starten:
    • target_branch: staging/production
    • image_tag: wie Branch (für Tag-Referenzen)
    • frontend_digest, backend_digest: Digests einfügen
    • revision_suffix: Commit-SHA, um neue Revisions zu erzwingen

Release Rollback

Option A (ältere Digests redeployen):

  • In Actions -> früheren erfolgreichen "Build & Push Images" Run öffnen, image-digests herunterladen -> Apply mit diesen Digests auslösen.

Option B (Tag Rollback):

  • Falls Tags genutzt werden, image_tag auf vorherigen Tag setzen und neuen revision_suffix vergeben.

Validierung: Container Apps Revisions prüfen; sicherstellen, dass Traffic auf die gewünschte Revision zeigt.


Secrets & Keys rotieren

Scope:

  • Payrexx: PAYREXX_API_SECRET, PAYREXX_WEBHOOK_SECRET
  • Better Auth: BETTER_AUTH_SECRET
  • Google OAuth: GOOGLE_CLIENT_SECRET (in der Web App für Better Auth)
  • Plunk: PLUNK_API_KEY
  • Database: DATABASE_URL (bei Passwort-Rotation)

Schritte:

  1. Key Vault Secrets in der Ziel-Umgebung aktualisieren (z. B. bfs-staging-kv).
  2. Für Frontend Config Container App Env oder KV Secret-Namen anpassen.
  3. Deployment mit neuem revision_suffix auslösen, damit Änderungen ausgerollt werden.
  4. Prüfen:
    • Payrexx Webhook-Signatur (/v1/payments/webhooks/payrexx).
    • Better Auth Login (OTP + Google) funktioniert.
    • Plunk Zustellung oder Dev-Preview-Endpoints.
    • Database-Verbindung aktiv.

SumUp Nutzer:innen & Affiliate Key aktualisieren

Affiliate Key:

  • CI Secret SUMUP_AFFILIATE_KEY wird im Android Release Workflow verwendet; für Release-Builds verpflichtend.

Geräte-Login:

  • In der POS App: Falls nicht angemeldet, triggert Android vor Checkout den SumUp-Login.
  • Geräte aktualisieren: Logout/Login am Gerät; die Web-POS hört auf bfs:sumup:result Events.

Validierung:

  • Kleine Kartentransaktion in Staging durchführen; prüfen, ob Beleg um Kartendaten ergänzt wird.

POS URL (Android) aktualisieren

  • Property: POS_URL.
  • Release-Builds benötigen POS_URL via Gradle Property (-PposUrl) oder Env; Dev/Staging haben Defaults.
  • Test: Dev-Build installieren, /pos lädt; prüfen, ob window.PosBridge in der Web-POS erkannt wird.

App neu starten / skalieren

  • Restart: Azure Portal -> Container Apps -> Revision Actions (oder auf 0 skalieren und wieder hoch).
  • Scale: min_replicas, max_replicas und Scale Rules in envs/<env>/main.tf ändern -> Terraform apply.

Logs & Metriken ansehen

  • Container Apps Console Logs: Azure Portal -> Container App -> Console/Logs.
  • Log Analytics (KQL):
    • Fehler: nach 5xx filtern, nach Pfad aggregieren.
    • Latenz: Perzentile pro Route; Revisions vergleichen.
  • Payrexx: Webhook-Zustellungen korrelieren; /v1/payments/{id} Status prüfen.

Neue Umgebung erstellen

  1. envs/staging nach envs/<new> kopieren; Namen (RG, Env, KV, ACR) und Scaling anpassen.
  2. Backend konfigurieren (Key Vault Mappings, URLs): Secrets database-url, better-auth-url, payrexx-* setzen.
  3. GitHub Environment Variablen/Secrets einrichten.
  4. Deployment via Terraform (lokal oder Terraform Cloud).

Incident Response

  • Erhöhte 5xx:
    • Zur vorherigen Revision rollen; Logs vergleichen; letzte Änderungen prüfen.
  • Payment Ausfälle:
    • Payrexx Status prüfen; Webhook-Signatur verifizieren; notfalls manuell abgleichen.
  • Database Connectivity:
    • Connection String prüfen; PostgreSQL erreichbar? Flyway-Migrationen aktuell?
  • CORS Blocks:
    • Trusted Origins im Backend prüfen.

On this page