第16章 Knative リソースへの接続

以下のいずれかを行うシンプルなインテグレーションを作成できます。

  • Knative チャネルに接続し、メッセージを取得または送信。
  • インテグレーションを Knative サービスとして公開。
  • Knative サービスを呼び出し。
重要

Knative リソースへの接続はテクノロジープレビューの機能です。テクノロジープレビューの機能は、Red Hat の実稼働環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあります。Red Hat では、これらについて実稼働環境での使用を推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストやフィードバックの提供を可能にするために提供されます。Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、「テクノロジプレビュー機能のサポート範囲」 を参照してください

変換されたメッセージの形式に規定はありませんが、メッセージは通常 JSON 形式になります。

たとえば、シンプルなインテグレーションは Salesforce を定期的にポーリングして新しいリードを探すことがあります。Salesforce コネクションが新しいリードを見つけた場合、詳細が含まれるメッセージを Knative チャネルに送信することができます。複数のシンプルなインテグレーションは同じ Knative チャネルからメッセージを取得することができます。各インテグレーションはリードデータに異なるアクションを実行することができます。

以下を参照してください。

16.1. Knative リソースへのコネクションを有効化

Knative コネクションを有効にしてからシンプルなインテグレーションに追加する必要があります。

Knative コネクションは Fuse Online のインストール時に有効にされた可能性があります。これを確認するには、syndesis カスタムリソースの内容を表示します。camelk および knative アドオンで enabled: true が指定されている場合は、Knative コネクションはすでに有効になっています。

前提条件

  • Fuse Online が実行している OCP クラスターに oc クライアントツールがインストールされ、接続されている必要があります。
  • お客様が管理する環境で Fuse Online がオンサイトの OpenShift Container Platform で稼働している必要があります。
  • Fuse Online のランタイムが Camel K である必要があります。
  • Fuse Online がインストールされているクラスターに、インテグレーションが接続する各 Knative リソースもインストールされている必要があります。Knative リソースをインストールする前に、OpenShift Serverless Operator および Knative Eventing Operator をインストールする必要があります。
  • Fuse Online をインストールできる権限が必要です。

手順

  1. Fuse Online をインストールする権限を持つアカウントで OpenShift にログインします。以下に例を示します。

    $ oc login -u developer -p developer
  2. 以下のように、Fuse Online が稼働しているプロジェクトに切り替えます。

    $ oc project my-integration-project
  3. syndesis カスタムリソースを編集します。

    1. 以下のコマンドを実行します。通常、エディターでリソースが開かれます。

      oc edit syndesis
    2. リソースを更新して、以下を指定します。

      spec:
        addons:
           camelk:
             enabled: true
           knative:
             enabled: true
    3. リソースを保存します。

      syndesis カスタムリソースに対するこの変更を保存することにより、Fuse Online のインストールを担う syndesis-operatorsyndesis-server を再デプロイするようトリガーされます。

      camelk および knative がすでに有効である場合は、ファイルを閉じます。Knative リソースへのコネクションが有効になっている必要があります。

結果

Fuse Online コンソールの Connections ページで Knative コネクションが利用可能になります。同じ Knative コネクションを任意の数のシンプルなインテグレーションに追加できます。コネクションアクションの設定は、コネクションがアクセスする Knative リソースを指定します。

16.2. Knative チャネルにサブスクライブしてメッセージを取得

Knative チャネルからメッセージを受信したときにインテグレーションの実行をトリガーするには、Knative コネクションをシンプルなインテグレーションの最初のコネクションとして追加します。このように開始するインテグレーションは、指定期間内にチャネルからメッセージを受信しないと自動的に 0 Pod にスケールダウンされます。デフォルトの期間は 1 分です。

この自動スケーリングはリソースを節約します。そのため、AMQ ブローカーへのコネクションなどの、他のコネクションで始まるシンプルなインテグレーションよりも優れています。

前提条件

  • Knative リソースへのコネクションが有効になっている必要があります。
  • メッセージを取得する Knative リソースが Fuse Online と同じクラスターにある必要があります。
  • コネクションがメッセージを取得する Knative チャネルの名前を知っている必要があります。

