5.3. サポートサービスの管理
このセクションでは、OpenShift Serverless Logic に不可欠なサポートサービスの概要を説明します。これは、OpenShift Serverless Logic Operator を使用した Data Index サービスおよび Job Service のサポートサービスの設定およびデプロイに重点を置いています。
通常の OpenShift Serverless Logic インストールでは、ワークフローの実行が正常に実行されるように両方のサービスをデプロイする必要があります。Data Index サービスを使用すると、効率的なデータ管理が可能になりますが、Job Service は信頼性の高いジョブ処理を実現します。
5.3.1. サポートサービスとワークフローのインテグレーション リンクのコピーリンクがクリップボードにコピーされました!
サポートサービスを特定の namespace にデプロイする場合、有効または無効のデプロイメントを選択できます。有効化されたデプロイメントは、OpenShift Serverless Logic Operator に対し、namespace 内で preview または gitops プロファイルを使用するワークフローのデプロイメントを自動的に検出し、それらをサービスに接続するよう設定する指示を送ります。
たとえば、Data Index サービスが有効化されている場合、ステータス変更イベントを送信するようにワークフローが自動的に設定されています。同様に Job Service を有効にすると、ワークフローでタイムアウトが必要なたびにジョブが作成されます。OpenShift Serverless Logic Operator は、イベントを Data Index サービスに送信するように Job Service を設定し、サービス間のシームレスなインテグレーションを容易にします。
OpenShift Serverless Logic Operator はサポートサービスをデプロイするだけでなく、ワークフローが正常に実行されるように他の必要な設定も管理します。これらの設定はすべて自動的に処理されます。SonataFlowPlatform CR でサポートサービス設定のみを提供する必要があります。
サポートサービスの 1 つだけをデプロイすること、または無効化されたデプロイメントの使用は、高度なユースケースです。標準のインストールでは、スムーズなワークフローを実行するには、両方のサービスを有効にする必要があります。
5.3.2. SonataFlowPlatform CR を使用したサポートサービスのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
サポートサービスをデプロイするには、SonataFlowPlatform カスタムリソース (CR) の spec.services セクション内で dataIndex および jobService サブフィールドを設定します。この設定は、SonataFlowPlatform CR が適用される際に、各サービスをデプロイするように OpenShift Serverless Logic Operator に指示します。
サービスの各設定は独立して処理され、SonataFlowPlatform CR の他の設定と共にこれらの設定をカスタマイズできます。
サポートサービスのデプロイは、以下のスキャフォールディングの設定例を参照してください。
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
name: sonataflow-platform-example
namespace: example-namespace
spec:
services:
dataIndex:
enabled: true
# Specific configurations for the Data Index Service
# might be included here
jobService:
enabled: true
# Specific configurations for the Job Service
# might be included here
5.3.3. サポートサービスのスコープ リンクのコピーリンクがクリップボードにコピーされました!
SonataFlowPlatform カスタムリソース (CR) は、特定の namespace 内でのサポートサービスのデプロイメントを有効にします。つまり、自動的に設定されたサポートサービスとワークフロー通信はすべて、デプロイされたプラットフォームの namespace に制限されます。
この機能は、異なるワークフローセットごとにサポートサービスの個別のインスタンスが必要な場合に特に有用です。たとえば、ワークフローやサポートサービスと共にアプリケーションを分離してデプロイすることで、他のデプロイメントからの独立性を保つことができます。
5.3.4. サポートサービスの永続性設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic のサポートサービスの永続性設定は、環境のニーズに応じて、一時的または PostgreSQL のいずれかの設定になります。一時的な永続性は開発とテストに適していますが、実稼働環境には PostgreSQL 永続性が推奨されます。
5.3.4.1. 一時的な永続性設定 リンクのコピーリンクがクリップボードにコピーされました!
一時的な永続性は、各サービス専用の組み込み PostgreSQL データベースを使用します。OpenShift Serverless Logic Operator は、すべてのサービスの再起動でこのデータベースを再作成し、開発およびテストの目的でのみ適切になるようにします。次の SonataFlowPlatform CR 以外の追加の設定は必要ありません。
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
name: sonataflow-platform-example
namespace: example-namespace
spec:
services:
dataIndex:
enabled: true
# Specific configurations for the Data Index Service
# might be included here
jobService:
enabled: true
# Specific configurations for the Job Service
# might be included here
5.3.4.2. データベース移行の設定 リンクのコピーリンクがクリップボードにコピーされました!
データベースの移行とは、特定の Data Index データベースまたは Jobs Service データベースをそれぞれのスキーマに初期化すること、または新しいバージョンがリリースされた際にデータまたはスキーマの更新を適用することを指します。dataIndex.persistence.dbMigrationStrategy および jobService.persistence.dbMigrationStrategy のオプションフィールドを使用して、サポートサービスごとにデータベース移行ストラテジーを個別に設定する必要があります。移行ストラテジーを設定しない場合、システムは service をデフォルト値として使用します。
データベースの移行は、PostgreSQL 永続性設定を使用する場合にのみサポートされます。
次のいずれかのデータベース移行ストラテジーを設定できます。
5.3.4.2.1. ジョブベースのデータベース移行ストラテジー リンクのコピーリンクがクリップボードにコピーされました!
ジョブベースのストラテジーを設定すると、OpenShift Serverless Logic Operator は専用の Kubernetes Job を使用して移行プロセス全体を管理します。この Job は、サポートサービスのデプロイメントの前に実行され、対応する移行が正常に完了した場合にのみサービスが開始されるようにします。通常、このストラテジーは実稼働環境で使用します。
5.3.4.2.2. サービスベースのデータベース移行ストラテジー リンクのコピーリンクがクリップボードにコピーされました!
サービスベースのストラテジーを設定すると、データベースの移行は各サポートサービスによって直接管理されます。移行は、サービス起動シーケンスの一部として実行されます。最悪のシナリオでは、移行に失敗すると、サービスが不具合を抱えた状態で起動してしまう可能性があります。設定を指定しない場合は、サービスベースのデータベース移行がデフォルトのストラテジーになります。
5.3.4.2.3. 移行における none ストラテジー リンクのコピーリンクがクリップボードにコピーされました!
none ストラテジーを設定すると、Operator もサービスも移行を実行しようとしません。通常、このストラテジーは、データベース管理者 (DBA) がすべてのデータベース移行を手動で実行する環境で使用します。
5.3.4.3. PostgreSQL の永続性設定 リンクのコピーリンクがクリップボードにコピーされました!
PostgreSQL の永続性の場合、クラスターに PostgreSQL サーバーインスタンスをセットアップする必要があります。このインスタンスの管理は、OpenShift Serverless Logic Operator 制御とは独立して維持されます。サポートサービスを PostgreSQL サーバーに接続するには、適切なデータベース接続パラメーターを設定する必要があります。
次の例を使用して、SonataFlowPlatform CR で PostgreSQL の永続性を設定できます。
PostgreSQL の永続性設定の例
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
name: sonataflow-platform-example
namespace: example-namespace
spec:
services:
dataIndex:
enabled: true
persistence:
dbMigrationStrategy: job
postgresql:
serviceRef:
name: postgres-example
namespace: postgres-example-namespace
databaseName: example-database
databaseSchema: data-index-schema
port: 1234
secretRef:
name: postgres-secrets-example
userKey: POSTGRESQL_USER
passwordKey: POSTGRESQL_PASSWORD
jobService:
enabled: true
persistence:
dbMigrationStrategy: job
postgresql:
# Specific database configuration for the Job Service
# might be included here.
- 1
- オプション: 使用するデータベース移行ストラテジー。デフォルトは
serviceです。 - 2
- PostgreSQL データベースサーバーに接続するためのサービスの名前。
- 3
- オプション: PostgreSQL Service の namespace を定義します。デフォルトは
SonataFlowPlatformの namespace です。 - 4
- サポートサービスデータを格納する PostgreSQL データベースの名前を定義します。
- 5
- オプション: サポートサービスデータを格納するためのスキーマを指定します。デフォルト値は
SonataFlowPlatform名で、接尾辞には-data-index-serviceor-jobs-serviceが付いています。たとえば、sonataflow-platform-example-data-index-serviceなどです。 - 6
- オプション: PostgreSQL Service と接続するポート番号。デフォルト値は
5432です。 - 7
- データベースアクセスのユーザー名およびパスワードが含まれるシークレットの名前を定義します。
- 8
- データベースに接続するためのユーザー名を含むシークレットのキーの名前を定義します。
- 9
- データベースに接続するためのパスワードを含むシークレットのキーの名前を定義します。
それぞれの persistence フィールドを使用して、各サービスの永続性を個別に設定できます。
次のコマンドを実行して、PostgreSQL にアクセスするためのシークレットを作成します。
$ oc create secret generic <postgresql_secret_name> \
--from-literal=POSTGRESQL_USER=<user> \
--from-literal=POSTGRESQL_PASSWORD=<password> \
-n <namespace>
5.3.4.4. 一般的な PostgreSQL の永続性設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic Operator は、サポートサービスを spec.persistence フィールドで設定された共通の PostgreSQL サーバーに自動的に接続します。
ルールの場合、以下の優先順位が適用されます。
-
サポートするサービス (例:
services.dataIndex.persistence) に特定の永続性を設定すると、その設定が使用されます。 - サービスに永続性を設定しない場合、システムは現在のプラットフォームから共通の永続性設定を使用します。
共通の PostgreSQL 設定を使用する場合、各サービススキーマは SonataFlowPlatform 名として自動的に設定され、-data-index-service または -jobs-service の接尾辞が設定されます (例: sonataflow-platform-example-data-index-service)。
5.3.4.5. プラットフォームスコープの PostgreSQL 永続性設定 リンクのコピーリンクがクリップボードにコピーされました!
SonataFlowPlatform カスタムリソース (CR) の spec.persistence.postgresql フィールドを使用して、すべてのサポートサービスに共通の PostgreSQL サービスとデータベースを設定できます。このフィールドが設定されると、OpenShift Serverless Logic Operator はサポートサービスを指定されたデータベースに接続します。preview または gitops プロファイルを使用して同じ namespace にデプロイされ、カスタム永続性設定を指定していないワークフローも、このデータベースに接続します。
プラットフォームスコープの永続性を設定する場合は、次のルールが適用されます。
-
サポートサービスに独自の永続性設定がある場合 (たとえば、
services.dataIndex.persistence.postgresqlが設定されている場合) は、その設定が優先されます。 - サポートサービスにカスタム永続性設定がない場合は、設定は現在のプラットフォームから継承されます。
-
サポートサービスに特定のデータベース移行ストラテジーが必要な場合は、
dataIndex.persistence.dbMigrationStrategyフィールドとjobService.persistence.dbMigrationStrategyフィールドを使用して設定します。
次の SonataFlowPlatform CR フラグメントは、プラットフォームスコープの PostgreSQL 永続性を設定する方法を示しています。
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
name: sonataflow-platform-example
namespace: example-namespace
spec:
persistence:
postgresql:
serviceRef:
name: postgres-example
namespace: postgres-example-namespace
databaseName: example-database
port: 1234
secretRef:
name: postgres-secrets-example
userKey: POSTGRESQL_USER
passwordKey: POSTGRESQL_PASSWORD
dataIndex:
enabled: true
persistence:
dbMigrationStrategy: job
jobService:
enabled: true
persistence:
dbMigrationStrategy: service
- 1
- PostgreSQL データベースサーバーに接続する Kubernetes サービスの名前。
- 2
- (オプション) PostgreSQL Service を含む namespace。デフォルトは
SonataFlowPlatformの namespace です。 - 3
- サポートサービスとワークフローデータを保存する PostgreSQL データベースの名前。
- 4
- (オプション) PostgreSQL サービスに接続するためのポート。デフォルトは 5432 に設定されます。
- 5
- データベース認証情報を含む Kubernetes シークレットの名前。
- 6
- データベースのユーザー名を保存するシークレットキー。
- 7
- データベースのパスワードを保存するシークレットキー。
- 8
- (オプション) Data Index のデータベース移行ストラテジー。デフォルトは
serviceです。 - 9
- (オプション) Jobs Service のデータベース移行ストラテジー。デフォルトは
serviceです。必要に応じて、サービスごとに異なるストラテジーを設定できます。
5.3.5. サポートサービスイベントシステムの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic インストールの場合、以下のタイプのイベントが生成されます。
- ビジネスロジックのワークフローに関連する発信イベントおよび着信イベント。
- ワークフローから Data Index および Job Service に送信されるイベント。
- Job Service から Data Index Service に送信されるイベント。
OpenShift Serverless Logic Operator は Knative Eventing システムを利用して、これらのイベントとサービス間のすべてのイベント通信を管理し、効率的で信頼性の高いイベント処理を実現します。
5.3.5.1. プラットフォームスコープのイベントシステム設定 リンクのコピーリンクがクリップボードにコピーされました!
プラットフォームスコープのイベントシステムを設定するには、SonataFlowPlatform CR の spec.eventing.broker.ref フィールドを使用して、Knative Eventing Broker を参照します。この設定は、指定されたブローカーを使用して、サポートサービスを自動的にリンクし、イベントを生成および消費するように OpenShift Serverless Logic Operator に指示します。
preview または gitops プロファイルで同じ namespace にデプロイされ、カスタムのイベントシステム設定がないワークフローは、自動的に指定されたブローカーにリンクされます。
実稼働環境では、Knative Kafka Broker などの実稼働環境対応のブローカーを使用して、スケーラビリティーと信頼性を強化します。
次の例は、プラットフォームスコープのイベントシステムに SonataFlowPlatform CR を設定する方法を示しています。
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
name: sonataflow-platform-example
namespace: example-namespace
spec:
eventing:
broker:
ref:
name: example-broker
namespace: example-broker-namespace
apiVersion: eventing.knative.dev/v1
kind: Broker
5.3.5.2. サービススコープのイベントシステム設定 リンクのコピーリンクがクリップボードにコピーされました!
サービススコープのイベントシステム設定により、イベントシステム (特に Data Index または Job Service) を細かく制御できます。
OpenShift Serverless Logic インストールの場合は、プラットフォームスコープのイベントシステム設定の使用を検討してください。サービススコープの設定は、高度なユースケースのみを対象としています。
5.3.5.3. Data Index のイベントシステム設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Index のサービススコープのイベントシステムを設定するには、SonataFlowPlatform CR の spec.services.dataIndex.source.ref フィールドを使用して、特定の Knative Eventing Broker を参照する必要があります。この設定は、OpenShift Serverless Logic Operator に対して、その Broker からの SonataFlow システムイベントを消費するように Data Index を自動的にリンクするように指示します。
実稼働環境では、Knative Kafka Broker などの実稼働環境対応のブローカーを使用して、スケーラビリティーと信頼性を強化します。
次の例は、Data Index イベントシステム設定を表示しています。
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
name: sonataflow-platform-example
spec:
services:
dataIndex:
source:
ref:
name: data-index-source-example-broker
namespace: data-index-source-example-broker-namespace
apiVersion: eventing.knative.dev/v1
kind: Broker
5.3.5.4. Job Service のイベントシステム設定 リンクのコピーリンクがクリップボードにコピーされました!
Job Service 用にサービススコープのイベントシステムを設定するには、SonataFlowPlatform CR の spec.services.jobService.source.ref および spec.services.jobService.sink.ref フィールドを使用する必要があります。これらのフィールドは、指定された設定に基づいて、Job Service を自動的にリンクして SonataFlow システムイベントを消費するように、OpenShift Serverless Logic Operator に指示します。
実稼働環境では、Knative Kafka Broker などの実稼働環境対応のブローカーを使用して、スケーラビリティーと信頼性を強化します。
次の例は、Job Service のイベントシステム設定を表示しています。
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
name: sonataflow-platform-example
spec:
services:
jobService:
source:
ref:
name: jobs-service-source-example-broker
namespace: jobs-service-source-example-broker-namespace
apiVersion: eventing.knative.dev/v1
kind: Broker
sink:
ref:
name: jobs-service-sink-example-broker
namespace: jobs-service-sink-example-broker-namespace
apiVersion: eventing.knative.dev/v1
kind: Broker
- 1
- Job Service がイベントを消費する Knative Eventing Broker を指定します。
- 2
- オプション: Knative Eventing Broker の namespace を定義します。値を指定しない場合、パラメーターはデフォルトで
SonataFlowPlatformnamespace に設定されます。SonataFlowPlatformと同じ namespace に Broker を作成することを検討してください。 - 3
- Job Service がイベントを生成する Knative Eventing Broker を指定します。
- 4
- オプション: Knative Eventing Broker の namespace を定義します。値を指定しない場合、パラメーターはデフォルトで
SonataFlowPlatformnamespace に設定されます。SonataFlowPlatformと同じ namespace に Broker を作成することを検討してください。
5.3.5.5. サポートサービス向けのクラスタースコープのイベントシステム設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスタースコープのサポートサービスをデプロイする場合、サポートサービスは、SonataFlowClusterPlatform CR によって参照される SonataFlowPlatform CR で指定された Broker に自動的にリンクされます。
5.3.5.6. サポートサービスの Eventing システム設定の優先度ルール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic Operator は定義された優先順位に従って、サポートサービスのイベントシステムを設定します。
Eventing システム設定の優先度ルールは以下のとおりです。
- サポートサービスに、Data Index イベントシステムまたは Job Service イベントシステム設定のいずれかを使用した独自のイベントシステム設定がある場合は、サポートサービスの設定が優先されます。
-
サポートサービスを囲む
SonataFlowPlatformCR がプラットフォームスコープのイベントシステムで設定されている場合、その設定が優先されます。 - 現在のクラスターがクラスタースコープのイベントシステムで設定されている場合は、その設定が優先されます。
- 以前の設定がいずれも存在しない場合は、サポートサービスは直接 HTTP 呼び出しによってイベントを提供します。
5.3.5.7. Eventing システムのリンク設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic Operator は、サポートサービスをイベントシステムにリンクするために、Knative Eventing、SinkBindings、およびトリガーを自動的に作成します。これらのオブジェクトにより、サポートサービスによるイベントの生成と消費が可能になります。
次の例は、SonataFlowPlatform CR 用に作成された Knative Native イベントオブジェクトを示しています。
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
name: sonataflow-platform-example
namespace: example-namespace
spec:
eventing:
broker:
ref:
name: example-broker
apiVersion: eventing.knative.dev/v1
kind: Broker
services:
dataIndex:
enabled: true
jobService:
enabled: true
次の例は、SonataFlowPlatform CR で使用する Knative Kafka Broker を設定する方法を示しています。
SonataFlowPlatform CR によって使用される Knative Kafka Broker の例
apiVersion: eventing.knative.dev/v1
kind: Broker
metadata:
annotations:
eventing.knative.dev/broker.class: Kafka
name: example-broker
namespace: example-namespace
spec:
config:
apiVersion: v1
kind: ConfigMap
name: kafka-broker-config
namespace: knative-eventing
- 1
- Kafka クラスを使用して Kafka Knative Broker を作成します。
次のコマンドは、どのサービスがイベントにサブスクライブされているかを示す、Data Index および Job Service イベントにセットアップされたトリガーのリストを表示します。
$ oc get triggers -n example-namespace
出力例
NAME BROKER SINK AGE CONDITIONS READY REASON
data-index-jobs-fbf285df-c0a4-4545-b77a-c232ec2890e2 example-broker service:sonataflow-platform-example-data-index-service 106s 7 OK / 7 True -
data-index-process-definition-e48b4e4bf73e22b90ecf7e093ff6b1eaf example-broker service:sonataflow-platform-example-data-index-service 106s 7 OK / 7 True -
data-index-process-error-fbf285df-c0a4-4545-b77a-c232ec2890e2 example-broker service:sonataflow-platform-example-data-index-service 106s 7 OK / 7 True -
data-index-process-instance-mul35f055c67a626f51bb8d2752606a6b54 example-broker service:sonataflow-platform-example-data-index-service 106s 7 OK / 7 True -
data-index-process-node-fbf285df-c0a4-4545-b77a-c232ec2890e2 example-broker service:sonataflow-platform-example-data-index-service 106s 7 OK / 7 True -
data-index-process-state-fbf285df-c0a4-4545-b77a-c232ec2890e2 example-broker service:sonataflow-platform-example-data-index-service 106s 7 OK / 7 True -
data-index-process-variable-ac727d6051750888dedb72f697737c0dfbf example-broker service:sonataflow-platform-example-data-index-service 106s 7 OK / 7 True -
jobs-service-create-job-fbf285df-c0a4-4545-b77a-c232ec2890e2 example-broker service:sonataflow-platform-example-jobs-service 106s 7 OK / 7 True -
jobs-service-delete-job-fbf285df-c0a4-4545-b77a-c232ec2890e2 example-broker service:sonataflow-platform-example-jobs-service 106s 7 OK / 7 True -
Job Service の SinkBinding リソースを表示するには、以下のコマンドを使用します。
$ oc get sources -n example-namespace
出力例
NAME TYPE RESOURCE SINK READY
sonataflow-platform-example-jobs-service-sb SinkBinding sinkbindings.sources.knative.dev broker:example-broker True
5.3.6. 高度なサポートサービス設定 リンクのコピーリンクがクリップボードにコピーされました!
サポートサービス向けに高度な設定を適用する必要がある場合は、SonataFlowPlatform カスタムリソース (CR) の podTemplate フィールドを使用します。このフィールドでは、レプリカの数、環境変数、コンテナーイメージ、初期化オプションなどの設定を指定して、サービス Pod のデプロイメントをカスタマイズできます。
次の例を使用して、サービスの高度な設定を行うことができます。
Data Index サービスの高度な設定例
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
name: sonataflow-platform-example
namespace: example-namespace
spec:
services:
# This can be either 'dataIndex' or 'jobService'
dataIndex:
enabled: true
podTemplate:
replicas: 2
container:
env:
- name: <any_advanced_config_property>
value: <any_value>
image:
initContainers:
要件に応じて、'services' フィールドを 'dataIndex' または 'jobService' に設定できます。設定の残りの部分は同じままとなります。
podTemplate フィールドにより、各サポートサービスのデプロイメントを柔軟に調整できます。これは標準の PodSpec API に準拠します。つまり、同じ API 検証ルールがこれらのフィールドに適用されます。
5.3.7. クラスタースコープのサポートサービス リンクのコピーリンクがクリップボードにコピーされました!
SonataFlowClusterPlatform カスタムリソース (CR) を使用して、さまざまな namespace にまたがるワークフローで使用できるクラスター全体のサポートサービスのセットを定義できます。既存の namespace 固有の SonataFlowPlatform CR を参照すると、これらのサービスの使用をクラスター全体で拡張できます。
次の基本設定の例を使用すると、任意の namespace にデプロイされたワークフローが、example-namespace などの特定の namespace にデプロイされたサポートサービスを利用できるようになります。
SonataFlowClusterPlatform CR の例
apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowClusterPlatform
metadata:
name: cluster-platform
spec:
platformRef:
name: sonataflow-platform-example
namespace: example-namespace
SonataFlowPlatform.spec.services でその namespace を設定することにより、これらのクラスター全体のサービスを任意の namespace 内でオーバーライドできます。