第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 プロキシーアプリケーションを作成するユーザーには、クラスター管理者権限が必要です。
手順
指定する名前を持つ OpenShift サービスアカウントを作成します。たとえば、次のコマンドを実行すると
cicd-clientサービスアカウントが作成されます。oc create serviceaccount cicd-client
$ oc create serviceaccount cicd-clientCopy to Clipboard Copied! Toggle word wrap Toggle overflow Fuse Online のパブリック API にアクセスするためのパーミッションを新しいサービスアカウントに付与します。たとえば、syndesis が Fuse Online がインストールされている OpenShift プロジェクトの名前である場合や、
cicd-clientが新しいサービスアカウントの名前である場合、以下のコマンドを実行します。oc policy add-role-to-user edit system:serviceaccount:syndesis:cicd-client
$ oc policy add-role-to-user edit system:serviceaccount:syndesis:cicd-clientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、Fuse Online のパブリック REST API エンドポイントを公開する OpenShift テンプレートを作成します。
oc create -f https://raw.githubusercontent.com/syndesisio/syndesis/1.8.x/install/support/syndesis-public-oauth-proxy.yml
$ oc create -f https://raw.githubusercontent.com/syndesisio/syndesis/1.8.x/install/support/syndesis-public-oauth-proxy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記テンプレートでは、リソースの名前は
syndesis-public-oauth-proxyで、テンプレート自体の名前はsyndesis-public-oauthproxyです。ご覧のとおり、リソース名はoauthとproxyがハイフンでつながっていますが、テンプレートファイル名はハイフンでつながっていません。以下のコマンドを実行して、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)$ 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)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 インテグレーションをエクスポートおよびインポートすることができます。
次のステップ
- 他の Fuse Online 環境にエクスポートするインテグレーションをマーク付けします。Fuse Online コンソールでインテグレーションをマーク付けしたり、インテグレーションをマーク付けする Fuse Online のパブリック REST API エンドポイントを呼び出す ことができます。
- Fuse Online のパブリック REST API エンドポイントを呼び出すよう外部ツールを設定します。