第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
Fuse Online のパブリック API にアクセスするためのパーミッションを新しいサービスアカウントに付与します。たとえば、syndesis が Fuse Online がインストールされている OpenShift プロジェクトの名前である場合や、
cicd-client
が新しいサービスアカウントの名前である場合、以下のコマンドを実行します。$ oc policy add-role-to-user edit system:serviceaccount:syndesis:cicd-client
以下のコマンドを実行して、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
です。ご覧のとおり、リソース名は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)
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 エンドポイントを呼び出すよう外部ツールを設定します。