第 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 项目的管理特权但集群管理特权的用户可以执行其他命令。

流程

  1. 使用具有集群管理特权的帐户登录 OpenShift。例如:

    oc login -u admin -p admin

    虽然只有 syndesis-operator grant 命令需要集群管理特权,但这个过程假设集群管理员执行所有步骤。

  2. 切换到运行 Fuse Online 的 OpenShift 项目。您只在此项目中公开公共 API。例如:

    oc project fuse-online-north

  3. 将角色授予 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
  4. 创建客户端服务帐户,并授予其访问 Fuse Online 公共 API 的权限:

    1. 使用您选择的名称创建一个 OpenShift 服务帐户。例如,以下命令创建 cicd-client 服务帐户:

      oc create serviceaccount cicd-client

      调用公共 API 端点的命令使用此帐户来访问公共 API。另外,您需要此服务帐户获取 secret 令牌,该令牌必须在调用 API 端点时指定。这在 获取用于调用 REST API 端点的 secret 令牌 中进行了描述。

    2. 授予客户端服务帐户访问 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`
  5. 编辑 syndesis 自定义资源:

    1. 调用以下命令,这通常在编辑器中打开资源:

      oc edit syndesis

    2. 编辑资源,使其启用公共 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
    3. 保存(或关闭)资源。

      保存 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 集成。

后续步骤

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.