Google Cloud 環境の設定

このページでは、Kubernetes アプリを配布できるように、Google Cloud 環境をセットアップする手順について説明します。

ワークスペースの作成

新しいプロジェクトは、主に Cloud Marketplace プロダクト用に Google Cloud コンソールで作成することをおすすめします。

Cloud Marketplace に提出する商品を管理するには、プロジェクト ID が -public で終わる新しいプロジェクトを作成することをおすすめします。プロダクトのプロジェクトを作成するには、プロジェクトの作成と管理をご覧ください。

使用する Cloud Marketplace で販売するプロジェクトがすでに設定されている場合は、Kubernetes の Identity and Access Management(IAM)ロールが正しく付与されていることを確認し、Container Registry を設定するに進んでください。

プロジェクトに対するロールを付与する

プロジェクトの設定を完了するには、次の手順を行います。

  1. プロジェクトを作成したら、プロジェクト レベルで次のロールを付与します。

    • プロジェクト編集者: 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. セキュリティの連絡先を設定します。詳細については、通知の連絡先の管理をご覧ください。

  4. Cloud Marketplace チームから送信されるプロジェクト情報フォームに記入します。

Container Registry を設定する

アプリのコンテナ イメージをホストするには、Container Registry リポジトリが必要です。プロダクトを Cloud Marketplace に送信する前に、問題を確認して対処できるように、Artifact Analysis によって、アプリイメージが継続的にスキャンされて脆弱性がチェックされます。

Container Registry、Docker、Google Cloud SDK を設定するには、Container Registry クイックスタートに従ってください。

Container Registry を設定したら、レジストリを含むプロジェクトで、プロジェクト閲覧者のロールを cloud-commerce-marketplace-onboarding@twosync-src.google.com に付与します。

Container Analysis API を有効にする

Artifact Analysis API を有効にする必要があります。この API により、Container Registry のコンテナ イメージがスキャンされて脆弱性がチェックされます。Artifact Analysis の脆弱性スキャンの概要については、Container Registry のドキュメントをご覧ください。

Cloud Marketplace にプロダクトを追加する

Cloud Marketplace でプロダクトを作成して公開するには、Producer Portal を使用します。Cloud Marketplace プロジェクト情報フォームに必要な情報を記入すると、パートナー エンジニアがそれを有効にします。

Producer Portal でプロダクトを公開するには、プロダクトのエントリを作成し、審査のため以下の情報を送信します。

  • プロダクトの詳細: プロダクトに関するリスティング情報とマーケティング情報を追加します。
  • 料金: 料金モデルを選択して指定し、顧客のプロダクトに対する支払い方法を決定します。
  • コンテナ イメージ: コンテナ イメージを含む Google Container Registry リポジトリを指定します。
  • オープンソース コンプライアンス: プロダクトがオープンソース ソフトウェアの Google のポリシーに準拠していることを確認します。

これらの審査は、いつでも、任意の順序で送信できます。一部の審査は承認されるまでに最大 2 週間かかるため、要件を確認し、できるだけ早く開始することをおすすめします。

プロダクトの Cloud Marketplace エントリを作成するには:

  1. Google Cloud コンソールで Producer Portal を開きます。

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

    YOUR_PUBLIC_PROJECT_ID を、Cloud Marketplace 用に作成したパブリック プロジェクトの ID(my-organization-public など)に置き換えます。

  2. ページの上部にある [プロダクトを追加] をクリックします。

  3. [Kubernetes] を選択します。

  4. [Product name] でプロダクトに名前を付け、[プロダクト ID] を確認します。プロダクト ID は、Cloud Marketplace リスティングの URL で使用されます。

  5. [CREATE] をクリックします。プロダクトの作成には数秒かかる場合があります。

この後のステップで、ソリューションの料金モデルとマーケティング情報を追加します。

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

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

mpdev 開発ツールをインストールする

mpdev ツールは、アプリ イメージをテストして公開するユーティリティをバンドルするコンテナです。リリース用のアプリを送信するために mpdev をインストールする必要はありませんが、mpdev を実行して開発環境を確認し、アプリが開発クラスターに正しくインストールされているかどうかをテストできます。

Cloud Marketplace ツールの GitHub リポジトリから mpdev をインストールします

mpdev を使用して環境を確認し、アプリをテストする方法については、GitHub の mpdev リファレンスをご覧ください。

リリースを体系化する

一般に、アプリのすべてのバージョンは、セマンティック バージョニング 2.0MAJOR.MINOR.PATCH 番号付け規則を遵守)を採用する必要があります。すべてのバージョンには、1.0.11.0.21.3.1 などの一意のバージョン番号が必要です。必要に応じて、バージョン番号の後にハイフンを追加して、1.3.1-alpha201910 などのプレリリース修飾子を追加します。プレリリース修飾子を使用すると、バージョンの作成時期を示すビルド日付など、役に立つ追加情報を保存して強調表示できます。

ソフトウェアはトラックに沿ってリリースすることをおすすめします。各トラックは、下位互換性のある更新が含まれた一連のバージョンです。リリース トラックは、4.1.x などのマイナー バージョンをベースにする必要があります。ベストプラクティスとして、latest などの一般的なバージョン名は使用しないでください。

たとえば、Cloud Marketplace でソフトウェアのバージョン 2.0 をリリースしていて、バージョン 2.0.12.0.5 などが 2.0 と下位互換性があると期待される場合は、これらのリリースは 2.0 リリース トラックの下にまとめます。

アプリの下位互換性のあるバージョン、またはユーザーが手動の移行手順を実行する必要があるバージョンをリリースする場合は、新しいトラックでリリースして、ユーザーが更新を計画できるようにします。

商品 ID を選択する

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

  • 会社の名前。たとえば、会社名が Examplesoft Inc.の場合、識別子 examplesoft を使用できます。

  • 商品の名前。たとえば、商品の名前が Example Pro の場合、識別子 example-pro を使用します。

  • 4.0 など、商品のリリース トラック。

    リリースを体系化するための要件をご覧ください

  • コンテナ イメージ。アプリの各コンテナ イメージに一意の ID を選択します。すべてのアプリに次の ID が必要です。

    • メインイメージ: このコンテナ イメージは、商品のメインイメージであり、商品と同じ ID が使用されます。たとえば、商品 ID が example-pro の場合、プライマリ イメージは同じ ID を使用します。
    • deployer: トラックのデプロイ コンテナ イメージ。デプロイ コンテナは、ユーザーが Google Cloud Console からアプリをデプロイするときに実行されます。アプリ パッケージを作成するときに、デプロイ イメージを作成します。

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

名前 ID
会社 Examplesoft Inc examplesoft
商品 Example Pro example-pro
イメージ [1](メイン) Example Pro サーバー なし
イメージ [2] Example Queue example-queue
イメージ [デプロイヤ] なし deployer
リリース トラック [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

  • コンテナ イメージの URI:

    • marketplace.gcr.io/examplesoft/example-pro:4.0
    • marketplace.gcr.io/examplesoft/example-pro/example-queue:4.0
    • marketplace.gcr.io/examplesoft/example-pro/deployer:4.0
    • marketplace.gcr.io/examplesoft/example-pro:5.0
    • marketplace.gcr.io/examplesoft/example-pro/example-queue:5.0
    • marketplace.gcr.io/examplesoft/example-pro/deployer:5.0