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 パートナー ガイドをご覧ください。
商品 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 環境を設定したら、次の手順に沿ってアプリの公開準備を続けます。
- Producer Portal に Terraform Kubernetes アプリを追加します。
- アプリの料金情報を追加します。
- Helm チャートやコンテナ イメージなど、アプリのデプロイを構成します。