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

流程

  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 grant --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 -operator (负责安装 Fuse Online)来部署公共 API OAuth 代理服务。

      如果您不需要编辑复合自定义资源 则公共 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 集成。

后续步骤

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.