IBM Cloud Docs
将软件加入到您的帐户中

将软件加入到您的帐户中

将软件加入您的账户的过程包括将版本导入私有目录、验证该版本是否可以成功安装在您所需的目标基础架构上,以及将软件发布到您的账户。 然后,该软件可供您帐户中的用户使用。

准备工作

  1. 验证您是否正在使用现收现付帐户或预订帐户。 有关更多详细信息,请参阅 查看帐户类型

  2. 查看可以加载的软件列表:

    • Kubernetes 和 Red Hat OpenShift on IBM Cloud 集群上的 Helm Chart
    • Terraform 模板
    • 部署在 VMware Solutions Dedicated 上的 OVA 映像- vCenter Server
    • 在 VPC 基础结构或 Power Virtual Server 上部署了 Terraform 的虚拟服务器映像
    • VPC的虚拟服务器镜像

    在专用目录中提供了具有 IBM Z® 部署支持的 VPC 的加载虚拟服务器映像。 IBM Z支持的虚拟服务器映像的加载体验与您在专用目录中加载其他虚拟服务器映像的方式相同。

    • 具有来自 GitHub 或 GitLab 存储库的 TGZ 文件的操作程序
    • 来自 Red Hat OpenShift 注册表的操作程序捆绑软件
  3. 如果在 VPC 上部署 VSI,则不需要将源代码上传到 GitHub 或 GitLab 代码库中。 相反,请确保您的账户中已准备好可用的自定义图片。 请参阅 在 VPC 中导入和验证自定义图像

  4. 确保为您分配了 IAM 访问权限

    • 经理角色Schematics服务
    • 目录管理服务的编辑者角色
    • 账户中所有资源组的查看器角色。 您需要访问至少一个资源组才能运行验证
    • Secrets Manager 服务上的写手角色。 如果在 VPC 上使用 VSI,则不需要此角色
  5. 安装 IBM Cloud CLI和 IBM Cloud Schematics 插件。 请参阅 设置 CLI 以获取更多信息。

对于容器化应用程序,请完成以下先决条件:

  1. 创建 Kubernetes 集群Red Hat OpenShift 集群
  2. 对于到 IBM Cloud Kubernetes Service的部署,设置 Helm Chart
  3. 要部署到 Red Hat OpenShift,请设置 Helm Chart操作程序

对于虚拟服务器映像,请完成以下先决条件:

  1. 查看 支持的映像 的列表。
  2. 如果需要,请创建 Terraform 模板。 VPC 的虚拟服务器映像不需要 Terraform 模板。
  3. 创建 IBM Cloud Object Storage 的实例,并将映像添加到存储区。

在使用 Terraform 将软件加载到帐户之前,请确保您已完成以下操作:

  • 安装 Terraform CLI 并为 Terraform 配置 IBM Cloud 提供程序插件。 有关更多信息,请参阅 Terraform on IBM Cloud®入门 教程。 该插件对用于完成此任务的 IBM Cloud API 进行抽象。
  • 创建一个名为 main.tf 的Terraform配置文件。 在此文件中,您使用 HashiCorp 配置语言来定义资源。 有关更多信息,请参阅 Terraform 文档

要与其他帐户共享软件,必须在 Partner Center 中核准您的软件。 有关更多信息,请参阅进行设置以销售软件

创建专用目录

专用目录为您提供了一种方法来管理帐户中用户对产品的访问权。

  1. 转至 IBM Cloud 控制台中的 管理 > 目录,然后单击 创建目录
  2. 请输入目录的名称和描述。
  3. 选择此项以在专用目录中排除或包含 IBM Cloud 目录中的所有产品。 有关此操作如何影响目录中的可视性的更多信息,请参阅 管理目录设置
  4. 单击创建

将软件导入您的私人目录

