迁移项目和空间资产 ( Watson Studio )

使用 cpd-cli 命令在单个 Cloud Pak for Data 集群内或在不同集群之间导出和导入项目及空间资产。

此命令使用项目空间导出功能。

注:

不允许将一个源容器的资源导入多个目标容器,但允许将多个源容器的资源导入一个目标容器。 此举旨在确保跨容器关系得到妥善处理。

先决条件

需要的角色

要完成此任务,您必须在 Red Hat OpenShift 上拥有以下其中一个角色:

  • 集群管理员
  • 实例管理员

此外,您必须在 Cloud Pak for Data 中拥有以下任一权限:

  • 具有平台管理权限的用户

支持对象: 以下 Cloud Pak for Data 版本支持项目和空间资产的迁移:

  • 从 Cloud Pak for Data 导出资源
  • 将资产导入 Cloud Pak for Data

开始之前:

  • 在执行本任务中的命令之前,请创建一个安装环境变量文件,并加载这些环境变量。 请参阅 “设置环境变量”

  • 请确保已完成所有先决任务,并已初始化导出和导入工具。 请参阅 “在 CPD 安装之间迁移数据 ”。

  • 检查该 catalog-api-aux auxiliary 模块是否可用。 运行以下命令以确定已安装了哪些辅助模块:

    cpd-cli export-import list aux-modules \
    --namespace=${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME} \
    --arch=${CPU_ARCH}
    
  • 请查阅 Cloud Pak for Data 文档中 “要求与限制 ”部分,了解项目导出的相关限制。

过程

导出项目和空间资产

要从 Watson Studio 服务中导出项目和空间资产,请按照以下步骤操作:

  1. 请以具有足够权限的用户身份登录 Red Hat OpenShift ,以便完成此任务。

    ${OC_LOGIN}
    
    请记住:${OC_LOGIN} 变量是 `oc login` 命令的别名。 如需更多信息,请参阅 “设置环境变量 ”。
  2. 请根据您要从中导出数据的 Cloud Pak for Data 实例设置您的配置文件:

    cpd-cli config profiles set ${CPD_PROFILE_NAME} \
    --user ${LOCAL_USER} \
    --url ${CPD_PROFILE_NAME}
    
  3. 确定导出范围。 如果您想导出所有项目和空间中的所有资源,请跳至第 3 步。 如果您想选择要导出的资源,请创建一个包含导出配置的 YAML 文件。 创建一个具有以下 export.yaml 结构的文件:

    catalog-api-aux:
      # exportspec specifies which assets to export
      exportspec: '<EXPORT_JSON_STRING>'
    

    通过将 <EXPORT_JSON_STRING> 变量替换为 JSON 字符串,指定要导出的资源。

    • 从指定项目或空间的列表中导出所有资源:
    '{
      "project": { <<---- this is the type of asset container: project or space
        "container_specs": [
          {
            "guids": [
              "00cf5b102-17b3-4638-95df-309a2a443137",  <<---- these are the ids of asset containers
              "e14a187d-4fc8-4a5d-aee1-e2ad4ec60b29"
            ],
            "all_assets": true
          }
        ]
      },
      "catalog": { <<---- this is the type of asset container: project or space
        "container_specs": [
          {
            "guids": [
              "ab3d18a4-015f-4bb1-ae13-4ee9faf0382a"  <<---- these are the ids of asset containers
            ],
            "all_assets": true
          }
        ]
      }
    }'
    
    • 从指定的项目或空间列表中导出特定资源:
    '{
      "space": { <<---- this is the type of asset container: project or space
        "container_specs": [
          {
            "guids": [
              "4b014869-fc0e-4919-bc93-3fa8c40bcd37"  <<---- this is the id of asset container
            ],
            "asset_specs": {
              "asset_ids": [
                "e14a187d-4fc8-4a5d-aee1-e2ad4ec60b29",  <<---- these are the ids of assets
                "e2395865-5503-49da-b708-cfbf2fb1b646"
              ]
            }
          }
        ]
      }
    }'
    
    • 从指定的项目或空间列表中导出特定类型的资源:
    '{
      "space": { <<---- this is the type of asset container: project or space
        "container_specs": [
          {
            "guids": [
              "4b014869-fc0e-4919-bc93-3fa8c40bcd37",  <<---- these are the ids of asset containers
              "866613f8-4102-4cd2-be6e-ee46ea6c468b"
            ],
            "asset_specs": {
              "asset_types": [
                "data_asset",  <<---- these are the types of assets
                "notebook"
              ]
            }
          }
        ]
      }
    }'
    
  4. 切换到安装了命令行界 cpd-cli 面的目录。

  5. 设置以下环境变量:

    1. EXPORT_NAME 环境变量设置为您希望用于标识导出作业的名称:
    export EXPORT_NAME=<name>
    
    1. 若要导出特定资源,请 EXPORT_YAML_FILE_LOCATION 将环境变量设置为包含导出配置的 YAML 文件的完整路径:
    export EXPORT_YAML_FILE_LOCATION=<fully-qualified-path-to-YAML-file>
    
  6. 请根据您的环境运行相应的导出命令:

    • 要导出所有资源,请运行:
    cpd-cli export-import export create ${EXPORT_NAME} \
    --namespace=${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME} \
    --component=catalog-api \
    --arch=${CPU_ARCH}
    
    • 要导出特定资源,请运行:
    cpd-cli export-import export create ${EXPORT_NAME} \
    --namespace=${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME} \
    --component=catalog-api \
    --values=${EXPORT_YAML_FILE_LOCATION} \
    --arch=${CPU_ARCH}
    
  7. 等待导出完成。 要查看导出状态,请运行:

    cpd-cli export-import export status ${EXPORT_NAME} \
    --namespace=${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME} \
    --arch=${CPU_ARCH}
    
  8. 如果您计划将数据导入到另一个集群,请下载导出结果:

    cpd-cli export-import export download ${EXPORT_NAME} \
    --namespace=${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME} \
    --arch=${CPU_ARCH}
    

    导出包的名称格式为: cpd-exports-<export_name>-<timestamp>-data.tar

