Cloud Marketplace で Terraform Kubernetes アプリを提供する

Google Cloud Marketplace の Terraform Kubernetes アプリを使用すると、お客様は Terraform を使用して、コンテナ化されたアプリを Google Kubernetes Engine にデプロイできます。ユーザーは Terraform Kubernetes アプリの使用に対して課金されませんが、 Google Cloud リソースの使用に対して課金されます。Terraform Kubernetes アプリは、すべての Cloud Marketplace ユーザーに一般公開するか、プライベート オファーを使用して非公開で提供できます。

Cloud Marketplace で提供する Terraform Kubernetes アプリは、Artifact Registry でホストする Helm チャートを使用して構成を定義します。設定が完了したら、Producer Portal を介して Cloud Marketplace にアプリをオンボーディングします。

Terraform Kubernetes アプリのオンボーディングの概要

Cloud Marketplace で Terraform Kubernetes アプリを提供する手順は次のとおりです。

  1. Cloud Marketplace 用に Terraform Kubernetes アプリを準備します。これには、Artifact Registry の設定と、アプリのイメージの push が含まれます。

  2. Producer Portal でアプリの料金情報を追加します。

  3. Producer Portal で、アプリのデプロイ(Terraform モジュール、Helm チャート、コンテナ イメージなど)を構成します。

  4. Cloud Marketplace にプロダクトを公開します。プロダクトをオンボーディングする際に、審査を受けるためにプロダクトのさまざまな部分を送信します。Cloud Marketplace チームが送信内容を審査し、問題がある場合は承認前に問題の解決をサポートします。すべての送信内容が承認されると、数分以内にプロダクトを公開、開始できます。

Terraform Kubernetes アプリの要件

Cloud Marketplace で提供するすべてのプロダクトは、Cloud Marketplace のリスティング要件に準拠する必要があります。

Terraform Kubernetes アプリは、次の追加要件を満たす必要があります。

  • アプリは、x86 プロセッサを使用する GKE ノードで実行する必要があります。
  • アプリのすべての Helm チャートとコンテナ イメージを、Terraform Kubernetes アプリで使用しているのと同じリポジトリとプロジェクトの Artifact Registry レジストリにアップロードする必要があります。
  • Artifact Registry レジストリに Helm チャートが含まれている必要があります。
  • Terraform モジュールは、Terraform Kubernetes アプリで使用しているプロジェクトにある Cloud Storage バケットに ZIP ファイルとしてホストする必要があります。
  • Terraform モジュールのホストに使用する Cloud Storage バケットでバージョニングを有効にする必要があります。
  • コマンドラインからアプリをデプロイする手順、アプリを構成する手順、アプリを使用する手順を記載したユーザーガイドを含める必要があります。詳しくは、このドキュメントのユーザーガイドの要件をご覧ください。
  • 不安定な API からユーザーを保護するために、ベータ版または一般利用可能な Kubernetes リソースのみを使用します。

アプリ画像の要件

アプリの画像は次の要件を満たしている必要があります。

  • アプリのイメージはすべて、リリース トラックと現在のバージョンでタグ付けする必要があります。たとえば、2.0 リリース トラックでバージョン 2.0.5 をリリースする場合、対応するすべてのイメージに 2.02.0.5 のタグ付けをする必要があります。詳しくは、リリースを体系化するをご覧ください。
  • アプリのすべてのイメージのイメージ マニフェストに、次のアノテーションを含める必要があります。

    com.googleapis.cloudmarketplace.product.service.name=services/SERVICE_NAME
    

    SERVICE_NAME は、実際のサービス名に置き換えます。サービス名を確認するには、Producer Portal の [概要] ページにあるプロダクトの表をご覧ください。アノテーションの詳細については、GitHub の Open Container Initiative のアノテーションのドキュメントをご覧ください。

Artifact Registry リポジトリの要件

アプリの Helm チャートとコンテナ イメージは、単一の Artifact Registry リポジトリの一部である必要があります。

たとえば、Artifact Registry リポジトリが us-docker.pkg.dev/exampleproject の場合、アプリの Helm チャートとコンテナ イメージは次のようになります。

  • us-docker.pkg.dev/exampleproject/exampleapp/chart
  • us-docker.pkg.dev/exampleproject/exampleapp/image1
  • us-docker.pkg.dev/exampleproject/exampleapp/image2

Terraform モジュールの要件

お客様は、Terraform モジュールを使用して、Infrastructure Manager を介して Cloud Marketplace からプロダクトをデプロイします。Terraform モジュールは、アプリの Kubernetes 構成をパッケージ化します。

サンプル モジュールを起点として、パートナー ガイドに沿って、アプリと互換性のある Terraform モジュールを構築します。

アプリに渡されるパラメータ

Terraform モジュールでは、お客様がアプリを選択するときに収集する必要があるパラメータを宣言しなければなりません。これらのパラメータは、ユーザーがアプリをデプロイするときに Helm チャート コンテナに渡されます。

これらのパラメータを構成するには、Terraform モジュールに schema.yaml ファイルを含める必要があります。

schema.yaml の作成方法については、GitHub のスキーマ作成ガイドをご覧ください。

GPU クラスタ リクエスト

アプリで特定の GPU が必要な場合、または GPU が多用される場合は、deployer スキーマを使用して、クラスタ内の GPU のタイプと数を指定できます。GPU のニーズを指定すると、支援されるクラスタの作成が無効になります。

アプリで汎用 Nvidia GPU または特定の Nvidia プラットフォームをリクエストできます。

アプリのユーザーガイドの要件

アプリのユーザーガイドには、次の情報を含める必要があります。

  • 概要: 基本機能と構成オプションを含む、アプリの一般的な概要。このセクションは、Cloud Marketplace で公開されているアプリにリンクする必要もあります。
  • 1 回限りの設定: クラスタでアプリケーション リソースを管理できるように、Helm を構成してアプリケーション CustomResourceDefinition(CRD)をインストールする手順が含まれます。
  • インストール: 以下が含まれます。
    • アプリをデプロイするためのコマンド
    • UI 構成で使用できるパラメータを渡す
    • 不変ダイジェストにイメージ参照を固定する
    • Terraform モジュールに追加したカスタム入力フィールドに関する情報(該当する場合)。Terraform モジュールに入力フィールドを追加する手順をご覧ください。
  • 基本的な使用法: 次のタスクのガイド:
    • ユーザー名とパスワードを変更する
    • 管理コンソールへの接続(該当する場合)
    • クライアント ツールに接続し、サンプル コマンドを実行する方法(該当する場合)
    • 該当する場合は、Ingress を有効にして TLS 証明書をインストールする
  • バックアップと復元: アプリの状態をバックアップし、バックアップからアプリの状態を復元する方法に関する情報。
  • イメージの更新: パッチまたはマイナー アップデート用のアプリイメージを更新する方法。
  • スケーリング: アプリのスケーリングに関する情報(該当する場合)。
  • 削除: アプリを削除し、PersistentVolumeClaims など、残っている可能性のあるリソースをクリーンアップするためのガイド。

次のステップ