第5章 ワークフローの永続性の管理
SonataFlow
インスタンスを設定して、永続性を使用し、ワークフローコンテキストをリレーショナルデータベースに保存することができます。
設計上、Kubernetes Pod はステートレスです。この動作は、Pod の再起動後もアプリケーションの状態を維持する必要があるワークロードに関する課題が生じる可能性があります。OpenShift Serverless Logic の場合、Pod がデフォルトで再起動するとワークフローコンテキストが失われます。
このようなシナリオでワークフローリカバリーを確保するには、ワークフローのランタイムの永続性を設定する必要があります。SonataFlowPlatform
カスタムリソース (CR) または SonataFlow
CR を使用してこの設定を指定します。設定のスコープは使用するリソースによって異なります。
5.1. SonataFlowPlatform CR を使用した永続性の設定
SonataFlowPlatform
カスタムリソース (CR) は、namespace レベルでの永続性設定を有効にします。このアプローチでは、namespace にデプロイされたすべてのワークフローに永続性設定が自動的に適用されます。これにより、特に namespace 内の複数のワークフローが同じアプリケーションに属する場合に、リソース設定が簡素化されます。この設定はデフォルトで適用されますが、namespace 内の個々のワークフローは SonataFlow
CR を使用してこれをオーバーライドできます。
OpenShift Serverless Logic Operator は、この設定を使用してサポートサービスの永続性もセットアップします。
永続性設定は、ワークフローのデプロイメント時にのみ適用されます。SonataFlowPlatform
CR への変更は、すでにデプロイされているワークフローには影響しません。
手順
-
SonataFlowPlatform
CR を定義します。 SonataFlowPlatform
CR 仕様の下にあるpersistence
フィールドに永続性設定を指定します。apiVersion: sonataflow.org/v1alpha08 kind: SonataFlowPlatform metadata: name: sonataflow-platform-example namespace: example-namespace spec: persistence: postgresql: serviceRef: name: postgres-example 1 namespace: postgres-example-namespace 2 databaseName: example-database 3 port: 1234 4 secretRef: name: postgres-secrets-example 5 userKey: POSTGRESQL_USER 6 passwordKey: POSTGRESQL_PASSWORD 7
- 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 スキーマ名を使用するように設定されています。
env: - name: QUARKUS_DATASOURCE_USERNAME valueFrom: secretKeyRef: name: postgres-secrets-example key: POSTGRESQL_USER - name: QUARKUS_DATASOURCE_PASSWORD valueFrom: secretKeyRef: name: postgres-secrets-example key: POSTGRESQL_PASSWORD - name: QUARKUS_DATASOURCE_DB_KIND value: postgresql - name: QUARKUS_DATASOURCE_JDBC_URL value: >- jdbc:postgresql://postgres-example.postgres-example-namespace:1234/example-database?currentSchema=example-workflow - name: KOGITO_PERSISTENCE_TYPE value: jdbc
この永続性設定が適用されると、OpenShift Serverless Logic Operator は preview
または gitops
プロファイルを使用して、この namespace にデプロイされたすべてのワークフローを設定し、関連する JDBC 接続パラメーターを環境変数として注入して PostgreSQL データベースに接続します。
現在、PostgreSQL は唯一永続性向けにサポートされているデータベースです。
preview
プロファイルを使用した SonataFlow
CR デプロイメントの場合、OpenShift Serverless Logic ビルドシステムには、永続性の有効化に必要な特定の Quarkus エクステンションが自動的に含まれます。これにより、永続性メカニズムとの互換性が確保され、ワークフローのデプロイメントプロセスが合理化されます。