準備在 Google Cloud Marketplace 上架 Terraform Kubernetes 應用程式

透過 Producer Portal 導入 Terraform Kubernetes 應用程式之前,建議您先為 Google Cloud Marketplace 準備 Google Cloud環境和 Terraform Kubernetes 應用程式。

事前準備

如要存取 Producer Portal,請務必填妥 Cloud Marketplace 專案資訊表單

建立工作區

建議您在Google Cloud 控制台中建立新專案,專案 ID 結尾為 -public,主要用於 Cloud Marketplace 產品。如需詳細操作說明,請參閱「建立及管理專案」。

如果您已設定專案,在 Cloud Marketplace 上銷售產品,請確認 Kubernetes 的 Identity and Access Management (IAM) 角色已正確授予,然後直接跳至本文的「設定 Artifact Registry」。

授予 Identity and Access Management 角色,並為專案指定安全聯絡人

如要授予 Identity and Access Management (IAM) 角色,並為專案指定安全聯絡人,請完成下列步驟:

  1. 在專案層級授予下列 IAM 角色:

    • 專案編輯者,請 cloud-commerce-marketplace-onboarding@twosync-src.google.com
    • Service Management 管理員 (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

    • 服務消費者 (roles/servicemanagement.serviceConsumer)
    • 服務控制者 (roles/servicemanagement.serviceController)

    如需授予服務層級存取權的步驟,請參閱「授予及撤銷 API 存取權」。

  3. 指定安全聯絡人。詳情請參閱「管理通知聯絡人」。

設定 Artifact Registry

如要設定 Artifact Registry,請完成下列步驟:

  1. 安裝 gcloud CLI。 如要更新現有安裝項目,請執行 gcloud components update 指令。注意:在 Ubuntu 上,請使用 Debian 套件安裝 gcloud CLI。gcloud CLI Snap 套件不包含 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 快速入門中的操作說明進行。

整理發布內容

一般來說,應用程式的每個版本都必須採用語意版本管理 2.0,並遵循 MAJOR.MINOR.PATCH 編號慣例。每個版本都必須有專屬版本號碼,例如 1.0.11.0.21.3.1。如要新增預先發布修飾符 (選用),請在版本號碼後加上破折號,例如 1.3.1-alpha201910。您可以使用前置發布修飾符儲存並醒目顯示任何實用資訊,例如表示版本建立時間的建構日期。

建議您在測試群組中發布軟體。每個測試群組都是一系列版本,並提供回溯相容的更新。發布群組應以子版本為準,例如 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 Provider 部署您提供的 Helm 資訊套件。如要瞭解如何建立與 Terraform Kubernetes 應用程式相容的 Terraform 模組,請參閱 GitHub 上的 Terraform Kubernetes 合作夥伴指南

選擇產品 ID

您必須為公司、產品和容器映像檔選取下列 ID,以用來建立 Cloud Marketplace 網址和容器映像檔的 URI:

  • 公司名稱。例如,如果公司名稱為 Examplesoft Inc.,您可使用 examplesoft ID。
  • 產品名稱。例如,如果產品名稱為 Example Pro,請使用 example-pro ID。
  • 產品的發布測試群組,例如 4.0。詳情請參閱本頁稍早的「整理發行內容」。

產品 ID 範例

例如,Examplesoft Inc. 公司選擇將下列 ID 用於其 Example Pro 產品:

名稱 ID
公司 Examplesoft Inc examplesoft
產品 Example Pro example-pro
Helm 資訊套件 Helm 資訊套件 圖表
圖片 [1] 資料庫範例 example-db
映像檔 [2] 佇列範例 example-queue
測試群組 [1] 4.x.x 版 4.0
測試群組 [2] 5.x.x 版 5.0

系統會根據這些 ID 自動產生下列資訊:

  • 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 環境後,請完成下列步驟,繼續準備發布應用程式: