第 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 Online 环境。外部 CI/CD 工具可能是 Jenkins 任务、Ansible playbook、基于 cron
的 shell 脚本或其他内容。例如,Ansible playbook 可以从 Fuse 在线开发环境导出集成,并将它导入到 Fuse 在线测试环境中。
要启用此功能,您必须为每个 Fuse Online 环境公开 Fuse Online 公共 REST API 端点。换句话说,您必须在安装 Fuse Online 的每个 OpenShift 项目中重复这个过程。
先决条件
- 您有一个 OCP 项目,在其中安装了 Fuse Online。
-
已安装
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 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。另外,您需要此服务帐户获取 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
-operator如果您不需要编辑复合自定义资源
,
则公共 API OAuth 代理服务已经部署。这可能是因为启用了publicApi
以及用于安装 Fuse Online 的default-cr.yml
文件中指定的路由。
结果
在 OpenShift 中,您现在可以看到:
-
用于
syndesis-public-oauthproxy
部署配置的 pod。 -
一个
syndesis-public-oauthproxy
服务。 -
一个
syndesis-public-api
路由。
在您执行此流程的 OpenShift 项目中,外部 CI/CD 工具可以使用 Fuse Online 公共 REST API 端点来导出或导入 Fuse Online 集成。
后续步骤
- 标记集成,以导出到其他 Fuse 在线环境。您可以在 Fuse Online 控制台中标记集成, 或 调用标记集成的 Fuse Online 公共 REST API 端点。
-
要确认公共 API 端点可用,请调用返回环境名称的
curl
命令。如需获取环境标签列表,请参阅 Endpoint。 - 配置外部工具来调用 Fuse Online 公共 REST API 端点。