导入项目和空间资产

要将资源导入 Watson Studio 服务,请完成以下步骤:

要将资源导入 Watson Studio 服务,请完成以下步骤:

  1. 请根据您希望导入数据的位置,遵循相应的指引:

    • 如果您将数据导入到同一集群中另一个 Cloud Pak for Data 实例上的 Watson Studio 服务实例:
    1. 请确保使用正确的环境变量文件。
    2. 请根据您要导入数据的 Cloud Pak for Data 实例设置配置文件:
      cpd-cli config profiles set ${CPD_PROFILE_NAME} \
      --user ${LOCAL_USER} \
      --url ${CPD_PROFILE_NAME}
      
    • 如果您要将数据导入位于不同集群上的 Watson Studio 服务实例:
    1. 请确保使用正确的环境变量文件。

    2. 登录您要导入数据的 Red Hat OpenShift Container Platform ,并确保您拥有足够的权限来完成此任务。

      ${OC_LOGIN}
      
      请记住:${OC_LOGIN} 变量是 `oc login` 命令的别名。 如需更多信息,请参阅 “设置环境变量 ”。
    3. 根据 Cloud Pak for Data 实例设置您的个人资料:

      cpd-cli config profiles set ${CPD_PROFILE_NAME} \
      --user ${LOCAL_USER} \
      --url ${CPD_PROFILE_NAME}
      
  2. 确定导入的范围。 如果您想导入所有项目和空间中的所有资源,请跳至第 4 步。 如果您想选择要导入的资源,请创建一个包含导入规范的 YAML 文件。 创建一个具有以下 import.yaml 结构的文件:

    catalog-api-aux:
      admin_username: cpadmin
      # importspec specifies which assets to import
      importspec: '<IMPORT_JSON_STRING>'
    

    将该 <IMPORT_JSON_STRING> 变量替换为指定要导入的资源的 JSON 字符串。

    您指定的 admin_username 用户将作为导入资产的所有者,且必须设置为实例管理员。

    在您的 YAML 文件中添加以下导入规范,以选择要导入的资源:

    • containerIds:将特定的源资产导入新集群中已有的特定容器。 该值是一个源:目标格式的 JSON 映射。

    示例:

    '{ "containerIds": { "default": "<target-id1>", "<original-id>": "<target-id2>" } }'
    

    如果您正在浏览用户界面,可以在项目的“ URL ”中找到“ containerIDs ”。

    您还可以使用命令行 cpd-cli 工具,并执行以下命令:

    • cpd-cli project list 该函数返回一个包含项目及其 ID 的列表
    • cpd-cli asset search 该方法将返回一个包含资产及其 ID 的列表

    有关该 cpd-cli 命令行工具的更多信息,请参阅 cpd-cli 命令参考

    • newContainerNameOverrides:将容器导入到新的容器中。 您可以在容器创建之前为其指定具体名称。 否则,新容器将被赋予默认名称。 该值是一个源:目标格式的 JSON 映射。

      示例:

      { "newContainerNameOverrides": { "<source-id1>": "<target-name1>", "<source-id2>": "<target-name2>" } }
      
    • container_suffix:将容器导入到新的容器中。 在创建容器之前,您可以为其名称添加后缀。 否则,新容器将被赋予默认名称。

      示例:

      { "container_suffix": "-migration" }
      
    • duplicate_action:指定在创建资产时应执行的操作。 请从以下 4 个选项中选择一个:“UPDATE”、“REJECT”、“REPLACE”或“IGNORE”。

      注:

      duplicate_action 该连接资产类型不支持此功能。

      示例:

      { "duplicate_action": "REPLACE" }
      
  3. 切换到安装了命令行界 cpd-cli 面的目录。

  4. IMPORT_NAME 环境变量设置为您希望用于标识导入作业的名称:

    export IMPORT_NAME=<name>
    
  5. 运行以下命令,将数据导入 Watson Studio 服务:

    cpd-cli export-import import create ${IMPORT_NAME} \
    --from-export=${EXPORT_NAME} \
    --namespace=${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME} \
    --values=${IMPORT_YAML_FILE_LOCATION} \
    --arch=${CPU_ARCH} \
    --backoff-limit=0
    
  6. 等待导入完成。 要查看导入状态,请运行:

    cpd-cli export-import import status ${IMPORT_NAME} \
    --namespace=${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME} \
    --arch=${CPU_ARCH}