第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 がインストールされている OpenShift プロジェクトごとに、ここの手順を繰り返す必要があります。

前提条件

  • Fuse Online がインストールされている OCP プロジェクトが必要です。
  • oc クライアントツールがインストール済みであり、Fuse Online がインストールされている OCP クラスターに接続されている必要があります。
  • 外部 CI/CD ツールを使用しており、マーク付けされたインテグレーションを Fuse Online 環境から別の Fuse Online 環境にコピーする状況です。
  • syndesis-operator grant コマンドの実行には、クラスターの管理者権限が必要です。クラスターの管理者権限はなく、OpenShift プロジェクトの管理者権限があるユーザーは、他のコマンドを実行できます。

手順

  1. クラスターの管理者権限を持つアカウントで OpenShift にログインします。以下に例を示します。

    oc login -u admin -p admin

    クラスターの管理者権限は、syndesis-operator grant コマンドにのみ必要ですが、クラスター管理者がすべての手順を実行することを想定します。

  2. Fuse Online が稼働している OpenShift プロジェクトに切り替えます。このプロジェクトでのみパブリック API を公開します。以下に例を示します。

    oc project fuse-online-north

  3. ロールを syndesis-public-oauthproxy サービスアカウントに付与します。OpenShift プロジェクトでは、このサービスアカウントを使用して OAuth プロキシーサービスを実行します。クラスターの管理権限を持つユーザーアカウントを指定します。以下に例を示します。

    syndesis-operator grant --user developer

    このコマンドは、クラスターロールとクラスターのロールバインディングを作成し、これを syndesis-public-oauthproxy サービスアカウントに割り当てます。ClusterRoleBinding は、API を公開する OpenShift プロジェクトの名前を指定します。この例では、名前は fuse-online-north になります。

    • ClusterRole: syndesis-auth-delegator
    • ClusterRoleBinding: syndesis-fuse-online-north-auth-delegator
  4. クライアントサービスアカウントを作成し、Fuse Online のパブリック API にアクセスする権限を付与します。

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

      oc create serviceaccount cicd-client

      パブリック API エンドポイントを呼び出すコマンドは、このアカウントを使用してパブリック API にアクセスします。また、このサービスアカウントは、API エンドポイントへの呼び出しで指定する必要のあるシークレットトークンを取得するために必要です。この説明は パブリック REST API エンドポイントを呼び出すためのシークレットトークンの取得 を参照してください。

    2. Fuse Online のパブリック API にアクセスするための権限をクライアントサービスアカウントに付与します。Fuse Online がインストールされた OpenShift プロジェクトの名前が fuse-online-north で、API サービスにアクセスするために作成したサービスアカウントの名前が cicd-client である場合、以下のコマンドを実行します。

      $ oc policy add-role-to-user edit system:serviceaccount:fuse-online-north:cicd-client`
  5. syndesis カスタムリソースを編集します。

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

      oc edit syndesis

    2. リソースを編集して、パブリック API を有効にし、routeHostname の設定としてエンドポイントを呼び出すための Fuse Online 環境のパブリックアドレスを指定します。Fuse Online のインストールに使用された default-cr.yml ファイルで、パブリック API が有効化され、エンドポイントのルートホスト名が指定されている場合は、リソースを編集する必要はありません。

      クラスターのセットアップにより、指定する必要のあるパブリックアドレスが決定されます。詳細は、ルートに関する OpenShift ドキュメントに記載されています。以下の例では、ルートのホスト名は minishift クラスターに対して有効です。

      spec:
        addons:
          publicApi:
            enabled: true
            routeHostname: public-syndesis.192.168.64.63.nip.io
    3. リソースを保存するか、そのまま閉じます。

      syndesis カスタムリソースを保存することにより、Fuse Online のインストールを担う syndesis-operator がパブリック API OAuth プロキシーサービスをデプロイするようトリガーされます。

      syndesis カスタムリソースを編集する必要がなければ、パブリック API OAuth プロキシーサービスはすでにデプロイされています。これは、Fuse Online のインストールに使用された default-cr.yml ファイルで publicApi が有効化され、そのルートが指定されたためです。

結果

OpenShift で、以下を確認できるようになります。

  • syndesis-public-oauthproxy デプロイメント設定の Pod。
  • syndesis-public-oauthproxy サービス。
  • syndesis-public-api ルート。

この手順を実行した OpenShift プロジェクトでは、外部 CI/CD ツールで Fuse Online のパブリック REST API エンドポイントを使用して Fuse Online インテグレーションをエクスポートまたはインポートできます。

次のステップ