Google Cloud Marketplace 向けに Terraform Kubernetes アプリを準備する

Producer Portal を介して Terraform Kubernetes アプリをオンボーディングする前に、Google Cloud Marketplace 用に Google Cloud環境と Terraform Kubernetes アプリを準備することをおすすめします。

始める前に

Producer Portal にアクセスするには、Cloud Marketplace プロジェクト情報フォームに記入してください。

ワークスペースの作成

新しいプロジェクトは、主に Cloud Marketplace プロダクト用に、プロジェクト ID が -public で終わる Google Cloud コンソールで作成することをおすすめします。詳細な手順については、プロジェクトの作成と管理をご覧ください。

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 に付与
    • Config 編集者(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 スナップ パッケージには、gcloud CLI を使用して Artifact Registry で認証するための kubectl や拡張機能は含まれていません。
  2. Docker をまだインストールしていなければ、インストールします。
  3. Artifact Registry API を有効にします。これにより、Artifact Registry に push できるようになります。
    API を有効にする
  4. ステージング Artifact Registry リポジトリを作成します。詳細な手順については、Artifact Registry に Docker コンテナ イメージを保存するをご覧ください。
  5. Artifact Registry リポジトリで Artifact Analysis を有効にします。これにより、セキュリティ スキャンが可能になります。
  6. アプリで配布するイメージにタグを付けて、ステージング Artifact Registry リポジトリに push します。

イメージにタグを付けて push する

イメージにタグを付けて Artifact Registry に push するには、次の操作を行います。

  1. Artifact Registry ステージング リポジトリのパスを選択します。リポジトリでは、次の構造を使用することをおすすめします。us-docker.pkg.dev/YOUR_PARTNER_ID/YOUR_SOLUTION_IDステージング リポジトリは us-docker.pkg.dev 内に配置する必要があります。Cloud Marketplace は、Terraform Kubernetes アプリで europe-docker.pkg.devgcr.ioeu.gcr.io などの他のリージョンや gcr.io ドメインをサポートしていません。
  2. Producer Portal でプロダクトを作成するために、ステージング リポジトリのパスを保存またはコピーします。
  3. Artifact Registry ステージング リポジトリに push するイメージをビルドします。
  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 を使用してイメージを push します。

    gcloud docker push STAGING_REPO_PATH:tag
    
  6. ステージング リポジトリに追加するタグやイメージごとに、前の手順を繰り返します。1 つのイメージに複数のタグを追加できます。

イメージをステージング リポジトリに push しても、ユーザーに自動的に表示されることはありません。イメージは、公開後にユーザーに表示されるようになります。

Kubernetes Engine で開発クラスターを作成する

Google Kubernetes Engine を使用して、Kubernetes クラスタを管理およびスケーリングします。テストクラスタを作成して基本的なアプリをデプロイする場合は、Google Kubernetes Engine クイックスタートに従ってください。

リリースを整理する

一般に、アプリのすべてのバージョンは、セマンティック バージョニング 2.0MAJOR.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 にアップロードする

Cloud Marketplace ユーザーが Terraform Kubernetes アプリをデプロイするために使用できる Terraform モジュールを提供する必要があります。このモジュールは、Helm プロバイダを使用して、提供した Helm チャートをデプロイします。Terraform Kubernetes アプリと互換性のある Terraform モジュールを作成する手順については、GitHub の Terraform Kubernetes パートナー ガイドをご覧ください。

商品 ID を選択する

Cloud Marketplace の URL を作成するために使用される会社、商品、およびコンテナ イメージの次の識別子と、コンテナ イメージの URI を選択する必要があります。

  • 会社の名前。たとえば、会社名が Examplesoft Inc.の場合、識別子 examplesoft を使用できます。
  • 商品の名前。たとえば、商品の名前が Example Pro の場合、識別子 example-pro を使用します。
  • 4.0 など、商品のリリース トラック。詳しくは、このページで前述のリリースを整理するをご覧ください。

商品 ID の例

たとえば、Examplesoft Inc. 社は、自社の商品である Example Pro に対して次の ID を選択しています。

名前 識別子
会社 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

これらの ID から、次の情報が自動的に生成されます。

  • Cloud Marketplace の商品の URL: 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 環境を設定したら、次の手順に沿ってアプリの公開準備を続けます。