手順

  1. Fuse Online の左側のパネルで Integrations をクリックします。
  2. Create Integration をクリックします。
  3. Choose a connection ページで Knative コネクションをクリックします。
  4. Receive from Channel アクションを選択します。
  5. Channel name フィールドをクリックし、使用できる Knative チャネルの一覧を表示します。
  6. メッセージを取得するリソースの Knative チャネル名を選択します。
  7. Next をクリックし、Receive from Channel アクションの出力タイプを指定します。これは、インテグレーションでコネクションが次のステップに渡すタイプです。

    1. データタイプの認識が必要がない場合は、Select Type フィールドに Type specification not required を使用し、Next をクリックします。残りの手順を行う必要はありません。

      ただし、構造化データタイプが推奨されます。たとえば、コネクション出力をデータマッパーステップでマップする場合、データタイプを指定する必要があります。データマッパーは、非構造化データのフィールドを表示できません。

      データタイプを指定するには、Select Type フィールドをクリックし、以下の 1 つをスキーマタイプとして選択します。

      • JSON schema は JSON データの構造を記述するドキュメントです。ドキュメントのメディアタイプは application/schema+json です。
      • JSON instance は JSON データが含まれるドキュメントです。ドキュメントのメディアタイプは application/json です。
      • XML schema は XML データの構造を記述するドキュメントです。このドキュメントのファイル拡張子は .xsd です。
      • XML instance は XML データが含まれるドキュメントです。このドキュメントのファイル拡張子は .xml です。
    2. Definition 入力ボックスに、選択したスキーマタイプに準拠する定義を貼り付けます。たとえば、JSON schema を選択した場合は、メディアタイプが application/schema+json の JSON スキーマファイルの内容を貼り付けます。
    3. Data Type Name フィールドにはデータタイプに選択した名前を入力します。たとえば、ベンダーの JSON スキーマを指定する場合は、Vendor をデータタイプ名として指定することができます。

      このタイプを指定するコネクションを使用するインテグレーションを作成または編集するときにこのデータタイプ名が表示されます。Fuse Online では、インテグレーションビジュアライゼーションとデータマッパーにタイプ名が表示されます。

    4. Data Type Description フィールドには、このタイプを区別するのに便利な情報を提供します。データマッパーでこのタイプを処理するステップにカーソルを合わせると、この説明が表示されます。
    5. Next をクリックします。

結果

Fuse Online は、シンプルなインテグレーションの最後のコネクションを追加するよう要求します。

実行中、選択した Knative チャネルが新しいメッセージを受信するたびに、Knative コネクションはインテグレーションの次のステップにメッセージを渡します。

次のステップ

必要なすべてのコネクションをインテグレーションに追加します。その後、インテグレーションを開始する Knative コネクションの後にデータマッパーステップを追加します。ソース message フィールドを、次のコネクションのターゲットフィールドにマップマップします。

16.3. Knative チャネルへのメッセージの送信

シンプルなインテグレーションでは、Knative コネクションはフローの途中で Knative チャネルにメッセージを送信したり、シンプルなインテグレーションを終了するためにメッセージを送信することができます。これには、Knative コネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。

