App Lifecycle Manager テナントを使用すると、デプロイされたユニットを整理し、リソースを個別のテナント プロジェクトにデプロイして、インフラストラクチャを分離して管理できます。
テナントとテナント プロジェクトの概要については、テナントとテナント プロジェクトをご覧ください。
始める前に
テナント プロジェクトまたはリソースを作成する前に、次のことを行います。
- プロデューサー プロジェクトに、Terraform 構成、Artifact Registry リポジトリ、SaaS アプリケーションを含むアーティファクトを作成します。ブループリントを作成してアップロードする方法については、ブループリントを作成してアップロードするをご覧ください。SaaS サービスを設定する方法については、クイックスタート: App Lifecycle Manager を使用してアプリケーションをデプロイするをご覧ください。
App Lifecycle Manager に必要な API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。必要なサービス アカウントが作成され、必要な Identity and Access Management ロールがプロデューサー プロジェクトに付与されていることを確認します。これには、ユーザー作成のサービス アカウントと、プロデューサー プロジェクトの
service-PROJECT_NUMBER@gcp-sa-saasservicemgmt.サービス エージェントに付与されたロールが含まれます。ここで、PROJECT_NUMBERはプロデューサー プロジェクトのプロジェクト番号です。
テナント プロジェクトを設定する
テナントのリソースを個別のプロジェクトにプロビジョニングすると、リソース、IAM ポリシー、割り当て、ネットワーク構成がテナントごとに分離されるため、1 つのテナントでの違反や構成ミスが他のテナントに影響する可能性が低くなります。
必要なもの:
- 1 つのプロデューサー プロジェクト
テナントごとに 1 つのテナント プロジェクト
コンソール
Google Cloud コンソールを使用してテナント プロジェクトとプロデューサー プロジェクトを設定するには:
- 各テナントのプロデューサー プロジェクトとテナント プロジェクトを作成します。
- テナント プロジェクトとプロデューサー プロジェクトで課金を有効にします。
テナント プロジェクトで App Lifecycle Manager に必要な API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。テナント プロジェクトに、必要な権限を持つ作動サービス アカウントがあることを確認します。
詳細については、App Lifecycle Manager サービス アカウントをご覧ください。
プロデューサー プロジェクトとテナント プロジェクトを作成して課金を有効にしたら、テナント リソースを作成してユニットをテナントに関連付けることができます。
gcloud
Google Cloud CLI を使用してプロデューサー プロジェクトとテナント プロジェクトを設定するには:
プロデューサー プロジェクトと、各テナントのテナント プロジェクトを作成します。
gcloud projects create \ PRODUCER_PROJECT_ID \ --name="SaaS producer project" gcloud projects create \ TENANT_PROJECT_ID \ --name="SaaS tenant A project"次のように置き換えます。
PRODUCER_PROJECT_ID: プロデューサー プロジェクト IDTENANT_PROJECT_ID: テナント プロジェクト ID
テナント プロジェクトとプロデューサー プロジェクトの課金を有効にします。
gcloud billing projects link \ PRODUCER_PROJECT_ID \ --billing-account=BILLING_ACCOUNT_ID gcloud billing projects link \ TENANT_PROJECT_ID \ --billing-account=BILLING_ACCOUNT_ID次のように置き換えます。
BILLING_ACCOUNT_ID: 指定したプロジェクトに関連付ける請求先アカウントの ID
テナント プロジェクトで App Lifecycle Manager に必要な API を有効にします。
gcloud services enable \ saasservicemgmt.googleapis.com \ artifactregistry.googleapis.com \ config.googleapis.com \ developerconnect.googleapis.com \ cloudbuild.googleapis.com \ storage.googleapis.com \ --project=TENANT_PROJECT_ID各テナント プロジェクトに必要な IAM ロールを、作動サービス アカウントに付与します。
gcloud projects add-iam-policy-binding \ TENANT_PROJECT_ID \ --member='serviceAccount:SERVICE_ACCOUNT_ID@PRODUCER_PROJECT_ID.' \ --role=ROLE次のように置き換えます。
SERVICE_ACCOUNT_ID: アクチュエーション サービス アカウントの IDROLE: 付与する IAM ロール(例:roles/compute.admin)
指定したサービス アカウントに付与するロールごとに
gcloud projects add-iam-policy-bindingを実行します。
プロデューサー プロジェクトとテナント プロジェクトを作成して課金を有効にしたら、テナント リソースを作成してユニットをテナントに関連付けることができます。
テナント リソースを作成する
SaaS サービスに、お客様を表すテナント リソースを作成します。
Google Cloud コンソールで、[App Lifecycle Manager] > [Tenants] に移動します。
[ 作成] をクリックします。
[テナント名] フィールドに、テナント リソースの名前を入力します。
省略可: [コンシューマー リソース] フィールドに、統合用のコンシューマー定義の設定を含むコンシューマー リソースを入力します。
[SaaS サービス] リストで、テナントに関連付ける SaaS サービスを選択します。
[リージョン] リストから、テナント メタデータが保存されているリージョンを選択します。
省略可: [ ラベルを追加] をクリックして、テナントに Key-Value ペアとしてラベルを追加します。
[作成] をクリックします。
ユニットをテナントに関連付ける
テナントを作成してユニットをデプロイしたら、それらを相互にリンクできます。この関連付けは、主に、どのユニットがどのテナントに属しているかを整理するのに役立つ組織タグとして機能します。
ユニットのデプロイの詳細については、SaaS サービスをデプロイするをご覧ください。
ユニットをテナントに関連付けるには:
Google Cloud コンソールで、[App Lifecycle Manager] > [Tenants] に移動します。
ユニットに関連付けるテナントの名前をクリックします。
[ 編集] をクリックします。
[テナントに含めるユニットを選択します。] で、 [ユニットを追加] をクリックします。
[ユニット] リストで、このテナントに関連付けるユニットを選択します。
[完了] をクリックします。
[保存] をクリックします。
選択したユニットは、指定されたテナントに関連付けられています。
テナント プロジェクト変数を使用して新しいユニットをプロビジョニングする
テナントに関連付けられたユニットをプロビジョニングする場合は、tenant_project_id 変数と tenant_project_number 変数を指定する必要があります。
Google Cloud コンソールで、[App Lifecycle Manager] > [Units] に移動します。
ユニットの種類に関連付けられた新しいユニットを作成します。
[ プロビジョニング] をクリックします。
テナント ユニットにプロビジョニングするリリースを選択します。
[作動サービス アカウント] の [サービス アカウント] リストで、テナント プロジェクトでロールを付与したサービス アカウントを選択します。最小権限の原則に従い、管理対象のリソースに必要なロールのみを付与します。
[その他の入力変数] セクションで、次の操作を行います。
- [ テナント プロジェクト変数を追加] をクリックし、テナント プロジェクトを選択して
tenant_project_id変数とtenant_project_number変数を入力します。 - 省略可: [入力変数を追加] をクリックして、Terraform 構成で定義されている他の入力変数を入力します。
- [ テナント プロジェクト変数を追加] をクリックし、テナント プロジェクトを選択して
[PROVISION] をクリックします。
App Lifecycle Manager は、指定された動作用のサービス アカウントを使用して Infrastructure Manager をトリガーします。Infrastructure Manager は、tenant_project_id 変数と tenant_project_number 変数を読み取り、そのテナント プロジェクト内に Terraform リソースをプロビジョニングします。
新しいリリースでユニットを再プロビジョニングする
既存のユニットを新しいリリースで再プロビジョニングする場合は、tenant_project_id 変数と tenant_project_number 変数を指定する必要があります。
Google Cloud コンソールで、[App Lifecycle Manager] > [Units] に移動します。
ユニットの種類に関連付けられているユニットを選択します。
[Upgrade] をクリックします。
更新された Terraform 構成で作成したリリースを選択します。
[作動サービス アカウント] の [サービス アカウント] リストで、テナント プロジェクトでロールを付与したサービス アカウントを選択します。最小権限の原則に従い、管理対象のリソースに必要なロールのみを付与します。
[その他の入力変数] セクションで、次の操作を行います。
- [ テナント プロジェクト変数を追加] をクリックし、テナント プロジェクトを選択して
tenant_project_id変数とtenant_project_number変数を入力します。 - 省略可: [入力変数を追加] をクリックして、Terraform 構成で定義されている他の入力変数を入力します。
- [ テナント プロジェクト変数を追加] をクリックし、テナント プロジェクトを選択して
[Upgrade] をクリックします。
App Lifecycle Manager は、指定された動作用のサービス アカウントを使用して Infrastructure Manager をトリガーします。Infrastructure Manager は、tenant_project_id 変数と tenant_project_number 変数を読み取り、そのテナント プロジェクト内の Terraform リソースを更新します。
次のステップ
- ユニット間の依存関係の管理を確認する。
- 詳しくは、変数と変数マッピングの使用をご覧ください。
- サービス アカウントに必要な権限を確認します。