5.17. 导入产品

要在多个 3scale 实例中使用相同的 3scale 产品(当源和目标 3scale 实例没有网络连接时),请从一个 3scale 实例导出 3scale 产品,并将它导入到另一个 3scale 实例。要导入产品,请运行 toolbox 3scale product import 命令。

当两个 3scale 实例具有网络连接时,当您想要在 3scale 实例中使用相同的 3scale 产品时,请使用 toolbox 3scale copy 命令

描述

当您导入 3scale 产品时,toolbox 需要以 .yaml 格式的序列化 ProductBackend 自定义资源定义(CRD)。您可以通过运行 toolbox 3scale product export 命令或手动创建 .yaml 格式的产品定义来获取此 .yaml 内容。

如果您导出了产品,导入的定义包含导出的内容,其中包括:

  • 链接到产品的后端。
  • 链接后端的指标、方法和映射规则.
  • 应用计划中定义的限值和定价规则.
  • 限值和定价规则引用的指标和方法。

如果要修改,您可以在导入 3scale 实例前修改导入的 .yaml 输出。

import 命令具有幂等性。您可以多次运行它来导入同一产品,并且生成的 3scale 配置保持不变。如果导入过程中出现错误,则可以安全地重新运行该命令。如果 import 过程无法在 3scale 实例中找到产品,它会创建该产品。它还会创建 .yaml 定义中定义的任何指标、方法或后端,且无法在 3scale 实例中找到。

在以下情况下导入 3scale 产品:

  • 源和目标 3scale 实例之间没有连接。例如,当您想要在多个 3scale 实例中使用同一产品时,可能会存在严重网络限制阻止运行 toolbox 3scale copy 命令。
  • 您需要使用 Git 或其它源控制系统来维护 3scale 产品定义(采用 .yaml 格式)。

3scale toolbox exportimport 命令也可能有助于备份和恢复产品定义。

格式

运行 import 命令使用这个格式:

3scale product import [<options>] <remote>

import 命令从 stdin 或文件获取 .yaml 输入。默认值为 stdin

您可以指定这些选项:

  • -f--file 后跟文件名从您指定的 .yaml 文件中获取输入。此文件必须包含一个 3scale 产品定义,该定义遵循 3scale ProductBackend CRD。
  • -o--output 后跟 jsonyaml 输出报告,其中列出了您指定的格式导入的内容。默认输出格式为 json

<remote> 替换为与您要导入该产品的 3scale 实例关联的 3scale 供应商帐户别名或 URL。有关指定此功能的更多信息,请参阅管理远程访问凭证

示例

以下命令将 petstore-product.yaml 中定义的产品导入到与 my-3scale-2 供应商帐户关联的 3scale 实例中。默认情况下,导入内容的报告采用 .json 格式。

3scale product import -f petstore-product.yaml my-3scale-2

import 命令输出列出导入项目的报告,例如:

api:
  product_id: 2555417888846
  backends:
    backend_01:
      backend_id: 73310
      missing_metrics_created: 1
      missing_methods_created: 1
      missing_mapping_rules_created: 1
    backend_02:
      backend_id: 73311
      missing_metrics_created: 0
      missing_methods_created: 2
      missing_mapping_rules_created: 1
  missing_methods_created: 1
  missing_metrics_created: 1
  missing_mapping_rules_created: 2
  missing_application_plans_created: 2
  application_plans:
    basic:
      application_plan_id: 2357356246461
      missing_limits_created: 7
      missing_pricing_rules_created: 7
    unlimited:
      application_plan_id: 2357356246462
      missing_limits_created: 1
      missing_pricing_rules_created: 0

导出产品系列化定义的示例位于导出产品的末尾。