通过编程方式为 Analytics Engine powered by Apache Spark 创建服务实例

安装 Analytics Engine powered by Apache Spark 后,您必须在操作数项目中创建至少一个 Analytics Engine powered by Apache Spark 服务实例。 如果您是 用户 IBM® Software Hub ,可以使用 REST API /v3/service_instances 调用以编程方式创建服务实例。

谁需要完成这项任务?
若要通过调用 /v3/service_instances REST API 以编程方式创建服务实例,您必须在 中拥有 “创建服务实例 IBM Software Hub (can_provision)”权限。
你需要在什么时候完成这项任务?
仅当您希望通过调用 /v3/service_instances REST API 以编程方式创建服务实例时,才执行此任务。
创建服务实例的其他方法

完成此任务所需的信息

在为 Analytics Engine powered by Apache Spark 创建服务实例之前,请先查看以下信息:

版本需求

与某个实例相关的所有组件都必须在同一 IBM Software Hub 版本中安装或创建。 例如,如果 Analytics Engine powered by Apache Spark 安装在版本 5.3.1 上,则必须在版本 5.3.1 上创建服务实例。

环境变量

本任务中的命令使用了环境变量,因此您可以直接按原样运行这些命令。

  • 如果您没有定义环境变量的脚本,请阅“设置安装环境变量”。
  • 若要在脚本中使用环境变量,必须在执行本任务中的命令之前加载环境变量。 例如,运行以下命令:
    source ./cpd_vars.sh

开始之前

本任务假设已满足以下先决条件:

预备条件 在何处查找更多信息
Analytics Engine powered by Apache Spark 已安装。 如果此任务尚未完成,请参阅《 安装 Analytics Engine powered by Apache Spark 》。
请在您将用于创建服务实例的工作站上安装该 cpd-cli 命令行界面。 如果此任务尚未完成,请阅“设置客户端工作站”。
您已生成一个 API 密钥或授权令牌

API 密钥或令牌必须与在 Cloud Pak for Data. 中拥有 “创建服务实例 (can_provision)”权限的用户相关联。

如果此任务尚未完成,请参阅 《生成 API 授权令牌》

过程

请完成以下任务以创建服务实例:

  1. 创建服务实例
  2. 验证服务实例是否已创建
  3. 接下来该做什么

创建服务实例

