ユニットをテナントに関連付ける
このクイックスタートでは、デプロイされた VM ユニットをテナント リソースに関連付け、テナントが所有する専用のテナント プロジェクトに VM をプロビジョニングするように、アプリの提供を変更します。
このアプローチにより、リソースの分離が強化され、テナントごとにリソースを個別に管理し、アプリの提供のセキュリティとコンプライアンスを向上させることができます。
App Lifecycle Manager を使用して MySQL インスタンスをデプロイするクイックスタートのシナリオに基づいて、 デプロイされた VM ユニットをテナント リソースに関連付け、 テナントが所有する専用プロジェクトに VM をプロビジョニングするように変更します。
- App Lifecycle Manager でテナント リソースを作成します。
- VM をテナント リソースに関連付けます。
- リソースを別のテナント プロジェクトにデプロイするように、App Lifecycle Manager と Terraform 構成を構成します。
- プロジェクト間のデプロイ時に発生する一般的な権限と API の有効化の問題に対処します。
このクイックスタートを完了すると、複数のテナントを持つアプリの提供の基盤が作成されます。これにより、テナントを作成してユニットに関連付けることで、テナント レベルの構成とポリシーを設定できます。
始める前に
テナントを作成したり、テナントをユニットに関連付けたりする前に、 App Lifecycle Manager エコシステムの基本を理解し、アプリの提供を作成する必要があります。
-
アカウントに Google Cloud ログインします。 を初めて使用する場合は、 アカウントを作成して、 Google Cloud実際のシナリオでプロダクトがどのように動作するかを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイに利用できる $300 分の無料クレジットも提供されます。
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Verify that billing is enabled for your Google Cloud project.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Verify that billing is enabled for your Google Cloud project.
App Lifecycle Manager を使用して MySQL インスタンスをデプロイします。 これには、Terraform 構成、Artifact Registry リポジトリ、 アプリの提供、ユニットの種類、ユニット、コンポーネント(
terraform-files.zipを含む)の作成が含まれます。- クイックスタートの始める前に セクションに記載されている API がプロデューサー プロジェクトで有効になっていることを確認します。
- 必要なサービス アカウントと IAM ロールがプロデューサー プロジェクト内で付与されていることを確認します。 これには、ユーザーが作成したサービス アカウントと、プロデューサー プロジェクトの
service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.comアカウントに付与された権限が含まれます。
テナント リソースを作成して関連付ける前に、プロデューサー プロジェクトとテナント プロジェクトを作成する必要があります。 詳細については、 テナント プロジェクトを設定するをご覧ください。
テナント リソースを作成して関連付ける
テナントを使用してユニット リソースをグループ化できます。プロデューサー プロジェクトのアプリの提供でテナント リソースを作成して、顧客を表します。
Google Cloud コンソールで、[App Lifecycle Manager] > [テナント] に移動します。
[作成] をクリックします。
[テナントの作成] ページの [テナント名] ボックスに「
vm-quickstart-tenant」と入力します。[アプリの提供] ボックスで、
vm-quickstart-saas-offeringを選択します。[リージョン] プルダウンで、
us-central1を選択します。[ユニットを追加] をクリックします。[新しいユニット] セクションが表示されます。
[ユニット] プルダウンで、
projects/YOUR-PROJECT-NAME/locations/us-central1/units/vm-quickstart-unitユニットを選択します。[完了] をクリックして、
vm-quickstart-unitリソースをvm-quickstart-tenantリソースに関連付けます。[作成] をクリックして、テナント リソースを作成します。
vm-quickstart-tenantリソースが作成され、vm-quickstart-unitリソースに関連付けられました。この 関連付けは、主に Google Cloud コンソール内の組織タグとして機能し、どのユニットがどの テナントに属しているかを識別するのに役立ちます。
テナント リリースを作成する
コンソール Google Cloud で、[App Lifecycle Manager] > [リリース] に移動します。
[リリース] ページで、[作成] をクリックします。
[リリースの作成] ページの [リリース名] ボックスに「
vm-quickstart-tenant-release」と入力します。[ユニットの種類] ボックスで、
vm-quickstart-unit-kindを選択します。[次へ] をクリックします。[ブループリントを選択] ステップで、[Artifact Registry から既存のイメージを選択する] 切り替えをクリックします。
[ブループリントを保存] ステップで、[参照] をクリックし、
vm-quickstart-tenant-blueprintに関連付けられたアーティファクトを選択します。[次へ] をクリックします。[作成] をクリックします。
vm-quickstart-tenant-releaseリソースが作成されました。
テナント プロジェクトを作成してユニットをデプロイする
App Lifecycle Manager を使用して MySQL インスタンスをデプロイするクイックスタートでは、 App Lifecycle Manager リソースを、アプリの提供構成を含む同じプロジェクトにプロビジョニングします。
このクイックスタートでは、リソースのプロビジョニングをproducer projectではなくtenant projectに転送します。
ユニットのプロビジョニング時に、変更された変数 tenant_project_id と tenant_project_number を渡す必要があります。
terraform-vm.zipファイルをデプロイするテナント プロジェクトを作成します。gcloud projects create quickstart-tenant-project --name="SaaS Tenant A Project"テナント プロジェクトで API を有効にして IAM ロールを付与します。ユニットをテナント プロジェクトにデプロイするには、Compute Engine API を有効にして、テナント プロジェクトに IAM ロールを付与する必要があります。
テナント プロジェクトで API を有効にする
コンソール Google Cloud を使用して、テナント プロジェクトで Compute Engine API を有効にします。
プロジェクト セレクタに移動します。
[プロジェクトを選択] をクリックします。
quickstart-tenant-projectを選択します。Compute Engine API がまだ有効になっていない場合は、有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。プロジェクトに次のロールが付与されていることを確認します。 roles/compute.admin
ロールを確認する
-
コンソール Google Cloud で、[IAM] ページに移動します。
IAM に移動 - プロジェクトを選択します。
-
[Principal] 列で、自分または自分が所属するグループを識別する行をすべて見つけます。自分が所属しているグループを確認するには、管理者にお問い合わせください。
- 自分を指定または含んでいるすべての行について、[ロール] 列で、 ロールのリストに必要なロールが含まれているかどうかを確認します。
ロールを付与する
-
コンソール Google Cloud で、[IAM] ページに移動します。
IAM に移動 - プロジェクトを選択します。
- [**アクセス権を付与**] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [**ロールを選択**] をクリックして、ロールを検索します。
- 追加のロールを付与するには、 [Add another role] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
テナント プロジェクト変数を使用してユニットをプロビジョニングする
プロデューサー プロジェクトから、テナント プロジェクトの入力変数を使用して新しいユニットをプロビジョニングします。
プロジェクト セレクタに移動します。
[プロジェクトを選択] をクリックします。
プロデューサー プロジェクトを選択します。
コンソール Google Cloud で、[App Lifecycle Manager] > [ユニット] に移動します。
vm-quickstart-unitリソースを選択します。[PROVISION] をクリックします。
vm-quickstart-tenant-releaseリソースを選択します。テナント プロジェクトで権限を付与した動作用のサービス アカウント を選択します。
[入力変数] セクションで、次の操作を行います。
tenant_project_id変数は、variables.tfで定義したとおりに表示されます。- [テナント プロジェクト ID] ボックスに「
quickstart-tenant-project」と入力します。
[PROVISION] をクリックします。
App Lifecycle Manager は、指定された動作用のサービス アカウントを使用して Infrastructure Manager をトリガーします。Infrastructure Manager は tenant_project_id 変数を読み取り、そのテナント プロジェクト内に VM を作成します。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、 次の手順を実施します。
- コンソール Google Cloud で、[**リソースの管理**] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- プロンプトでプロジェクト ID を入力し、[シャットダウン] をクリックします。
次のステップ
- テナント プロジェクトとリソースを設定する方法について学習する。
- 変数と変数マッピングを使用して、 高度なアプリの提供のオーケストレーション(リソースの自動 プロビジョニングなど)を行う。