第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 プロジェクトの管理者権限があるユーザーは、他のコマンドを実行できます。
手順
クラスターの管理者権限を持つアカウントで OpenShift にログインします。以下に例を示します。
oc login -u admin -p adminクラスターの管理者権限は、
syndesis-operator grantコマンドにのみ必要ですが、クラスター管理者がすべての手順を実行することを想定します。Fuse Online が稼働している OpenShift プロジェクトに切り替えます。このプロジェクトでのみパブリック API を公開します。以下に例を示します。
oc project fuse-online-northロールを
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
-
ClusterRole:
クライアントサービスアカウントを作成し、Fuse Online のパブリック API にアクセスする権限を付与します。
選択した名前で OpenShift サービスアカウントを作成します。たとえば、次のコマンドを実行すると
cicd-clientサービスアカウントが作成されます。oc create serviceaccount cicd-clientパブリック API エンドポイントを呼び出すコマンドは、このアカウントを使用してパブリック API にアクセスします。また、このサービスアカウントは、API エンドポイントへの呼び出しで指定する必要のあるシークレットトークンを取得するために必要です。この説明は パブリック REST API エンドポイントを呼び出すためのシークレットトークンの取得 を参照してください。
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`
oc policy add-role-to-user edit system:serviceaccount:fuse-online-north:cicd-client`Copy to Clipboard Copied! Toggle word wrap Toggle overflow
syndesisカスタムリソースを編集します。以下のコマンドを実行します。通常、エディターでリソースが開かれます。
oc edit syndesisリソースを編集して、パブリック API を有効にし、
routeHostnameの設定としてエンドポイントを呼び出すための Fuse Online 環境のパブリックアドレスを指定します。Fuse Online のインストールに使用されたdefault-cr.ymlファイルで、パブリック API が有効化され、エンドポイントのルートホスト名が指定されている場合は、リソースを編集する必要はありません。クラスターのセットアップにより、指定する必要のあるパブリックアドレスが決定されます。詳細は、OpenShift ドキュメントの Routes を参照してください。以下の例では、ルートのホスト名は minishift クラスターに対して有効です。
spec: addons: publicApi: enabled: true routeHostname: public-syndesis.192.168.64.63.nip.iospec: addons: publicApi: enabled: true routeHostname: public-syndesis.192.168.64.63.nip.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow リソースを保存するか、そのまま閉じます。
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 インテグレーションをエクスポートまたはインポートできます。
次のステップ
- 他の Fuse Online 環境にエクスポートするインテグレーションをマーク付けします。Fuse Online コンソールでインテグレーションにマーク付けしたり、インテグレーションにマーク付けする Fuse Online のパブリック REST API エンドポイントを呼び出す ことができます。
-
パブリック API エンドポイントが利用できることを確認するには、環境名を返す
curlコマンドを実行します。環境ラベルのリストを取得するためのエンドポイント を参照してください。 - Fuse Online のパブリック REST API エンドポイントを呼び出すよう外部ツールを設定します。