前提条件

  • Knative コネクションが有効になっている必要があります。
  • メッセージの送信先となる Knative リソースが Fuse Online と同じクラスターにインストールされている必要があります。
  • コネクションがメッセージを送信する Knative チャネルの名前を知っている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。または、Fuse Online で最後のコネクションを選択するよう要求されます。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。Fuse Online が最後のコネクションを選択するよう要求する場合は、このステップをスキップします。
  2. Choose a connection ページで Knative コネクションをクリックします。
  3. Send to Channel アクションを選択します。
  4. Channel name フィールドをクリックし、Fuse Online を実行しているクラスターで使用できる Knative チャネルの一覧を表示します。
  5. インテグレーションがメッセージを送信するチャネルを選択します。
  6. Next をクリックし、Send to Channel アクションの入力タイプを指定します。これは、インテグレーションが Knative チャネルに送信するタイプです。

    1. データタイプの認識が必要がなかったり、前のインテグレーションステップからの出力が想定されたタイプであった場合、 Select Type フィールドで Type specification not required を指定し、Next をクリックします。残りの手順を行う必要はありません。

      ただし、構造化データタイプが推奨されます。たとえば、コネクション入力をデータマッパーステップでマップする場合、データタイプを指定する必要があります。データマッパーは、非構造化データのフィールドを表示できません。

      データタイプを指定するには、Select Type フィールドをクリックし、以下の 1 つをスキーマタイプとして選択します。

      • JSON schema は JSON データの構造を記述するドキュメントです。ドキュメントのメディアタイプは application/schema+json です。
      • JSON instance は JSON データが含まれるドキュメントです。ドキュメントのメディアタイプは application/json です。
      • XML schema は XML データの構造を記述するドキュメントです。このドキュメントのファイル拡張子は .xsd です。
      • XML instance は XML データが含まれるドキュメントです。このドキュメントのファイル拡張子は .xml です。
    2. Definition 入力ボックスに、選択したスキーマタイプに準拠する定義を貼り付けます。たとえば、JSON schema を選択した場合は、メディアタイプが application/schema+json の JSON スキーマファイルの内容を貼り付けます。
    3. Data Type Name フィールドにはデータタイプに選択した名前を入力します。たとえば、ベンダーの JSON スキーマを指定する場合は、Vendor をデータタイプ名として指定することができます。

      このタイプを指定するコネクションを使用するインテグレーションを作成または編集するときにこのデータタイプ名が表示されます。Fuse Online では、インテグレーションビジュアライゼーションとデータマッパーにタイプ名が表示されます。

    4. Data Type Description フィールドには、このタイプを区別するのに便利な情報を提供します。データマッパーでこのタイプを処理するステップにカーソルを合わせると、この説明が表示されます。
    5. Next をクリックします。

結果

インテグレーションビジュアライゼーションで、追加した場所にコネクションが表示されます。実行中、このコネクションは選択した Knative チャネルにメッセージを送信します。

次のステップ

必要なすべてのコネクションをインテグレーションに追加します。次に、Knative チャネルにメッセージを送信する Knative コネクションの直前にデータマッパーステップを追加します。ソースフィールドを Knative コネクションターゲット message フィールドにマップします。

16.4. シンプルなインテグレーションを Knative サービスとして公開

シンプルなインテグレーションでは、インテグレーションを Knative サービスとして公開する Knative コネクションを最初のコネクションとすることができます。このように開始するインテグレーションは、指定の期間サービスに呼び出しがないと自動的に 0 Pod にスケールダウンします。デフォルトの期間は 1 分です。

この自動スケーリングはリソースを節約します。そのため、AMQ ブローカーへのコネクションなどの、他のコネクションで始まるシンプルなインテグレーションよりも優れています。

前提条件

  • Knative リソースへのコネクションが有効になっている必要があります。
  • Knative が Fuse Online が稼働しているクラスターにインストールされている必要があります。

手順

  1. Fuse Online の左側のパネルで Integrations をクリックします。
  2. Create Integration をクリックします。
  3. Choose a connection ページで Knative コネクションをクリックします。
  4. Expose as Service アクションを選択します。

結果

Fuse Online は、シンプルなインテグレーションの最後のコネクションを追加するよう要求します。

Fuse Online がインテグレーションをパブリッシュするとき、Camel K ランタイムは serving.knative.dev サービスを作成します。このサービスは以下のような特徴があります。

  • Kubernates デプロイメントオブジェクトの代替です。
  • 一定期間アクティビティーがないと、自動的に 0 にスケーリングできます。
  • Kubernates サービスと混同しないようにしてください。

パブリッシュすると、ルートパス ( / ) でインテグレーションを呼び出すことが可能になります。クライアントは、インテグレーションを HTTP エンドポイントとして呼び出し、必要に応じてデータを渡すことで、インテグレーションの実行を呼び出します。通常、渡されたデータは JSON 形式になります。

本リリースでは、インテグレーションを Knative サービスとして公開する主な目的は、他の Fuse Online インテグレーションがその Knative サービスを呼び出すことであると想定されます。この場合、Knative サービスを呼び出すインテグレーションがサービス名を選択し、パスを指定する必要はありません。

16.5. シンプルなインテグレーションからの Knative サービスの呼び出し