完成以下步骤以将软件导入到专用目录:

  1. 在“专用产品”页面中,单击 添加

  2. 选择部署方法。

  3. 选择是从专用存储库还是公共存储库添加产品。 或者,如果要从 Red Hat 注册表加载操作程序,请选择 Red Hat 存储库类型: CertifiedMarketplaceCommunity

    如果要从专用存储库添加产品,那么可以提供个人访问令牌,也可以使用私钥。 您可以向用户授予对私钥的访问权,将令牌添加到私钥,集中管理所有令牌并访问私钥允许的私钥,而不是授予用户对私钥的访问权。

    • 如果您正在使用个人访问令牌,请选择 以指示您未使用私钥,并提供个人访问令牌。
    • 如果您正在使用私钥,请选择 ,然后单击 从 Secrets Manager中选择。 选择服务实例,私钥组和私钥。 如果未看到私钥,请确保您正在使用正确的私钥组和服务实例。

    如果您尚未创建私钥,或者如果您没有正确的访问权来使用私钥,那么可能会显示消息 No service instance available,即使您具有已创建的服务实例也是如此。

  4. 输入您的源文件 URL。 您可以查看每种软件类型的以下受支持格式列表:

    • Helm Chart: https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm
    • Node-RED 运算符: https://github.com/IBM-Cloud/operator-bundle-sample/archive/refs/tags/v0.0.3.tar.gz
    • 来自 Red Hat OpenShift on IBM Cloud 注册表的操作程序捆绑软件: 例如,从已认证的存储库中的可用操作程序列表中选择 Akka Cluster Operator
    • OVA 映像: https://github.com/gcatalog/OVA-sample/blob/main/ova-sample.yaml
    • Terraform 模板: https://github.com/IBM-Cloud/terraform-sample/releases/tag/v1.0.0
    • 使用Terraform的虚拟服务器镜像:https://github.com/IBM-Cloud/isv-vsi-product-deploy-sample/releases/download/v1.0/isv-vsi-product-deploy-sample.tar.gz
    • VPC 的虚拟服务器映像:从已导入到您的 VPC 的可用映像列表中选择一个映像,或者将新映像导入到您的帐户。

    VPC 的虚拟服务器映像一次只能添加到一个专用目录中的一个产品。 如果要导入的虚拟服务器映像已导入到另一个产品中,那么必须先从该产品中除去该映像,或者删除该产品,然后再将该虚拟服务器映像添加到新产品中。

  5. 如果适用,请输入主要版本,次要版本和修订版格式的软件版本。 例如,输入 V 1.1.2。

  6. 选择产品的目录类别。 IBM Cloud 目录中的产品根据功能、用途或通用解决方案进行分类。

  7. 点击 “添加产品”。

添加商品详细信息

为有权访问专用目录的用户将产品发布到目录时,他们会看到一个磁贴,其中包含产品名称以及在加载期间添加的其他详细信息。 除了导入软件时设置的类别外,您还可以添加与行业,合规性及其所使用的技术等相关的其他过滤器。 在目录中使用这些过滤器中的每个过滤器,以供用户查找符合其需求的软件。 在目录的详细信息部分,您还可以评估和更新简短描述、文档 URL 甚至关键词,以帮助用户快速搜索和找到您的产品。

  1. 从“商品详细信息”部分中,单击 编辑 图标 "编辑" 图标
  2. 查看随产品一起导入的信息,并根据需要进行编辑。
  3. 查看过滤器和行业选项以选择应用的商品目录过滤器。 最多可以选择 5 个行业过滤器。
  4. 请检查商品预览,以查看商品目录磁贴如何向正在对商品目录中的软件进行评估的用户显示。
  5. 当您对更改感到满意时,请单击 保存

有关更多信息,请参阅 定义产品详细信息

配置软件

Helm chart

  1. 从产品详细信息页面上显示的版本列表中,单击包含软件的行。
  2. 查看版本详细信息,然后点击 “下一步”。
  3. 配置预安装,然后单击 下一步
  4. 通过设置运行安装脚本所需的访问权并设置部署值来配置部署详细信息,然后单击 下一步

Terraform

  1. 从产品详细信息页面上显示的版本列表中,单击包含软件的行。
  2. 查看版本详细信息,然后点击 “下一步”。
  3. 配置部署值。
  4. 如果适用,请编辑输出值描述,然后单击 下一步
  5. 定义所需的 IAM 访问权,然后单击 下一步

来自 GitHub 存储库的操作程序

  1. 从产品详细信息页面上显示的版本列表中,单击包含软件的行。
  2. 查看版本详细信息,然后点击 “下一步”。

