创建部署包

本部分介绍为虚拟机 (VM) 产品创建部署包的步骤。您必须创建并提交部署包,才能将产品发布到 Google Cloud Marketplace。

部署是一起创建和管理的一组资源,例如您的产品所需的资源。部署包是通常一起部署的一组资源的规范,从而简化了部署该特定产品的过程。通过 Deployment Manager,您可以使用简单的 YAML、JSON 或 ProtoText 配置文件为虚拟机产品创建部署包。

对于大多数使用场景,建议使用开源 mpdev 工具来生成 Deployment Manager 部署包。mpdev 工具使用 Deployment Manager Autogen 生成 Deployment Manager 部署包。如需了解详情,请参阅此 Autogen 规范示例。使用 Autogen 构建的部署包包括以下功能:

  • 配额检查 CPU 和 GPU,以便用户超出配额要求时无法部署您的产品。
  • Deployment Manager 页面中的动态定价更新。
  • 支持共享虚拟私有云 (VPC)。
  • 支持具有多个网络接口卡的虚拟机。
  • 阻止用户选择其所选区域中不可用的机器类型,GPU 或子网的功能。

准备工作

  1. 按照 marketplace-tools 代码库中的说明安装 mpdev 工具。

  2. 确保您的部署不使用 Terraform,或者与 Terraform 具有任何依赖项。

  3. 下载 Google Cloud SDK

生成并提交部署包

Producer Portal

创建 Cloud Storage 存储分区

在生成部署包之前,您必须创建一个 Cloud Storage 存储分区。您可以使用存储分区来存储和管理对部署包的访问权限,以便稍后将其提交到 Producer Portal。

您必须在用于 Producer Portal 的同一公共 Google Cloud 项目中创建 Cloud Storage 存储分区,并通过执行以下操作为部署包配置存储分区:

如需创建和配置 Cloud Storage 存储分区,请执行以下操作:

BUCKET_NAME=YOUR_BUCKET_NAME
gsutil mb $BUCKET_NAME
gsutil versioning set on gs://$BUCKET_NAME
gsutil iam ch "group:marketplace-ops@cloud.google.com:objectViewer" $BUCKET_NAME

其中,YOUR_BUCKET_NAME 是您为新存储分区提供的名称。例如 my-bucket

创建您的 Autogen 规范

我们建议您使用 marketplace-tools 代码库中的 single VM example 创建初始 Autogen 规范。

如需从 single VM example 创建规范,请运行以下命令:

mpdev pkg get https://github.com/GoogleCloudPlatform/marketplace-tools.git/examples/deployment-manager/autogen/singlevm MY_PACKAGE

按照下载的示例的 README.md 文件中所述的步骤操作。这些步骤包括修改特定于您的产品的 configurations.yaml 文件的字段。

如需查看 configurations.yamlDeploymentSpec 下的字段的详细文档,请参阅 Autogen 参考文档

您还可以在 examples 文件夹中查看其他示例配置。

生成并上传部署包

根据上一部分中的示例,设置 mpdev 为部署包输出的位置:

  mpdev cfg set zipPath gs://BUCKET_NAME/OBJECT
  

其中,BUCKET_NAME 是您为软件包创建的 Cloud Storage 存储分区的名称,OBJECT 是部署包。

生成部署包后,请运行以下命令将软件包上传到存储分区:

  mpdev apply -f MY_PACKAGE/configurations.yaml
  

提交部署包

生成部署包后,您必须将软件包上传到 Producer Portal,并提交软件包以供 Google Cloud Marketplace 团队进行审核。

如需上传并提交您的部署包以供审核:

  1. 在 Google Cloud Console 中打开 Producer Portal:

    https://console.cloud.google.com/producer-portal?project=YOUR_PUBLIC_PROJECT_ID
    

    YOUR_PUBLIC_PROJECT_ID 替换为您为 Google Cloud Marketplace 创建的公共项目的 ID,例如 my-organization-public

  2. 在产品列表中,点击您的产品的名称。

  3. 在产品的概览页面上,转到部署包部分,然后点击修改

  4. 指定 GCS 对象位置下,选择您之前上传的部署包对象。

  5. 点击验证。验证过程最长可能需要两个小时才能完成,完成后您可以退出屏幕。

  6. 在 Producer Portal 成功读取您的部署包后,您可以点击部署预览查看客户如何查看您的虚拟机配置

  7. 验证成功完成后,点击提交以发送软件包以供审核。

  8. 如果您已提交开源合规性审核,请点击单选按钮,确认您尚未更改开源许可的使用。

