第7章 ワークフローの永続性の管理
SonataFlow インスタンスを設定して、永続性を使用し、ワークフローコンテキストをリレーショナルデータベースに保存することができます。
設計上、Kubernetes Pod はステートレスです。この動作は、Pod の再起動後もアプリケーションの状態を維持する必要があるワークロードに関する課題が生じる可能性があります。OpenShift Serverless Logic の場合、Pod がデフォルトで再起動するとワークフローコンテキストが失われます。
このようなシナリオでワークフローリカバリーを確保するには、ワークフローのランタイムの永続性を設定する必要があります。SonataFlowPlatform カスタムリソース (CR) または SonataFlow CR を使用してこの設定を指定します。設定のスコープは使用するリソースによって異なります。
7.1. SonataFlowPlatform CR を使用した永続性の設定 リンクのコピーリンクがクリップボードにコピーされました!
SonataFlowPlatform カスタムリソース (CR) は、namespace レベルでの永続性設定を有効にします。このアプローチでは、namespace にデプロイされたすべてのワークフローに永続性設定が自動的に適用されます。これにより、特に namespace 内の複数のワークフローが同じアプリケーションに属する場合に、リソース設定が簡素化されます。この設定はデフォルトで適用されますが、namespace 内の個々のワークフローは SonataFlow CR を使用してこれをオーバーライドできます。
OpenShift Serverless Logic Operator は、この設定を使用してサポートサービスの永続性もセットアップします。
永続性設定は、ワークフローのデプロイメント時にのみ適用されます。SonataFlowPlatform CR への変更は、すでにデプロイされているワークフローには影響しません。
手順
-
SonataFlowPlatformCR を定義します。 SonataFlowPlatformCR 仕様の下にあるpersistenceフィールドに永続性設定を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- PostgreSQL データベースに接続する Kubernetes Service の名前。
- 2
- オプション: PostgreSQL Service の namespace。デフォルトは
SonataFlowPlatformの namespace です。 - 3
- ワークフローデータを格納する PostgreSQL データベースの名前。
- 4
- オプション: PostgreSQL service に接続するためのポート番号。デフォルトは
5432です。 - 5
- データベース認証情報が含まれる Kubernetes シークレットの名前。
- 6
- データベースのユーザー名が含まれる
Secretオブジェクトのキー。 - 7
- データベースのパスワードが含まれる
Secretオブジェクトのキー。
ワークフロー用に生成された環境変数を表示します。
次の例は、以前の
SonataFlowPlatform設定でデプロイされたexample-workflowという名前のワークフロー用に生成された環境変数を示しています。これらの設定は永続性に特化したもので、OpenShift Serverless Logic Operator によって管理されます。これらの設定は、適用後は変更できません。
SonataFlowPlatform の永続性を使用する場合、すべてのワークフローは、ワークフロー名と同じ PostgreSQL スキーマ名を使用するように設定されています。
この永続性設定が適用されると、OpenShift Serverless Logic Operator は preview または gitops プロファイルを使用して、この namespace にデプロイされたすべてのワークフローを設定し、関連する JDBC 接続パラメーターを環境変数として注入して PostgreSQL データベースに接続します。
現在、PostgreSQL は唯一永続性向けにサポートされているデータベースです。
preview プロファイルを使用した SonataFlow CR デプロイメントの場合、OpenShift Serverless Logic ビルドシステムには、永続性の有効化に必要な特定の Quarkus エクステンションが自動的に含まれます。これにより、永続性メカニズムとの互換性が確保され、ワークフローのデプロイメントプロセスが合理化されます。