创建部署包

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

部署是一起创建和管理的一组资源,例如您的产品所需的资源。部署包是通常一起部署的一组资源的规范,从而简化了部署该特定产品的过程。

在本指南中,您将使用 Deployment Manager 创建部署软件包。通过 Deployment Manager,您可以使用简单的 YAML、JSON 或 ProtoText 配置文件为虚拟机产品创建部署包。

确定如何创建部署包

若您的产品是使用基本防火墙规则对单个虚拟机实例进行简单部署,则可以直接在 Google Cloud Console 中创建简单的部署软件包。

若您的产品是复杂的部署,则可以使用开源 mpdev 工具创建和自定义 Deployment Manager 软件包,并为其提供额外功能。

下表说明了简单部署与复杂部署之间的区别:

部署 说明 如何创建软件包
简单 具有基本防火墙规则的单个虚拟机实例。 Google Cloud Console
综合体 复杂的部署(单虚拟机或多虚拟机)。部署可能需要以下任何功能:
  • 配额检查 CPU 和 GPU,以便用户超出配额要求时无法部署您的产品。
  • Deployment Manager 页面中的动态定价更新。
  • 支持共享虚拟私有云 (VPC)。
  • 支持具有多个网络接口卡的虚拟机。
  • 阻止用户选择其所选区域中不可用的机器类型,GPU 或子网的功能。
mpdev 工具

如果您不确定哪种部署方案更适合您的产品,请与您的 Google 合作伙伴工程师联系以获得指导。

准备工作

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

  2. 若您使用 mpdev 工具创建部署包,请完成以下步骤:

    1. 按照 marketplace-tools 代码库中的说明安装 mpdev 工具。
    2. 下载 Google Cloud SDK

创建并提交部署包

以下部分介绍如何创建部署包并将软件包提交给 Google 进行审核。

使用以下方法之一创建部署包:

使用 Google Cloud Console 创建部署包

如需使用 Google Cloud Console 创建和提交简单的部署软件包,请执行以下操作:

合作伙伴门户

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

使用 mpdev 创建部署包

本部分介绍了如何使用 mpdev 工具创建部署包并提交部署包以供审核。

mpdev 工具使用 Deployment Manager Autoge 为您的部署包生成 Deployment Manager 模板。该工具会根据 Autogen 规范生成部署包,其中包含虚拟机产品的配置输入。

如需使用 mpdev 创建部署包,请根据您使用的是 Producer Portal 还是合作伙伴门户将产品集成到 Google Cloud Marketplace,按照以下说明执行操作:

Producer Portal

概括来讲,如需生成和提交部署包,您必须执行以下操作:

  1. 创建并配置 Cloud Storage 存储分区,以存储和管理对部署包的访问权限。
  2. 创建 Autogen 规范,以包含虚拟机产品的映像详细信息和部署要求。
  3. 根据您的 Autogen 规范生成部署包,并将该部署包上传到 Cloud Storage 存储分区。
  4. 在 Producer Portal 中提交部署包以供审核。在您提交部署包后,Google 最多可能需要两周的时间来审核并批准该部署包。

以下部分介绍如何完成生成和提交部署包的步骤。

创建 Cloud Storage 存储分区

您必须在用于 Producer Portal 的同一公共 Google Cloud 项目中创建 Cloud Storage 存储分区,并通过以下方式配置该存储分区:

如需创建和配置 Cloud Storage 存储分区,请运行以下 gsutil 命令:

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 是您为新存储分区提供的名称(须遵循命名要求)。

创建您的 Autogen 规范

如需创建 Autogen 规范,我们建议您使用 marketplace-tools 代码库中的 single VM example 作为初始 Autogen 规范,然后使用虚拟机的配置详细信息自定义该规范。

对于更复杂的用例,您可以在一些集成开发环境 (IDE) 中设置自动填充,以帮助修改和验证 configurations.yaml 文件。

如需从 single VM example 创建 Autogen 规范,请执行以下操作:

  1. 将示例的预配置 Autogen 规范添加到本地目录:
 PACKAGE=YOUR_PACKAGE_NAME
 mpdev pkg get https://github.com/GoogleCloudPlatform/marketplace-tools.git/examples/deployment-manager/autogen/singlevm $PACKAGE

其中 YOUR_PACKAGE_NAME 是您为本地目录提供的名称。例如 my-deployment-package

  1. 使用以下信息修改 configurations.yaml 文件,以使用虚拟机的配置详细信息更新规范:

    • 虚拟机映像的名称。
    • 托管您的虚拟机映像的公共 Google Cloud 项目(即您用于 Producer Portal 的项目)的 ID 项目。

    如需了解更新 configurations.yaml 文件中的虚拟机映像和 Google Cloud 项目字段的步骤,请参阅 single VM exampleREADME.md 文件。

  2. 如果您的产品需要,请自定义其他字段,例如 passwordsdeployInputpostDeploy。这些字段位于 configurations.yaml 文件中的 DeploymentSpec 下。如需详细了解可以自定义的字段,请参阅 Autogen 参考文档

生成部署包

创建和自定义 Autogen 规范后,您可以使用该规范为部署包生成 Deployment Manager 模板文件。如需存储部署包,请将部署包上传到 Cloud Storage 存储分区。

如需生成并上传部署包,请执行以下操作:

  1. 将部署包的输出位置设置为 Cloud Storage 存储分区:

    mpdev cfg set zipPath gs://BUCKET_NAME/OBJECT
    

    其中,BUCKET_NAME 是您为部署包创建的存储分区的名称,OBJECT 是您为 Cloud Storage 对象提供的名称(根据命名准则)。

  2. 生成部署包:

    mpdev apply -f $PACKAGE/configurations.yaml
    

将生成的部署包压缩并上传到存储分区。

如需验证模板是否已正确配置,您可以运行以下命令来创建部署:

TMPDIR=$(mktemp -d)
unzip $PACKAGE/template.zip -d $TMPDIR
gcloud deployment-manager deployments create $PACKAGE --config $TMPDIR/test_config.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. 如果您已提交开源合规性审核,请点击单选按钮以确认您尚未更改开源许可的使用。

合作伙伴门户

创建您的 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

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

客户视图中的部署包

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

部署包的客户视图

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

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

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

已部署包的客户视图

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

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