第 5 章 如何调用 Fuse Online 公共 REST API 端点
当您在 OCP 上运行 Fuse Online 时,每个 Fuse Online 环境都可以公开公共 REST API 端点。外部持续集成/持续交付(CI/CD)工具可调用这些端点来处理 Fuse 在线环境中的资源。
在每个 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 在线环境。外部 CI/CD 工具可能是 Jenkins 任务、Ansible playbook、基于 cron
的 shell 脚本或其他内容。例如,Ansible playbook 可以从 Fuse Online 开发环境导出集成,并将其导入到 Fuse 在线测试环境中。
要启用此功能,您必须为每个 Fuse Online 环境公开 Fuse Online 公共 REST API 端点。换句话说,您必须在安装 Fuse Online 的每个 OpenShift 项目中重复该过程。
先决条件
- 您有一个安装了 Fuse Online 的 OCP 项目。
-
已安装
oc
客户端工具,并连接到安装 Fuse Online 的 OCP 集群。 - 您可以使用外部 CI/CD 工具,并希望将其从一个 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 授权 --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。另外,您需要此服务帐户获取 secret 令牌,该令牌必须在调用 API 端点时指定。这在 获取用于调用 REST API 端点的 secret 令牌 中进行了描述。
授予客户端服务帐户访问 Fuse Online 公共 API 的权限。如果
fuse-online-north
是安装 Fuse Online 的 OpenShift 项目的名称,如果cicd-client
是您为访问 API 服务创建的服务帐户的名称,则您将执行以下命令:oc policy add-role-to-user edit system:serviceaccount:fuse-online-north:cicd-client`
编辑
syndesis
自定义资源:调用以下命令,这通常在编辑器中打开资源:
oc edit syndesis
编辑资源,使其启用公共 API,并将 Fuse Online 环境的公共地址指定为
routeHostname
设置。(如果编辑了用于安装 Fuse Online 的default-cr.yml
文件,启用公共 API 并为端点指定路由主机名,则不需要编辑资源。)集群设置决定了您需要指定的公共地址。详情请参阅 OpenShift 文档中的路由。在以下示例中,路由主机名对 minishift 集群有效。
spec: addons: publicApi: enabled: true routeHostname: public-syndesis.192.168.64.63.nip.io
保存(或关闭)资源。
保存
syndesis
自定义资源会触发syndesis-operator
(负责安装 Fuse Online)来部署公共 API OAuth 代理服务。如果您不需要编辑
syndesis
自定义资源,则已部署公共 API OAuth 代理服务。这可能是因为启用了publicApi
,并在用于安装 Fuse Online 的default-cr.yml
文件中指定的路由。
结果
在 OpenShift 中,您现在可以看到:
-
syndesis-public-oauthproxy
部署配置的 pod。 -
一个
syndesis-public-oauthproxy
服务。 -
一个
syndesis-public-api
路由。
在您执行此流程的 OpenShift 项目中,外部 CI/CD 工具可以使用 Fuse Online public REST API 端点导出或导入 Fuse Online 集成。
后续步骤
- 用于导出到其他 Fuse 在线环境的标记集成。您可以在 Fuse Online 控制台中 标记集成,或者调用 Fuse Online 公共 REST API 端点来标记 集成。
-
若要确认公共 API 端点可用,可调用返回环境名称的
curl
命令。请参阅 Endpoint 以获取环境标签列表。 - 配置外部工具,以调用 Fuse Online public REST API 端点。