要创建服务实例:

  1. 请切换到工作站上您想要创建定义服务实例有效载荷的 JSON 文件的目录。
  2. 设置用于填充服务实例 JSON 有效载荷的环境变量:
    1. INSTANCE_NAME 环境变量设置为您希望用作服务实例显示名称的唯一名称:
      export INSTANCE_NAME="<display-name>"

      该名称会显示在 Web IBM Software Hub 客户端的 “实例 ”页面上。

      显示名称是一个字符串 string ,可以包含字母数字字符(a-z、A-Z、0-9)、空格( )、连字符(-)、下划线(_)和句点(.)。请确保将显示名称用引号括起来,如前面的 export 命令所示。

    2. INSTANCE_DESCRIPTION 环境变量设置为您希望用于该服务实例的描述:
      export INSTANCE_DESCRIPTION="<description>"

      此描述显示在 Web IBM Software Hub 客户端的 “实例 ”页面上。

      该描述是一个 string ,可以包含字母数字、空格、连字符、下划线和句点。 请确保将显示名称用引号括起来,如前面的 export 命令所示。

    3. INSTANCE_VERSION 环境变量设置为与您集群中 IBM Software Hub 的版本相对应的版本:
      export INSTANCE_VERSION=<version>

      请参考下表确定合适的数值:

      IBM Software Hub 版本 服务实例版本
      5.3.1 5.3.1
      5.3.0 5.3.0
    4. VOLUME_NAME 环境变量设置为您为存储此服务实例相关数据而创建的存储卷的名称:
      export VOLUME_NAME=<volume-name>

      卷名的格式为 <namespace>::<unique-name>.

  3. 创建有效载荷 analytics-engine-instance.json 文件:
    cat << EOF > ./analytics-engine-instance.json
    {
        "addon_type": "spark",
        "display_name": "${INSTANCE_NAME}",
        "namespace": "${PROJECT_CPD_INST_OPERANDS}",
        "addon_version": "${INSTANCE_VERSION}",
        "preExistingOwner": false,
        "create_arguments": {
            "description": "${INSTANCE_DESCRIPTION}",
            "metadata": {
                "storageClass": "",
                "storageSize": "",
                "volumeName": "${VOLUME_NAME}"
            }
        }
    }
    EOF
    以下环境变量使用您在安装环境变量脚本中已定义的值:
    • ${PROJECT_CPD_INST_OPERANDS}
  4. PAYLOAD_FILE 环境变量设置为您工作站上 JSON 有效负载文件的完整路径:
    export PAYLOAD_FILE=<fully-qualified-JSON-file-name>
  5. 设置用于连接到目标实例的环境变量,您将在该实例 IBM Software Hub 上创建服务实例:
    1. 设置环境变量 CPD_ROUTE
      export CPD_ROUTE=$(oc get route cpd -n ${PROJECT_CPD_INST_OPERANDS} -o jsonpath={".spec.host"})

      该命令使用了 变量 PROJECT_CPD_INST_OPERANDS ,该变量已在您的安装环境变量脚本中定义。

    2. API_KEY 环境变量设置为您创建的 API 密钥:
      export API_KEY=<your_api_key>
  6. 根据有效载荷文件创建服务实例。

    您需要运行的命令取决于您打算创建服务实例的 IBM Software Hub 该实例是否使用自签名证书,还是使用由受信任的证书颁发机构签名的证书。


    该实例使用由受信任的证书颁发机构签名的证书
    curl --request POST \
    --url "https://${CPD_ROUTE}/zen-data/v3/service_instances" \
    --header "Authorization: ZenApiKey ${API_KEY}" \
    --header 'Content-Type: application/json' \
    --data @${PAYLOAD_FILE}

    该实例使用自签名证书(默认)
    curl -k --request POST \
    --url "https://${CPD_ROUTE}/zen-data/v3/service_instances" \
    --header "Authorization: ZenApiKey ${API_KEY}" \
    --header 'Content-Type: application/json' \
    --data @${PAYLOAD_FILE}

    如果请求成功,该命令将返回以下 HTTP 响应代码之一:
    • 200 - 请求已成功完成,服务实例已配置完毕。
    • 202 - 请求已成功提交。 正在为该服务实例进行配置。

    如果请求未成功,请使用 HTTP 响应代码来确定原因。

验证服务实例是否已创建

要验证服务实例是否已创建:

  1. INSTANCE_ID 环境变量设置为 cURLPOST 命令返回的ID:
    export INSTANCE_ID=<ID-from-response>
  2. 获取服务实例的状态。

    您需要运行的命令取决于您打算创建服务实例的 IBM Software Hub 该实例是否使用自签名证书,还是使用由受信任的证书颁发机构签名的证书。


    该实例使用由受信任的证书颁发机构签名的证书
    curl --request GET \
      --url "https://${CPD_ROUTE}/zen-data/v3/service_instances/${INSTANCE_ID}" \
      --header "Authorization: ZenApiKey ${API_KEY}" \
      --header 'Content-Type: application/json'

    该实例使用自签名证书(默认)
    curl -k --request GET \
      --url "https://${CPD_ROUTE}/zen-data/v3/service_instances/${INSTANCE_ID}" \
      --header "Authorization: ZenApiKey ${API_KEY}" \
      --header 'Content-Type: application/json'

    • 如果请求成功,该命令将返回以下 HTTP 响应代码: 200
      在 JSON 响应中查找该 provision_status 参数。
      • 如果该值为 PROVISIONED,则表示服务实例已成功创建。
      • 如果该值为 PROVISION_IN_PROGRESS,请等待几分钟,然后再次运行该命令。
      • 如果该值为 FAILED,请检查 和 zen-watcher Pod zen-core-api 的日志,以查找可能的原因。
    • 如果请求未成功,请使用 HTTP 响应代码来确定原因。

下一步操作

您必须授予用户访问该服务实例的权限。 如需更多信息,请参阅 “管理用户对实例的访问权限 ”。

您可以管理已分配的实例。 如需了解更多信息,请参阅《 管理已配置的实例》。