来自 Red Hat 注册表的操作程序

  1. 从产品详细信息页面上显示的版本列表中,单击包含软件的行。
  2. 查看版本详细信息,然后点击 “下一步”。

OVA 映像

  1. 从产品详细信息页面上显示的版本列表中,单击包含软件的行。
  2. 查看版本详细信息,然后点击 “下一步”。

用于 Terraform 的虚拟服务器映像

  1. 从产品详细信息页面上显示的版本列表中,单击包含软件的行。
  2. 查看版本详细信息,然后点击 “下一步”。
  3. 配置部署值。
  4. 如果适用,请编辑输出值描述,然后单击 下一步
  5. 定义所需的 IAM 访问权,然后单击 下一步

Virtual Server for VPC 映像

  1. 从产品详细信息页面上显示的版本列表中,单击包含软件的行。
  2. 查看映像列表,然后单击 下一步
  3. 查看版本详细信息,然后点击 “下一步”。

添加许可协议

提供用户在安装产品时需要接受的许可协议的 URL。 许可协议是对 IBM Cloud 服务协议的补充。

  1. 单击 添加许可协议 > 添加许可证
  2. 输入姓名和 URL,点击更新 > 下一步

编辑自述文件

当用户安装软件时,他们可以选择自述文件的链接来查看产品信息。 Readme 链接中的信息是从您上传到源存储库的自述文件生成的。

  1. 从“编辑自述文件”选项卡中,预览在用户安装软件时如何向其显示自述文件中的信息。
  2. 要进行更新,请单击“自述文件”部分标题旁边的 编辑 图标 "编辑" 图标
  3. 单击保存
  4. 单击下一步

如果要导入 VPC 的虚拟服务器映像,那么不会自动生成自述文件。 复制并粘贴 自述文件模板 的内容,并根据需要进行更新。

验证软件

验证软件时,您正在确认可以在部署目标上成功安装当前版本。 验证步骤因部署方法而异。

要监视验证过程的进度,请单击 查看日志

Helm chart

  1. 从“验证产品”选项卡中,选择集群。
  2. 如果部署目标是 Kubernetes 集群,请选择名称空间或创建新的名称空间。 如果部署目标是 Red Hat OpenShift 集群,请选择项目或创建新的项目。
  3. 单击下一步
  4. 配置您的 IBM Cloud Schematics 工作区。
  5. 单击下一步
  6. 如果适用,请查看许可协议,然后选择 我已阅读并同意以下许可协议:
  7. 点击 “验证”。

Terraform

  1. 从“验证产品”选项卡中,配置 IBM Cloud Schematics 工作空间。
  2. 单击下一步
  3. 如果适用,请查看许可协议,然后选择 我已阅读并同意以下许可协议:
  4. 点击 “验证”。

来自 GitHub 存储库的操作程序

  1. 从“验证产品”选项卡中,选择 Red Hat OpenShift 集群。
  2. 选择一个项目或创建一个新项目。 项目类似于 Kubernetes 集群名称空间,并且列表会从 Red Hat OpenShift 环境进行填充。
  3. 单击下一步
  4. 配置您的 IBM Cloud Schematics 工作区。
  5. 单击下一步
  6. 如果适用,请查看许可协议,然后选择 我已阅读并同意以下许可协议:
  7. 点击 “验证”。

来自 Red Hat 注册表的操作程序

  1. 从“验证产品”选项卡中,选择更新通道。
  2. 选择核准策略。
  3. 选择您的 Red Hat OpenShift 集群。
  4. 选择一个项目或创建一个新项目。 项目类似于 Kubernetes 集群名称空间,并且列表会从 Red Hat OpenShift 环境进行填充。
  5. 单击下一步
  6. 配置您的 IBM Cloud Schematics 工作区。
  7. 单击下一步
  8. 如果适用,请查看许可协议,然后选择 我已阅读并同意以下许可协议:
  9. 点击 “验证”。

OVA 映像

  1. 从“验证产品”选项卡中,复审许可协议,然后选择 我已阅读并同意以下许可协议:
  2. 点击 “验证”。

