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)ロールを付与し、プロジェクトのセキュリティ連絡先を指定するには、次の操作を行います。
プロジェクト レベルで次の IAM ロールを付与します。
- プロジェクト編集者:
cloud-commerce-marketplace-onboarding@twosync-src.google.comに付与 - Service Management 管理者(
roles/servicemanagement.serviceAdmin):cloud-commerce-marketplace-onboarding@twosync-src.google.comとmanaged-services@cloud-marketplace.iam.gserviceaccount.comに付与 - Config 編集者(
roles/servicemanagement.configEditor):cloud-commerce-producer@system.gserviceaccount.comに付与
詳しい手順については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。
- プロジェクト編集者:
サービスレベルで次のロールを
cloud-commerce-procurement@system.gserviceaccount.comに付与します。- サービス ユーザー(
roles/servicemanagement.serviceConsumer) - サービス コントローラ(
roles/servicemanagement.serviceController)
サービスレベルでアクセス権を付与する手順については、API へのアクセス権の付与と取り消しをご覧ください。
- サービス ユーザー(
セキュリティの連絡先を指定します。詳細については、通知の連絡先の管理をご覧ください。
Artifact Registry を設定する
Artifact Registry を設定する手順は次のとおりです。
- gcloud CLI をインストールします。
既存のインストールを更新するには、
gcloud components updateコマンドを実行します。注: Ubuntu では、Debian パッケージを使用して gcloud CLI をインストールします。gcloud CLI スナップ パッケージには、gcloud CLI を使用して Artifact Registry で認証するためのkubectlや拡張機能は含まれていません。 - Docker をまだインストールしていなければ、インストールします。
- Artifact Registry API を有効にします。これにより、Artifact Registry に push できるようになります。
API を有効にする - ステージング Artifact Registry リポジトリを作成します。詳細な手順については、Artifact Registry に Docker コンテナ イメージを保存するをご覧ください。
- Artifact Registry リポジトリで Artifact Analysis を有効にして、セキュリティ スキャンを許可します。
- アプリで配布するイメージにタグを付けて、ステージング Artifact Registry リポジトリに push します。
イメージにタグを付けて push する
イメージにタグを付けて Artifact Registry に push するには、次の手順を行います。
- Artifact Registry ステージング リポジトリのパスを選択します。リポジトリでは、次の構造を使用することをおすすめします。
us-docker.pkg.dev/YOUR_PARTNER_ID/YOUR_SOLUTION_IDステージング リポジトリはus-docker.pkg.dev内に配置する必要があります。Cloud Marketplace は、Terraform Kubernetes アプリでeurope-docker.pkg.dev、gcr.io、eu.gcr.ioなどの他のリージョンやgcr.ioドメインをサポートしていません。 - Producer Portal でプロダクトを作成するために、ステージング リポジトリのパスを保存またはコピーします。
- Artifact Registry ステージング リポジトリに push するイメージをビルドします。
Docker を使用して、イメージにバージョン番号(
1.0など)のタグを付けます。docker tag IMAGE_NAME STAGING_REPO_PATH:VERSION_NUMBERたとえば、このコマンドは
docker tag test-image us-docker.pkg.dev/testpartner/testsolution:1.0になります。gcloudを使用してイメージを push します。gcloud docker push STAGING_REPO_PATH:tagステージング リポジトリに追加するタグやイメージごとに、前の手順を繰り返します。1 つのイメージに複数のタグを追加できます。
イメージをステージング リポジトリに push しても、ユーザーに自動的に表示されることはありません。イメージは、公開後にユーザーに表示されるようになります。
Kubernetes Engine で開発クラスターを作成する
Google Kubernetes Engine を使用して、Kubernetes クラスタを管理およびスケーリングします。テストクラスタを作成して基本的なアプリをデプロイする場合は、Google Kubernetes Engine クイックスタートに従ってください。
リリースを整理する
一般に、アプリのすべてのバージョンは、セマンティック バージョニング 2.0(MAJOR.MINOR.PATCH 番号付け規則を遵守)を採用する必要があります。各バージョンには、1.0.1、1.0.2、1.3.1 などの一意のバージョン番号が必要です。必要に応じて、プレリリース修飾子を追加するには、バージョン番号の後にダッシュを使用します(例: 1.3.1-alpha201910)。プレリリース修飾子を使用すると、バージョンの作成時期を示すビルド日付など、役に立つ追加情報を保存して強調表示できます。
ソフトウェアはトラックに沿ってリリースすることをおすすめします。各トラックは、下位互換性のある更新が含まれた一連のバージョンです。リリース トラックは、4.1.x などのマイナー バージョンをベースにする必要があります。newest などの一般的なバージョン名は使用しないでください。
たとえば、Cloud Marketplace でアプリのバージョン 2.0 をリリースしていて、バージョン 2.0.1、2.0.5 などが 2.0 と下位互換性があると期待される場合は、これらのリリースは 2.0 リリース トラックの下にまとめます。
アプリの下位互換性のあるバージョン、またはユーザーが手動の移行手順を実行する必要があるバージョンをリリースする場合は、新しいトラックでリリースして、ユーザーが更新を計画できるようにします。
Terraform モジュール ラッパーを作成して Cloud Storage にアップロードする
Cloud Marketplace ユーザーが Terraform Kubernetes アプリをデプロイするために使用できる Terraform モジュールを提供する必要があります。このモジュールは、Helm プロバイダを使用して、提供した Helm チャートをデプロイします。Terraform Kubernetes アプリと互換性のある Terraform モジュールを作成する手順については、GitHub の Terraform Kubernetes パートナー ガイドをご覧ください。
(UI デプロイのみ)カスタム Terraform モジュールのメタデータを作成する
カスタム モジュールが UI のデプロイをサポートするには、Cloud Marketplace がモジュールを正しく解析して顧客の UI にレンダリングするために使用するメタデータを作成して追加する必要があります。
このメタデータを作成して追加するには、オープンソースの CFT CLI ツールを使用して、次の手順を完了します。
CFT CLI ツールをインストールします。
VERSIONの値をlatestになるように指定し、PLATFORMを次のいずれかの値に設定することをおすすめします。linuxwindowsdarwin詳細については、CFT CLI のドキュメントをご覧ください。
次のコマンドを実行します。
cft blueprint metadata -p TF_PACKAGE_PATH -q -d --nested=falseこのコマンドでは、次のフラグを使用します。
-pフラグは、Terraform パッケージのパスを指定します。-qフラグは、リモート リポジトリの情報を必要としないメタデータを生成します。-dフラグはmetadata.display.yamlファイルを生成します。--nested=falseフラグは、ルート モジュールのメタデータを生成し、modules/フォルダ内のモジュールをスキップします。
上記の手順を完了すると、CFT CLI ツールによって次のファイルが生成されます。
metadata.yamlmetadata.display.yaml
カスタム Terraform モジュールのメタデータをカスタマイズする
Cloud Marketplace は、ファイル metadata.display.yaml を使用して、顧客が UI を介してプロダクトをデプロイするために使用するフォームを作成します。フォームをお客様に表示する方法をカスタマイズするには、metadata.display.yaml のフィールドの値を変更します。使用可能なカスタマイズ オプションの詳細については、オープンソースの Blueprint UI のドキュメントまたは Blueprint UI のスキーマをご覧ください。
メタデータの変更には拡張機能の GooglePropertyExtensions を使用することをおすすめします。GooglePropertyExtensions では、 Google Cloud固有の検証を使用できます。たとえば、Google Cloud プロジェクトにすでに存在する Virtual Private Cloud(VPC)ネットワークのみを顧客が選択できるように適用できます。例については、カスタム Terraform モジュールのサンプルをご覧ください。
カスタム モジュールのメタデータを検証する
カスタム モジュールのメタデータを検証するには、次のコマンドを実行します。
cft blueprint metadata -p TF_PACKAGE_PATH -v
上記のコマンドでは、フラグは次のように機能します。
-pフラグは、Terraform パッケージのパスを指定します。-vフラグは、BlueprintMetadataスキーマに基づいて、指定されたパスの下のすべてのメタデータ ファイルを検証します。
商品 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.0us-docker.pkg.dev/examplesoft/example-pro/example-db:4.0us-docker.pkg.dev/examplesoft/example-pro/example-query:4.0us-docker.pkg.dev/examplesoft/example-pro/chart:5.0us-docker.pkg.dev/examplesoft/example-pro/example-db:5.0us-docker.pkg.dev/examplesoft/example-pro/example-query:5.0
次のステップ
Terraform Kubernetes アプリの Google Cloud 環境を設定したら、次の手順に沿ってアプリの公開準備を続けます。
- Producer Portal に Terraform Kubernetes アプリを追加します。
- アプリの料金情報を追加します。
- Helm チャートやコンテナ イメージなど、アプリのデプロイを構成します。