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 の他の設定と共にこれらの設定をカスタマイズできます。
サポートサービスのデプロイは、以下のスキャフォールディングの設定例を参照してください。
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 以外の追加の設定は必要ありません。
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 の永続性設定の例
- 1
- オプション: 使用するデータベース移行ストラテジー。デフォルトは
service
です。 - 2
- PostgreSQL データベースサーバーに接続するためのサービスの名前。
- 3
- オプション: PostgreSQL Service の namespace を定義します。デフォルトは
SonataFlowPlatform
の namespace です。 - 4
- サポートサービスデータを格納する PostgreSQL データベースの名前を定義します。
- 5
- オプション: サポートサービスデータを格納するためのスキーマを指定します。デフォルト値は
SonataFlowPlatform
名で、接尾辞には-data-index-service
or-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>
$ 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 永続性を設定する方法を示しています。
- 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 を設定する方法を示しています。
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 イベントシステム設定を表示しています。
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 のイベントシステム設定を表示しています。
- 1
- Job Service がイベントを消費する Knative Eventing Broker を指定します。
- 2
- オプション: Knative Eventing Broker の namespace を定義します。値を指定しない場合、パラメーターはデフォルトで
SonataFlowPlatform
namespace に設定されます。SonataFlowPlatform
と同じ namespace に Broker を作成することを検討してください。 - 3
- Job Service がイベントを生成する Knative Eventing Broker を指定します。
- 4
- オプション: Knative Eventing Broker の namespace を定義します。値を指定しない場合、パラメーターはデフォルトで
SonataFlowPlatform
namespace に設定されます。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 イベントシステム設定のいずれかを使用した独自のイベントシステム設定がある場合は、サポートサービスの設定が優先されます。
-
サポートサービスを囲む
SonataFlowPlatform
CR がプラットフォームスコープのイベントシステムで設定されている場合、その設定が優先されます。 - 現在のクラスターがクラスタースコープのイベントシステムで設定されている場合は、その設定が優先されます。
- 以前の設定がいずれも存在しない場合は、サポートサービスは直接 HTTP 呼び出しによってイベントを提供します。
5.3.5.7. Eventing システムのリンク設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic Operator は、サポートサービスをイベントシステムにリンクするために、Knative Eventing、SinkBindings
、およびトリガーを自動的に作成します。これらのオブジェクトにより、サポートサービスによるイベントの生成と消費が可能になります。
次の例は、SonataFlowPlatform
CR 用に作成された Knative Native イベントオブジェクトを示しています。
次の例は、SonataFlowPlatform
CR で使用する Knative Kafka Broker を設定する方法を示しています。
SonataFlowPlatform CR によって使用される Knative Kafka Broker の例
- 1
- Kafka クラスを使用して Kafka Knative Broker を作成します。
次のコマンドは、どのサービスがイベントにサブスクライブされているかを示す、Data Index および Job Service イベントにセットアップされたトリガーのリストを表示します。
oc get triggers -n example-namespace
$ oc get triggers -n example-namespace
出力例
Job Service の SinkBinding
リソースを表示するには、以下のコマンドを使用します。
oc get sources -n example-namespace
$ 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
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 サービスの高度な設定例
要件に応じて、'services' フィールドを 'dataIndex' または 'jobService' に設定できます。設定の残りの部分は同じままとなります。
podTemplate
フィールドにより、各サポートサービスのデプロイメントを柔軟に調整できます。これは標準の PodSpec
API に準拠します。つまり、同じ API 検証ルールがこれらのフィールドに適用されます。
5.3.7. クラスタースコープのサポートサービス リンクのコピーリンクがクリップボードにコピーされました!
SonataFlowClusterPlatform
カスタムリソース (CR) を使用して、さまざまな namespace にまたがるワークフローで使用できるクラスター全体のサポートサービスのセットを定義できます。既存の namespace 固有の SonataFlowPlatform
CR を参照すると、これらのサービスの使用をクラスター全体で拡張できます。
次の基本設定の例を使用すると、任意の namespace にデプロイされたワークフローが、example-namespace
などの特定の namespace にデプロイされたサポートサービスを利用できるようになります。
SonataFlowClusterPlatform
CR の例
SonataFlowPlatform.spec.services
でその namespace を設定することにより、これらのクラスター全体のサービスを任意の namespace 内でオーバーライドできます。