メインコンテンツまでスキップ

plantpulse-workflow (ワークフロー)

役割

長時間実行タスクとデータパイプラインのオーケストレーションです。2つのエンジンを共に運用します。

エンジン用途
Temporal分散ワークフロー、長時間実行タスク(再試行・補償トランザクション)。管理コンソール自体の durable ワークフローもここで
Kestra宣言型データパイプライン・スケジュール。ウェアハウスアーカイバがジョブを投入します
項目
モジュール名plantpulse-workflow
インストールパス/opt/kopens/plantpulse-platform/plantpulse-workflow/
Temporal7233 (gRPC) · 8233 (ウェブ UI、HTTP)
Kestra8380 (ウェブ UI + API、TLS のみ) · 8391 (管理エンドポイント、内部)
pd サービスworkflow — MASTER のみ。temporal → kestra
アーカイブワーカーはここにありません (2026-09-06)

Cassandra → Iceberg アーカイバはかつてこのサービスの3番目のコンポーネントでしたが、プラットフォームイメージplantpulse-warehouse コンテナに移されました。データレイクはインフラであり、«どのテーブルをいつどのようにアーカイブするか» はビジネスロジックだからです → warehouse モジュール

構成

ディレクトリ構造

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

項目
ポート7233 (frontend gRPC) · 8233 (ウェブ UI) · 7243 (HTTP API) · 7234/7235/7239 (内部サービス)
バックエンドPostgreSQL DB temporal · temporal_visibility、アカウント temporal (PP_TEMPORAL_USER / PP_TEMPORAL_PASSWORD)
アドバタイズアドレスbroadcastAddress = PP_TEMPORAL_HOST — ループバックの場合はレンダが拒否
メトリクス8244 (127.0.0.1 のみ、管理コンソールが読み込み)

PP_TEMPORAL_PASSWORD は Temporal 自体のアカウントではなく、バックエンド PostgreSQL アカウントです。passwd.shALTER ROLE に置き換わります。

ウェブ UI http://<server-ip>:8233/ にはログインがありません。プライベートネットワークでのみ公開してください。

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

項目
ポート8380 — TLS のみ、http:// は応答しません。//ui/ にリダイレクト
ログインPP_KESTRA_ADMIN_EMAIL / PP_KESTRA_ADMIN_PASSWORD (basic-auth)
バックエンドPostgreSQL DB kestra、アカウント kestra (PP_KESTRA_DB_USER / PP_KESTRA_DB_PASSWORD) — ログインアカウントとは異なる値
ストレージ/data1/pp-data/kestra/storage

2つのパスワードとも passwd.sh の対象ではありません → ウェブ画面ログインアカウント — Kestraローテーションされない値

フロー例

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"

運用コマンド

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

よくある問題

症状原因対処
Temporal 起動失敗PostgreSQL 未準備 · temporal ロールパスワード不一致pd status storagepasswd.sh PP_TEMPORAL_PASSWORD
Kestra 起動失敗kestra ロールパスワード不一致サイドカーの PP_KESTRA_DB_PASSWORD — 起動時に pd がロールに合わせます
http://…:8380 が開かないTLS のみhttps://
アーカイブが実行されないウェアハウス側pd retentioncold_tier · archive_job、ウェアハウスコンテナログ
Temporal broadcastAddress エラー · レンダ exit 8ループバックアドレスノードファイル → 設定変更方法

関連ドキュメント