シンプルなインテグレーションでは、Knative コネクションはフローの途中で Knative サービスを呼び出したり、シンプルなインテグレーションを終了するために Knative サービスを呼び出すことができます。これには、Knative コネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。

前提条件

  • Knative コネクションが有効になっている必要があります。
  • コネクションが呼び出す Knative サービスの名前を知っておく必要があります。このサービスは Fuse Online と同じクラスターで実行されている必要があります。
  • フローを作成または編集することになり、Fuse Online でインテグレーションに追加するよう要求されます。または、Fuse Online で最後のコネクションを選択するよう要求されます。

手順

  1. Add to Integration ページで、コネクションの追加先のプラス記号をクリックします。Fuse Online が最後のコネクションを選択するよう要求する場合は、このステップをスキップします。
  2. Choose a connection ページで Knative コネクションをクリックします。
  3. Call Service アクションを選択します。
  4. Service name フィールドをクリックし、Fuse Online が実行しえいるクラスターで使用できる Knative サービスの一覧を表示します。
  5. インテグレーションが呼び出すサービスを選択します。

    呼び出す Knative サービスがインテグレーションとして公開されている場合、サービスの名前はインテグレーションと同じ名前または似た名前になります。

  6. Next をクリックし、Call Service アクションの入力タイプを指定します。これは、インテグレーションが Knative サービスに送信するタイプです。

    1. データタイプの認識が必要がなかったり、前のインテグレーションステップからの出力が想定されたタイプであった場合、 Select Type フィールドで Type specification not required を指定し、Next をクリックします。残りの手順を行う必要はありません。

      構造化データタイプが推奨されます。たとえば、コネクション入力をデータマッパーステップでマップする場合、データタイプを指定する必要があります。データマッパーは、非構造化データのフィールドを表示できません。

      データタイプを指定するには、Select Type フィールドをクリックし、以下の 1 つをスキーマタイプとして選択します。

      • JSON schema は JSON データの構造を記述するドキュメントです。ドキュメントのメディアタイプは application/schema+json です。
      • JSON instance は JSON データが含まれるドキュメントです。ドキュメントのメディアタイプは application/json です。
      • XML schema は XML データの構造を記述するドキュメントです。このドキュメントのファイル拡張子は .xsd です。
      • XML instance は XML データが含まれるドキュメントです。このドキュメントのファイル拡張子は .xml です。
    2. Definition 入力ボックスに、選択したスキーマタイプに準拠する定義を貼り付けます。たとえば、JSON schema を選択した場合は、メディアタイプが application/schema+json の JSON スキーマファイルの内容を貼り付けます。
    3. Data Type Name フィールドにはデータタイプに選択した名前を入力します。たとえば、ベンダーの JSON スキーマを指定する場合は、Vendor をデータタイプ名として指定することができます。

      このタイプを指定するコネクションを使用するインテグレーションを作成または編集するときにこのデータタイプ名が表示されます。Fuse Online では、インテグレーションビジュアライゼーションとデータマッパーにタイプ名が表示されます。

    4. Data Type Description フィールドには、このタイプを区別するのに便利な情報を提供します。データマッパーでこのタイプを処理するステップにカーソルを合わせると、この説明が表示されます。
    5. Next をクリックします。
  7. Call Service アクションの出力タイプを指定します。

    これは、Knative コネクションが途中のコネクションである場合に Knative サービスがインテグレーションに返すタイプです。

    前の手順を繰り返して出力タイプを指定します。または、Knative サービスの応答が空である場合は Type specification not required を指定します。

  8. Next をクリックしてコネクションを追加します。

結果

インテグレーションビジュアライゼーションで、追加した場所にコネクションが表示されます。

実行中、このコネクションは指定の Knative サービスを呼び出します。呼び出しには、前のインテグレーションステップ (この Knative コネクションの前のステップ) からの出力が含まれます。Knative コネクションが途中のコネクションである場合は、コネクションはサービスの出力をインテグレーションの次のステップに渡します。

次のステップ

必要な他のコネクションをインテグレーションに追加します。入力タイプや出力タイプを指定した場合、Knative コネクションの前や後にデータマッパーステップを追加し、必要に応じてフィールドをマップします。