第4章 Fuse Online のパブリック REST API エンドポイントの呼び出し方法

OCP で Fuse Online を稼働している場合、各 Fuse Online 環境でパブリック REST API エンドポイントを公開できます。継続的インテグレーション/継続的デリバリー (CI/CD) の外部ツールにより、これらのエンドポイントを呼び出して、Fuse Online 環境のリソースを操作することができます。

外部ツールでこれらのエンドポイントを呼び出しできるようにするには、先に各 Fuse Online 環境で、OpenShift 管理者が Fuse Online のパブリック REST API エンドポイントを公開する必要があります。API エンドポイントを呼び出すコマンドで、エンドポイントが動作する Fuse Online 環境の URL、シークレットトークン、および承認トークンを指定します。

詳細は以下のトピックを参照してください。

4.1. 外部ツールによって使用される Fuse Online パブリック REST API の公開

オンサイトの OCP で Fuse Online を実行している場合、外部ツールを使用して Fuse Online 環境から別の Fuse Online 環境に Fuse Online インテグレーションをコピーすることがあります。外部 CI/CD ツールは、Jenkins ジョブ、Ansible Playbook、cron ベースのシェルスクリプトなどです。たとえば、Ansible Playbook ではインテグレーションを Fuse Online 開発環境からエクスポートし、Fuse Online テスト環境にインポートすることができます。

これを有効にするには、各 Fuse Online 環境の Fuse Online パブリック REST API エンドポイントを公開する必要があります。つまり、ここで Fuse Online のインストールごとに手順を繰り返す必要があります。同じクラスターの Fuse Online 環境では、同じサービスアカウントを使用してパブリック API を公開することができますが、セキュリティーを強化するために各インストールに異なるサービスアカウントを使用することが推奨されます。

前提条件

  • Fuse Online がインストールされている OCP プロジェクトが必要です。
  • 外部 CI/CD ツールを使用しており、マーク付けされたインテグレーションを Fuse Online 環境から別の Fuse Online 環境にコピーする状況です。
  • OpenShift のパブリック OAuth プロキシーアプリケーションを作成するユーザーには、クラスター管理者権限が必要です。

手順

  1. 指定する名前を持つ OpenShift サービスアカウントを作成します。たとえば、次のコマンドを実行すると cicd-client サービスアカウントが作成されます。

    $ oc create serviceaccount cicd-client
  2. Fuse Online のパブリック API にアクセスするためのパーミッションを新しいサービスアカウントに付与します。たとえば、syndesis が Fuse Online がインストールされている OpenShift プロジェクトの名前である場合や、cicd-client が新しいサービスアカウントの名前である場合、以下のコマンドを実行します。

    $ oc policy add-role-to-user edit system:serviceaccount:syndesis:cicd-client
  3. 以下のコマンドを実行して、Fuse Online のパブリック REST API エンドポイントを公開する OpenShift テンプレートを作成します。

    $ oc create -f https://raw.githubusercontent.com/syndesisio/syndesis/1.8.x/install/support/syndesis-public-oauth-proxy.yml
    注記

    テンプレートでは、リソースの名前は syndesis-public-oauth-proxy で、テンプレート自体の名前は syndesis-public-oauthproxy です。ご覧のとおり、リソース名は oauthproxy がハイフンでつながっていますが、テンプレートファイル名はハイフンでつながっていません。

  4. 以下のコマンドを実行して、Fuse Online のパブリック OAuth プロキシープロセスを実行する OpenShift アプリケーションを作成します。

    OpenShift Container Platform 4.2 の場合は、-p OAUTH_PROXY_TAG=4.2 も指定します

    $ oc new-app --template=syndesis-public-oauthproxy \
        -p PUBLIC_API_ROUTE_HOSTNAME=EXTERNAL_HOSTNAME \
        -p OPENSHIFT_PROJECT=$(oc project -q) \
        -p OPENSHIFT_OAUTH_CLIENT_SECRET=$(oc sa get-token syndesis-oauth-client) \
        -p SAR_PROJECT=$(oc project -q)

    EXTERNAL_HOSTNAME は、Fuse Online 環境のパブリックアドレスに置き換えます。たとえば、アドレスは public-fuse-online.127.0.0.1.nip.io のようになります。

    このコマンドは、前のステップで作成した syndesis-public-oauthproxy テンプレートを使用して、Fuse Online のパブリック REST API を公開する OAuth プロキシープロセスを作成します。この OAuth プロキシーは、OpenShift サービスアカウントトークンを使用して、外部ツールが新規のパブリックネットワークアドレスで Fuse Online パブリック API にアクセスできるようにします。

結果

外部 CI/CD ツールで、Fuse Online のパブリック REST API エンドポイントを使用して Fuse Online 環境全体で Fuse Online インテグレーションをエクスポートおよびインポートすることができます。

次のステップ