第5章 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、シークレットトークン、および承認トークンを指定します。
詳細は以下のトピックを参照してください。
5.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`
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.io
リソースを保存するか、そのまま閉じます。
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 エンドポイントを呼び出すよう外部ツールを設定します。