为 Google Cloud Marketplace 准备 Terraform Kubernetes 应用

在通过 Producer Portal 载入 Terraform Kubernetes 应用之前,建议您为 Google Cloud Marketplace 准备 Google Cloud环境和 Terraform Kubernetes 应用。

准备工作

如需访问 Producer Portal,请确保您已填写Cloud Marketplace 项目信息表单

创建工作区

建议您在 Google Cloud 控制台中创建一个以 -public 结尾的项目 ID,主要用于您的 Cloud Marketplace 产品。如需详细说明,请参阅创建和管理项目

如果您已设置项目以在 Cloud Marketplace 上销售,请验证是否已为 Kubernetes 正确授予 Identity and Access Management (IAM) 角色,然后直接跳至本文档中的设置 Artifact Registry

授予 Identity and Access Management 角色并为项目指定安全联系人

如需授予 Identity and Access Management (IAM) 角色并为项目指定安全联系人,请完成以下步骤:

  1. 在项目级层授予以下 IAM 角色:

    • Project Editor,以cloud-commerce-marketplace-onboarding@twosync-src.google.com
    • Service Management Administrator (roles/servicemanagement.serviceAdmin),向 cloud-commerce-marketplace-onboarding@twosync-src.google.commanaged-services@cloud-marketplace.iam.gserviceaccount.com 授予
    • 配置编辑器 (roles/servicemanagement.configEditor),到 cloud-commerce-producer@system.gserviceaccount.com

    如需了解详细说明,请参阅授予、更改和撤消对资源的访问权限

  2. 在服务层级向 cloud-commerce-procurement@system.gserviceaccount.com 授予以下角色:

    • Service Consumer (roles/servicemanagement.serviceConsumer)
    • Service Controller (roles/servicemanagement.serviceController)

    如需了解在服务级层授予访问权限的步骤,请参阅授予和撤消对 API 的访问权限

  3. 指定安全联系人。如需了解详情,请参阅管理通知联系人

设置 Artifact Registry

如需设置 Artifact Registry,请完成以下步骤:

  1. 安装 gcloud CLI。 如需更新现有安装,请运行命令 gcloud components update。注意:在 Ubuntu 上,使用 Debian 软件包安装 gcloud CLI。gcloud CLI 快照软件包不包含 kubectl 或扩展程序来使用 gcloud CLI 向 Artifact Registry 进行身份验证。
  2. 安装 Docker(如果尚未安装)。
  3. 启用 Artifact Registry API,以便您可以推送到 Artifact Registry。
    启用 API
  4. 创建临时 Artifact Registry 制品库。如需了解详细步骤,请参阅在 Artifact Registry 中存储 Docker 容器映像
  5. 为您的 Artifact Registry 代码库启用 Artifact Analysis(可进行安全扫描)。
  6. 将要在应用中分发的映像标记并推送到临时 Artifact Registry 代码库。

标记并推送映像

如需为映像添加标记并将其推送到 Artifact Registry,请完成以下步骤:

  1. 选择 Artifact Registry 临时代码库路径。我们建议您的代码库采用以下结构:us-docker.pkg.dev/YOUR_PARTNER_ID/YOUR_SOLUTION_ID。您的临时代码库必须位于 us-docker.pkg.dev 中。Cloud Marketplace 不支持其他区域或 gcr.io 网域(例如 europe-docker.pkg.devgcr.ioeu.gcr.io)的 Terraform Kubernetes 应用。
  2. 保存或复制临时代码库路径,以便在 Producer Portal 中创建产品时使用。
  3. 构建要推送到 Artifact Registry 临时代码库的映像。
  4. 使用 Docker 为映像添加版本号标记,例如 1.0

    docker tag IMAGE_NAME STAGING_REPO_PATH:VERSION_NUMBER
    

    例如,此命令可以是:docker tag test-image us-docker.pkg.dev/testpartner/testsolution:1.0

  5. 使用 gcloud 推送映像:

    gcloud docker push STAGING_REPO_PATH:tag
    
  6. 对于要添加到临时代码库的每个其他标记或映像,请重复执行上述步骤。您可以为单个图片添加多个标记。