用于 Terraform 的虚拟服务器映像

  1. 从“验证产品”选项卡中,配置 IBM Cloud Schematics 工作空间。
  2. 单击下一步
  3. 如果适用,请查看许可协议,然后选择 我已阅读并同意以下许可协议:
  4. 点击 “验证”。

Virtual Server for VPC 映像

  1. 从“验证版本”选项卡中,配置验证目标,然后单击 下一步
  2. (可选) 配置 Schematics 工作空间,然后单击 下一步
  3. 如果适用,请查看许可协议,然后选择 我已阅读并同意以下许可协议:
  4. 点击 “验证”。

管理合规性

您可以向软件添加概要文件和控件,以证明其满足安全性和合规性要求。 必须使用 Security and Compliance Center 来扫描验证期间创建的资源。

只有 Security and Compliance Center 支持并由 Security and Compliance Center 扫描验证的概要文件和控件才会显示在目录中。

运行 Security and Compliance Center 扫描

申领概要文件和控件时,必须评估验证期间创建的资源以确保合规性。 要运行扫描,请完成以下步骤:

  1. 在 IBM Cloud 控制台中,单击 菜单 图标 菜单图标 > 安全性与合规性 以访问 Security and Compliance Center。
  2. 在导航中,单击 概要文件
  3. 单击要评估的概要文件行中的 溢出 菜单,然后选择 运行扫描
  4. 单击 运行扫描

扫描完成后,您可以返回到专用目录以继续加载过程。

添加合规性控制

添加要声明的概要文件和控件。

  1. 在产品的“管理合规性”部分中,选择 添加声明
  2. 选择您要添加的个人资料。
  3. 选择添加整个概要文件或控件的子集。
  4. 如果选择整个概要文件,请继续执行下一步。 如果选择添加控件子集,请选择要添加的控件。
  5. 单击添加

应用 Security and Compliance Center 扫描

添加先前在 Security and Compliance Center中运行的扫描。Security and Compliance Center 扫描确定遵守监管控制。 有关详细信息,请参阅 按需运行扫描

  1. 单击 添加扫描
  2. 选择用于评估的概要文件。
  3. 选择 Security and Compliance Center 扫描。
  4. 单击 应用扫描
  5. 单击下一步

复审需求

您必须完成验证以及要共享到帐户的任何其他需求。 当您准备好使产品可供有权访问您的专用目录的所有用户使用时,请单击 准备共享

共享软件

如果要将产品共享给您的帐户或企业,请单击导航中的产品名称以转至产品详细信息页面。 从 “操作”菜单中点击 “共享”。 选择要共享产品的位置,然后单击 共享

使用 CLI 将软件加载到目录中

完成以下步骤以使用 CLI 添加软件。 您可以在 CI/CD 过程中使用此任务。 要从私有存储库添加软件,您必须包含个人访问令牌。

  1. 跑过 ibmcloud 目录创建 命令来创建私人目录。 专用目录为您提供了一种方法来管理帐户中用户对产品的访问权。

    ibmcloud catalog create --name CATALOG [--catalog-description "DESCRIPTION"]
    
  2. 跑过 ibmcloud 目录产品创建 命令将软件添加到您的私人目录。

    ibmcloud catalog offering create [--catalog CATALOG-NAME] [--zipurl URL]
    

    如果要从专用存储库导入软件,可以通过向命令添加 [-- token TOKEN] 来使用个人访问令牌。

  3. 跑过 ibmcloud 目录提供添加类别 命令为您的产品添加类别。 默认情况下,开发者工具类别已添加到您的产品。

    ibmcloud catalog offering add-category --catalog CATALOG_NAME [--offering OFFERING] [--category CATEGORY]
    
  4. 跑过 ibmcloud 目录提供导入版本 命令来导入您想要的目录的软件版本。

    ibmcloud catalog offering import-version --catalog CATALOG --offering OFFERING_NAME --zipurl URL
    

    以下显示了每种软件类型的受支持格式列表:

    • Helm Chart: https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm
    • Node-RED 运算符: https://github.com/IBM-Cloud/operator-bundle-sample/archive/refs/tags/v0.0.3.tar.gz
    • 来自 Red Hat OpenShift on IBM Cloud 注册表的操作程序捆绑软件: 例如,从已认证的存储库中的可用操作程序列表中选择 Akka Cluster Operator
    • OVA 映像: https://github.com/gcatalog/OVA-sample/blob/main/ova-sample.yaml
    • Terraform 模板: https://github.com/IBM-Cloud/terraform-sample/releases/tag/v1.0.0
    • 使用Terraform的虚拟服务器镜像:https://github.com/IBM-Cloud/isv-vsi-product-deploy-sample/releases/download/v1.0/isv-vsi-product-deploy-sample.tar.gz
    • VPC 的虚拟服务器映像:从已导入到您的 VPC 的映像列表中选择一个映像,或者将新映像导入到您的帐户。
  5. 跑过 ibmcloud 目录提供版本验证 命令来验证软件。

    ibmcloud catalog offering version validate --version-locator VERSION_NUMBER --cluster CLUSTER_ID --namespace NAME [--timeout TIMEOUT] [--wait WAIT]
    

    部署软件可能需要几分钟时间。 跑过 ibmcloud 目录提供版本验证状态 通过查询产品验证状态来检查验证状态。

    ibmcloud catalog offering version validate-status --version-locator VERSION_NUMBER [--output FORMAT]
    
    
  6. 跑过 ibmcloud 目录提供发布帐户 将您的软件发布给您帐户中的用户。

    ibmcloud catalog offering publish account [--catalog CATALOG][--offering OFFERING]
    

