第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 への変更は、すでにデプロイされているワークフローには影響しません。

手順

  1. SonataFlowPlatform CR を定義します。
  2. 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 オブジェクトのキー。
  3. ワークフロー用に生成された環境変数を表示します。

    次の例は、以前の 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 エクステンションが自動的に含まれます。これにより、永続性メカニズムとの互換性が確保され、ワークフローのデプロイメントプロセスが合理化されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.