Zum Hauptinhalt springen

plantpulse-workflow (Workflow)

Rolle

Orchestrierung von Langzeitaufträgen und Datenpipelines. Zwei Engines arbeiten zusammen.

EngineZweck
TemporalVerteilte Workflows, Langzeitaufträge (Wiederholung · Kompensationstransaktionen). Auch die eigenen Durable Workflows der Verwaltungskonsole
KestraDeklarative Datenpipelines · Zeitplanung. Der Warehouse-Archivierungsauftrag wird hier eingereicht
EintragWert
Modulnameplantpulse-workflow
Installationspfad/opt/kopens/plantpulse-platform/plantpulse-workflow/
Temporal7233 (gRPC) · 8233 (Web-UI, HTTP)
Kestra8380 (Web-UI + API, nur TLS) · 8391 (Admin-Endpunkt, intern)
pd Serviceworkflow — nur MASTER. temporal → kestra
Archive Worker ist hier nicht enthalten (2026-09-06)

Der Cassandra → Iceberg Archivierungsprozess war vorübergehend eine dritte Komponente dieses Service und wurde dann in den Container plantpulse-warehouse des Platform-Images verschoben. Das Data Lake ist Infrastruktur, und «welche Tabelle, wann und wie archivieren» ist Business-Logik → warehouse-Modul

Architektur

Verzeichnisstruktur

plantpulse-workflow/
├── temporal/
│ ├── bin/
│ ├── config/workflow.yaml # 생성물 ← /etc/kopens/conf/workflow.yaml.template
│ └── logs/
└── kestra/
├── bin/
├── config/application.yaml # 생성물 ← /etc/kopens/conf/application.yaml.template
└── logs/

Temporal

EintragWert
Ports7233 (Frontend gRPC) · 8233 (Web-UI) · 7243 (HTTP API) · 7234/7235/7239 (interne Services)
BackendPostgreSQL DB temporal · temporal_visibility, Konto temporal (PP_TEMPORAL_USER / PP_TEMPORAL_PASSWORD)
Advertise-AdressebroadcastAddress = PP_TEMPORAL_HOST — Loopback wird abgelehnt
Metriken8244 (nur 127.0.0.1, von der Verwaltungskonsole gelesen)

PP_TEMPORAL_PASSWORD ist kein Temporal-eigenes Konto, sondern ein PostgreSQL-Konto im Backend. passwd.sh wird durch ALTER ROLE ersetzt.

Die Web-UI http://<server-ip>:8233/ hat kein Login. Öffnen Sie sie nur in privaten Netzwerken.

docker exec plantpulse-datalake bash -c 'cd /opt/kopens/plantpulse-platform/plantpulse-workflow/temporal && ./bin/temporal --address 127.0.0.1:7233 workflow list'

Kestra

EintragWert
Port8380 — nur TLS, http:// antwortet nicht. / leitet zu /ui/ um
LoginPP_KESTRA_ADMIN_EMAIL / PP_KESTRA_ADMIN_PASSWORD (Basic Auth)
BackendPostgreSQL DB kestra, Konto kestra (PP_KESTRA_DB_USER / PP_KESTRA_DB_PASSWORD) — anderer Wert als das Login-Konto
Speicher/data1/pp-data/kestra/storage

Beide Passwörter unterliegen nicht passwd.shWeb-UI-Login-Konto — Kestra, nicht rotierbare Werte

Beispiel Flow

id: daily-report
namespace: plantpulse
description: 매일 새벽 2시에 보고서 스크립트 실행

triggers:
- id: every-2am
type: io.kestra.plugin.core.trigger.Schedule
cron: "0 2 * * *"

tasks:
- id: run
type: io.kestra.plugin.scripts.shell.Commands
commands:
- echo "report"

Betriebsbefehle

docker exec plantpulse-datalake pd status workflow
docker exec plantpulse-datalake pd restart workflow # Temporal + Kestra
docker exec plantpulse-datalake pd logs --lines 100 workflow

Häufige Probleme

SymptomUrsacheMaßnahme
Temporal startet nichtPostgreSQL nicht bereit · Passwort der Rolle temporal stimmt nichtpd status storage, passwd.sh PP_TEMPORAL_PASSWORD
Kestra startet nichtPasswort der Rolle kestra stimmt nichtSidecar PP_KESTRA_DB_PASSWORD — beim Booten gleicht pd die Rolle ab
http://…:8380 öffnet sich nichtNur TLShttps://
Archivierung läuft nichtSeite Warehousepd retention des cold_tier · archive_job, Warehouse-Container-Logs
Temporal broadcastAddress Fehler · Render Exit 8Loopback-AdresseNode-Datei → Konfiguration ändern

Verwandte Dokumentation