使用应用程序编程接口创建私人目录

专用目录为您提供了一种方法来管理帐户中用户对产品的访问权。 您可以调用目录管理API,以编程方式创建一个私人目录,如下面的示例请求所示。 有关更多信息,请参阅用于创建目录的 目录管理 API

String label = "{label}";
String shortDesc = "{shortDesc}";
CreateCatalogOptions createOptions = new CreateCatalogOptions.Builder().label(label).shortDescription(shortDesc).build();
Response<Catalog> response = service.createCatalog(createOptions).execute();
System.out.println(response.getResult());
label = "{label}";
shortDesc = "{shortDesc}";
response = await service.createCatalog({ 'label': label, 'shortDescription': shortDesc });
console.log(response);
label = "{label}"
shortDesc = "{shortDesc}"
response = self.service.create_catalog(label=label, short_description=shortDesc)
print(response)
label := "{label}"
shortDesc := "{shortDesc}"
createOptions := service.NewCreateCatalogOptions()
createOptions.SetLabel(label)
createOptions.SetShortDescription(shortDesc)
_, response, _ := service.CreateCatalog(createOptions)
fmt.Println(response)

使用 API 将软件导入到专用目录

您可以通过调用目录管理 API 以编程方式将软件导入到目录中,如以下样本请求中所示。 此 API 会创建软件并将其导入。 有关 API 的详细信息,请参阅 目录管理 API

id = "{id}";
offeringURL = "{offeringURL}";
ImportOfferingOptions offeringOptions = new ImportOfferingOptions.Builder().catalogIdentifier(id).zipurl(offeringURL).build();
Response<Offering> response = service.importOffering(offeringOptions).execute();
System.out.println(response.getResult());
id = "{id}";
offeringURL = "{offeringURL}";
response = await service.importOffering({ 'catalogIdentifier': id, 'zipurl': offeringURL });
console.log(response);
id = "{id}"
offeringURL = "{offeringURL}"
response = self.service.import_offering(catalog_identifier=id, zipurl=offeringURL)
print(response)
id := "{id}"
offeringURL := "{offeringURL}"
offeringOptions := service.NewImportOfferingOptions(id, offeringURL)
_, response, _ := service.ImportOffering(offeringOptions)
fmt.Println(response)

使用 API 验证软件

您可以调用目录管理API,对您的产品进行编程验证,如下面的请求示例所示。 此过程可能花费几分钟时间。 有关 API 的详细信息,请参阅 目录管理 API

String authRefreshToken = "{authRefreshToken}";
String versionLocator = "{versionLocator}";
ValidationInstallOptions installOptions = new ValidationInstallOptions.Builder().xAuthRefreshToken(authRefreshToken).versionLocId(versionLocator).build();
Response<Void> response = service.validationInstall(installOptions).execute();
System.out.println(response.getResult());
versionLocator = "{versionLocator}";
authRefreshToken = "{authRefreshToken}";
response = await service.validationInstall({ 'versionLocatorId': versionLocator, 'xAuthRefreshToken': authRefreshToken });
console.log(response);
authRefreshToken="{authRefreshToken}"
versionLocator = "{versionLocator}"
response = self.service.validation_install(version_locator_id=versionLocator, x_auth_refresh_token=authRefreshToken)
print(response)
versionLocator := "{versionLocator}"
authRefreshToken := "{authRefreshToken}"
installOptions := service.NewValidationInstallOptions(versionLocator, authRefreshToken)
response, _ := service.ValidationInstall(installOptions)
fmt.Println(response)

使用 API 将软件发布到帐户

您可以通过调用目录管理 API 以编程方式将软件发布到帐户,如以下样本请求中所示。

String versionLocator = "{versionLocator}";
AccountPublishVersionOptions publishOption = new AccountPublishVersionOptions.Builder().versionLocId(versionLocator).build();
Response<Void> response = service.accountPublishVersion(publishOption).execute();
System.out.println(response.getResult());
versionLocator = "{versionLocator}";
response = await service.accountPublishVersion({ 'versionLocId': versionLocator});
console.log(response);
versionLocator = "{versionLocator}"
response = self.service.account_publish_version(version_loc_id=versionLocator)
print(response)
versionLocator := "{versionLocator}"
publishOptions := service.NewAccountPublishVersionOptions(versionLocator)
response, _ := service.AccountPublishVersion(publishOptions)
fmt.Println(response)

使用 Terraform 创建专用目录

使用以下步骤通过 Terraform 创建专用目录。

  1. 将自变量添加到 main.tf 文件。 以下示例使用 ibm_cm_catalog 资源创建专用目录,其中 label 是用于标识目录的显示名称。

    resource "ibm_cm_catalog" "cm_catalog" {
    label = "label"
    short_description = "short_description"
    }
    

    有关更多信息,请参阅“Terraform 目录管理”页面上的参数参考详细信息。

  2. 完成构建配置文件后,初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录

    terraform init
    
  3. main.tf 文件供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构

    1. 运行 terraform plan 以生成 Terraform 执行计划来预览建议的操作。

      terraform plan
      
    2. 运行 terraform apply 以创建计划中定义的资源。

      terraform apply
      

使用 Terraform 将产品导入到目录中

使用以下步骤通过 Terraform 将产品导入到专用目录中。

  1. 将自变量添加到 main.tf 文件。 以下示例通过使用 ibm_cm_offering 资源来添加产品,其中 label 是用于标识产品的显示名称。

    resource "ibm_cm_offering" "cm_offering" {
    catalog_id = "catalog_id"
    label = "label"
    tags = [ "tags" ]
    }
    

    有关更多信息,请参阅“Terraform 目录管理”页面上的参数参考详细信息。

  2. 完成构建配置文件后,初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录

    terraform init
    
  3. main.tf 文件供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构

    1. 运行 terraform plan 以生成 Terraform 执行计划来预览建议的操作。

      terraform plan
      
    2. 运行 terraform apply 以创建计划中定义的资源。

      terraform apply
      

使用 Terraform 导入软件版本

添加产品后,请使用以下步骤通过 Terraform 添加软件版本。

  1. 将自变量添加到 main.tf 文件。 以下示例使用 cm_version 资源访问软件版本,其中 offering_id 标识软件。

    resource "cm_version" "cm_version" {
    catalog_identifier = "catalog_identifier"
    offering_id = "offering_id"
    zipurl = "zipurl"
    }
    

    有关更多信息,请参阅“Terraform 目录管理”页面上的参数参考详细信息。

  2. 完成构建配置文件后,初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录

    terraform init
    
  3. main.tf 文件供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构

    1. 运行 terraform plan 以生成 Terraform 执行计划来预览建议的操作。

      terraform plan
      
    2. 运行 terraform apply 以创建计划中定义的资源。

      terraform apply