3.3. サポートサービスの管理
このセクションでは、OpenShift Serverless Logic に不可欠なサポートサービスの概要を説明します。これは、OpenShift Serverless Logic Operator を使用した Data Index サービスおよび Job Service のサポートサービスの設定およびデプロイに重点を置いています。
通常の OpenShift Serverless Logic インストールでは、ワークフローの実行が正常に実行されるように両方のサービスをデプロイする必要があります。Data Index サービスを使用すると、効率的なデータ管理が可能になりますが、Job Service は信頼性の高いジョブ処理を実現します。
3.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 つだけをデプロイすること、または無効化されたデプロイメントの使用は、高度なユースケースです。標準のインストールでは、スムーズなワークフローを実行するには、両方のサービスを有効にする必要があります。
3.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
3.3.3. サポートサービスのスコープ リンクのコピーリンクがクリップボードにコピーされました!
SonataFlowPlatform カスタムリソース (CR) は、特定の namespace 内でのサポートサービスのデプロイメントを有効にします。つまり、自動的に設定されたサポートサービスとワークフロー通信はすべて、デプロイされたプラットフォームの namespace に制限されます。
この機能は、異なるワークフローセットごとにサポートサービスの個別のインスタンスが必要な場合に特に有用です。たとえば、ワークフローやサポートサービスと共にアプリケーションを分離してデプロイすることで、他のデプロイメントからの独立性を保つことができます。
3.3.4. サポートサービスの永続性設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic のサポートサービスの永続性設定は、環境のニーズに応じて、一時的または PostgreSQL のいずれかの設定になります。一時的な永続性は開発とテストに適していますが、実稼働環境には PostgreSQL 永続性が推奨されます。
3.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
3.3.4.2. 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:
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:
postgresql:
# Specific database configuration for the Job Service
# might be included here.
- 1
- PostgreSQL データベースサーバーに接続するためのサービスの名前。
- 2
- オプション: PostgreSQL Service の namespace を定義します。デフォルトは SonataFlowPlatform の namespace です。
- 3
- サポートサービスデータを格納する PostgreSQL データベースの名前を定義します。
- 4
- オプション: サポートサービスデータを格納するためのスキーマを指定します。デフォルト値は
SonataFlowPlatform名で、接尾辞には-data-index-serviceor-jobs-serviceが付いています。たとえば、sonataflow-platform-example-data-index-serviceなどです。 - 5
- オプション: PostgreSQL Service と接続するポート番号。デフォルト値は
5432です。 - 6
- データベースアクセスのユーザー名およびパスワードが含まれるシークレットの名前を定義します。
- 7
- データベースに接続するためのユーザー名を含むシークレットのキーの名前を定義します。
- 8
- データベースに接続するためのパスワードを含むシークレットのキーの名前を定義します。
それぞれの persistence フィールドを使用して、各サービスの永続性を個別に設定できます。
次のコマンドを実行して、PostgreSQL にアクセスするためのシークレットを作成します。
$ oc create secret generic <postgresql_secret_name> \
--from-literal=POSTGRESQL_USER=<user> \
--from-literal=POSTGRESQL_PASSWORD=<password> \
-n <namespace>
3.3.4.3. 一般的な PostgreSQL の永続性設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Serverless Logic Operator は、サポートサービスを spec.persistence フィールドで設定された共通の PostgreSQL サーバーに自動的に接続します。
ルールの場合、以下の優先順位が適用されます。
-
サポートするサービス (例:
services.dataIndex.persistence) に特定の永続性を設定すると、その設定が使用されます。 - サービスに永続性を設定しない場合、システムは現在のプラットフォームから共通の永続性設定を使用します。
共通の PostgreSQL 設定を使用する場合、各サービススキーマは SonataFlowPlatform 名として自動的に設定され、-data-index-service または -jobs-service の接尾辞が設定されます (例: sonataflow-platform-example-data-index-service)。
3.3.5. 高度なサポートサービス設定 リンクのコピーリンクがクリップボードにコピーされました!
サポートサービス向けに高度な設定を適用する必要がある場合は、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 検証ルールがこれらのフィールドに適用されます。
3.3.6. クラスタースコープのサポートサービス リンクのコピーリンクがクリップボードにコピーされました!
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 内でオーバーライドできます。