在您提交部署包后,Google 最多可能需要两周的时间来审核并批准该软件包。

合作伙伴门户

如果您的产品使用基本防火墙规则对单个虚拟机实例进行简单部署,您可以直接在合作伙伴门户中配置简单的部署包。对于更复杂的部署,您可以使用开源 mpdev 工具生成部署包。如果您不确定哪种部署选项更适合您的产品,请与 Google 合作伙伴工程师联系。

简单部署

如需配置简单的部署包,请执行以下操作:

  1. 转到合作伙伴门户,然后从产品列表中选择您的产品。
  2. 部署包旁边,点击编辑
  3. 选择生成部署包,然后单击继续
  4. 使用项目映像下拉菜单选择您的虚拟机映像,然后单击继续
  5. 选择最小机器类型默认机器类型设置,然后单击继续
  6. 添加客户应采取的所有部署后的后续步骤,然后单击继续
  7. 设置防火墙规则和其他网络选项(如果适用),然后单击继续
  8. 您可以选择声明网站或管理员网址。如果您的产品需要登录,则可以在提交解决方案时设置登录详细信息。点击 Continue
  9. 列出部署包的内容下,选择虚拟机映像操作系统的操作系统名称操作系统版本。然后,您可以为产品中随附的每个附加软件添加名称版本。列出软件包的所有内容后,点击继续
  10. 完成上述步骤后,您的解决方案软件包将显示在审核下。您可以下载解决方案部署包,或单击编辑 JSON 进行手动修改。单击保存以保存部署包并返回您的解决方案。

复杂部署

以下部分介绍如何使用 mpdev 工具生成部署包。

创建您的 Autogen 规范

我们建议您使用 marketplace-tools 代码库中的 single VM example 创建初始 Autogen 规范。如需从 single VM example 创建规范,请运行以下命令:

mpdev pkg get https://github.com/GoogleCloudPlatform/marketplace-tools.git/examples/deployment-manager/autogen/singlevm MY_PACKAGE

按照下载的示例的 README.md 文件中所述的步骤操作。这些步骤包括修改特定于您的产品的 configurations.yaml 文件的字段。完成这些步骤后,在修改后的 mpdev 配置上运行 mpdev apply 以生成 Deployment Manager 软件包。

如需查看 configurations.yamlDeploymentSpec 下的字段的详细文档,请参阅 Autogen 参考文档

您还可以在 examples 文件夹中查看其他示例配置。

创建授权凭据

您可以在 configurations.yamlDeploymentSpec 中指定多个 passwords。您可以从实例元数据服务器检索密码,并在部署后界面中查看密码。

生成部署包

下面的示例命令会读取 MY_PACKAGE/configurations.yaml 中的规范并将 zip 文件输出到 MY_PACKAGE/configurations.yaml 中指定的位置:

mpdev apply -f MY_PACKAGE/configurations.yaml

创建部署包后,请按照这些说明将部署包上传到合作伙伴门户。

客户视图中的部署包

对于基于自动生成的标准解决方案部署包的产品,以下各部分显示了客户在部署产品时看到的屏幕布局。

部署包的客户视图

标准客户输入元素显示在以下屏幕截图的左侧,包括地区、机器类型、磁盘选项和网络选项。

如果客户的部署需要多个网络接口卡,则他们可以通过单击添加网络接口来添加其他网络接口。

要部署您的产品,您的客户必须填写输入字段,然后单击部署

已部署包的客户视图

下图显示了客户成功部署您的产品后看到的产品视图。

下面的屏幕截图的右侧显示了标准输出元素,包括网址、临时管理员密码和实例信息。