将映像推送到临时代码库不会自动将映像公开给用户。发布图片后,用户即可看到这些图片。

在 Kubernetes Engine 中创建开发集群

使用 Google Kubernetes Engine 来管理和扩缩 Kubernetes 集群。要创建测试集群并在其中部署基本应用,请按照 Google Kubernetes Engine 快速入门进行操作。

整理发布内容

通常,应用的每个版本都必须采用 Semantic Versioning 2.0,遵循 MAJOR.MINOR.PATCH 编号约定。每个版本都必须有唯一的版本号,例如 1.0.11.0.21.3.1。(可选)如需添加预发布修饰符,请在版本号后面使用短划线,例如 1.3.1-alpha201910。您可以使用预发布修饰符来存储和突出显示您认为有用的任何其他信息,例如表示版本创建时间的 build 日期。

我们建议您按轨道发布软件。每个轨道是具有向后兼容更新的一系列版本。您的发布轨道应基于次要版本,例如 4.1.x。避免使用通用版本名称,例如 newest

例如,如果您要在 Cloud Marketplace 上发布应用的版本 2.0,并且期望版本 2.0.12.0.5 及更高版本向后兼容 2.0,请将这些版本整理到 2.0 发布轨道下。

当您发布向后不兼容的应用版本或要求用户执行手动迁移步骤的版本时,请在新轨道中发布它,以便用户可以计划更新。

创建 Terraform 模块封装容器并将其上传到 Cloud Storage

您必须提供一个 Terraform 模块,供 Cloud Marketplace 用户用来部署您的 Terraform Kubernetes 应用。此模块使用 Helm 提供程序来部署您提供的 Helm 图表。如需了解如何创建与 Terraform Kubernetes 应用兼容的 Terraform 模块,请参阅 GitHub 上的 Terraform Kubernetes 合作伙伴指南

选择您的产品标识符

您必须为公司、产品和容器映像选择以下标识符,这些标识符用于创建 Cloud Marketplace 网址和容器映像的 URI:

  • 公司名称。例如,如果贵公司名称为 Examplesoft Inc.,则可以使用标识符 examplesoft
  • 产品名称。例如,如果产品名称为 Example Pro,则使用标识符 example-pro
  • 产品的发布轨道,例如 4.0。如需了解详情,请参阅本页上文中的整理发布版本

商品标识码示例

例如,公司 Examplesoft Inc. 为其产品 Example Pro 选择以下标识符:

名称 标识符
公司 Examplesoft Inc examplesoft
产品 Example Pro example-pro
Helm 图表 Helm 图表 图表
映像 [1] 示例数据库 example-db
映像 [2] Example Queue example-queue
发布轨道 [1] 4.x.x 版 4.0
发布轨道 [2] 5.x.x 版 5.0

系统会根据这些标识符自动生成以下信息:

  • Cloud Marketplace 中的产品网址: https://console.cloud.google.com/marketplace/details/examplesoft/example-pro
  • 项目中的 Artifact Registry URI:
    • us-docker.pkg.dev/examplesoft/example-pro/chart:4.0
    • us-docker.pkg.dev/examplesoft/example-pro/example-db:4.0
    • us-docker.pkg.dev/examplesoft/example-pro/example-query:4.0
    • us-docker.pkg.dev/examplesoft/example-pro/chart:5.0
    • us-docker.pkg.dev/examplesoft/example-pro/example-db:5.0
    • us-docker.pkg.dev/examplesoft/example-pro/example-query:5.0

后续步骤

为 Terraform Kubernetes 应用设置 Google Cloud 环境后,请继续完成以下步骤,准备发布应用: