第 4 章 如何调用 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,端点在其上运行、机密令牌和身份验证令牌。

详情请查看以下主题:

4.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 的每个安装重复这个过程。对于同一集群中的 Fuse Online 环境,但您可以使用同一服务帐户公开公共 API,但建议为每个安装使用不同的服务帐户来提高安全性。

先决条件

  • 您有一个 OCP 项目,在其中安装了 Fuse Online。
  • 您可以使用外部 CI/CD 工具,您希望它将标记为集成从一个 Fuse Online 环境复制到另一个。
  • 创建 OpenShift 公共 OAuth 代理应用的用户必须具有集群管理特权。

流程

  1. 创建一个具有您指定的名称的 OpenShift 服务帐户。例如,以下命令会创建 cicd-client 服务帐户:

    $ oc create serviceaccount cicd-client
  2. 为新服务帐户授予访问 Fuse Online 公共 API 的权限。例如,如果 syesis 是安装了 Fuse Online 的 OpenShift 项目的名称,如果 cicd-client 是新服务帐户的名称,则您将调用以下命令:

    $ oc policy add-role-to-user edit system:serviceaccount:syndesis:cicd-client
  3. 调用以下命令以创建 OpenShift 模板以公开 Fuse Online 公共 REST API 端点:

    $ 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。正如您所见,资源名称 hyphenates oauthproxy,但模板文件名没有。

  4. 调用以下命令以创建运行 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 在线环境的公共地址。例如,地址可能是类似于 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 集成。

后续步骤