このチュートリアルでは、複数のプロジェクトにグローバル App Hub アプリケーションを設定し、アプリケーションのリソースを表示する方法について説明します。複数のサービス プロジェクトを使用して、共有 VPC 環境に内部アプリケーション ロードバランサを設定します。次に、App Hub ホスト プロジェクトのグローバル アプリケーションで、サービス プロジェクトのすべてのインフラストラクチャ リソースを App Hub サービスとワークロードとして登録してモニタリングします。
このチュートリアルは、App Hub をセットアップして管理するユーザーを対象としています。Cloud Load Balancing の使用経験が必要です。
目標
- 複数のプロジェクトにまたがるリソースを含む Global App Hub アプリケーションを設定します。
- アプリケーションのシステム指標を使用してリソースをモニタリングする。
料金
ロードバランスされたマネージド VM ソリューションで使用される Google Cloud リソースの費用の見積もりについては、Google Cloud 料金計算ツールで事前に計算された見積もりをご覧ください。
見積もりを出発点として使用して、デプロイの費用を計算します。見積もりを変更して、ソリューションで使用するリソースに対して行う予定の構成の変更を反映できます。
事前に計算された見積もりは、次のような特定の要因に関する前提条件に基づいています。
- リソースがデプロイされている Google Cloud のロケーション。
- リソースが使用される時間。
App Hub の費用について詳しくは、料金ページをご覧ください。
始める前に
このチュートリアルをセットアップする前に、プロジェクトのロールと権限を決定し、4 つの Google Cloud プロジェクトを作成します。これらのプロジェクトの 1 つが App Hub ホスト プロジェクトで、他の 3 つが App Hub サービス プロジェクトです。必要なロールと権限
プロジェクト作成者にはオーナーロール(roles/owner
)が付与されます。デフォルトでは、この Identity and Access Management(IAM)ロールには、ほとんどの Google Cloudリソースに対する完全アクセスに必要な権限が含まれています。
プロジェクト作成者でない場合は、プロジェクトで適切なプリンシパルに必要な権限を付与する必要があります。プリンシパルは、Google アカウント(エンドユーザーの場合)やサービス アカウント(アプリケーションとワークロードの場合)になることもあります。
プロジェクト、フォルダまたは組織へのアクセスを管理するために必要な権限を取得するには、アクセスを管理するリソース(プロジェクト、フォルダ、または組織)に対し、次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクトへのアクセスを管理する:
-
App Hub 管理者 (
roles/apphub.admin
) -
Cloud Infrastructure Manager (
roles/config.admin
) -
Compute Shared VPC 管理者のロール (
roles/compute.xpnAdmin
) -
プロジェクト IAM 管理者(
roles/resourcemanager.projectIamAdmin
) - Service Usage 管理者 (
roles/serviceusage.services.enable
) - サービス アカウント管理者(
roles/iam.serviceAccounts.create
)
-
App Hub 管理者 (
-
フォルダへのアクセスを管理する: Compute Shared VPC 管理者ロール (
roles/compute.xpnAdmin
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
App Hub ホスト プロジェクトとサービス プロジェクトを作成する
Console
Google Cloud コンソールで、プロジェクト セレクタ ページに移動します。
-
Enable the App Hub, Compute Engine, Service Management, and Service Usage APIs.
App Hub ホスト プロジェクトと同じフォルダに、3 つの新しい Google Cloud プロジェクトを作成します。これらは、App Hub ホスト プロジェクトの App Hub サービス プロジェクトです。
-
Enable the App Hub, Compute Engine, Service Management, and Service Usage APIs.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Google Cloud CLI の最新バージョンがインストールされていることを確認します。Cloud Shell から次のコマンドを実行します。
gcloud components update
App Hub のホスト プロジェクトとして新しいプロジェクト
HOST_PROJECT_ID
を作成するか、選択します。Google Cloud プロジェクトを作成します。
gcloud projects create HOST_PROJECT_ID
作成した Google Cloud プロジェクトを選択します。
gcloud config set project HOST_PROJECT_ID
App Hub、Compute Engine、Service Management、Service Usage API を有効にします。
gcloud services enable apphub.googleapis.com \ compute.googleapis.com \ servicemanagement.googleapis.com \ serviceusage.googleapis.com
App Hub ホスト プロジェクトの App Hub サービス プロジェクトとして、3 つの新しい Google Cloud プロジェクトを作成します。
サービス プロジェクトを作成します。
gcloud projects create SERVICE_PROJECT_1_ID
SERVICE_PROJECT_1_ID
は、サービス プロジェクト 1 の ID に置き換えます。作成したサービス プロジェクトを選択します。
gcloud config set project SERVICE_PROJECT_1_ID
Compute Engine、Service Management、Service Usage API を有効にします。
gcloud services enable compute.googleapis.com \ servicemanagement.googleapis.com \ serviceusage.googleapis.com
このチュートリアルで使用する構成変数を設定します。
export SERVICE_PROJECT_1_NUMBER= $(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')
上記の手順を繰り返して、SERVICE_PROJECT_2_ID と SERVICE_PROJECT_3_ID を作成し、API を有効にして、構成変数を設定します。
環境を準備する
複数のプロジェクトで共有 VPC 環境の内部アプリケーション ロードバランサがすでに設定されている場合は、このドキュメントのIAM 権限を付与するセクションに進みます。
そうでない場合は、共有 VPC 環境に内部アプリケーション ロードバランサを設定するには、次の操作を行います。
- サービス プロジェクト 1 で、共有 VPC ネットワークと 2 つのサブネットを構成します。
- Service Project 2 で、2 つのマネージド インスタンス グループをバックエンドとして使用して、ロードバランサのバックエンド サービスを作成します。
- Service Project 3 で、2 つのマネージド インスタンス グループをバックエンドとして使用して、別のロードバランサのバックエンド サービスを作成します。
- Service Project 1 で、ロードバランサのフロントエンド コンポーネントと URL マップを作成します。
ロードバランスされたマネージド VM ソリューションでデプロイされるトポロジのリクエスト処理フローは次のとおりです。
クライアント VM は、共有 VPC ネットワークから、サービス プロジェクト 1 の内部アプリケーション ロードバランサに HTTP リクエストを送信します。
ロードバランサは、URL マップとバックエンド サービス内の情報を使用して、リクエストをマネージド インスタンス グループのバックエンドに転送します。
共有 VPC ホスト プロジェクトでネットワークとサブネットを構成する
2 つのサブネット(ロードバランサのフロントエンドとバックエンド用サブネット、およびロードバランサのプロキシ用サブネット)を持つ共有 VPC ネットワークが必要です。
この例では、次のネットワーク、リージョン、サブネットを使用します。
ネットワーク。ネットワークの名前は
lb-network
です。ロードバランサのフロントエンドとバックエンド用のサブネット。
us-west1
リージョンのlb-frontend-and-backend-subnet
という名前のサブネットは、プライマリ IP 範囲として10.1.2.0/24
を使用します。プロキシのサブネット。
us-west1
リージョンのproxy-only-subnet
という名前のサブネット。プライマリ IP 範囲として10.129.0.0/23
を使用します。
このチュートリアルでは、サービス プロジェクト 1 を共有 VPC ホスト プロジェクトとして指定します。このセクションの手順はすべて、サービス プロジェクト 1 で行う必要があります。
ロードバランサのフロントエンドとバックエンドのサブネットを構成する
この手順は、新しいロードバランサを作成するたびに行う必要はありません。サービス プロジェクトが、プロキシ専用サブネットだけでなく、共有 VPC ネットワーク内のサブネットにもアクセスできることだけを確認する必要があります。
コンソール
- Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
- [VPC ネットワークを作成] をクリックします。
- [名前] フィールドに「
lb-network
」と入力します。 - [サブネット作成モード] を [カスタム] に設定します。
[新しいサブネット] セクションに、次の情報を入力します。
名前:
lb-frontend-and-backend-subnet
リージョン:
us-west1
IP アドレス範囲:
10.1.2.0/24
[完了] をクリックします。
[作成] をクリックします。
gcloud
プロジェクトをサービス プロジェクト 1 として設定します。
gcloud config set project SERVICE_PROJECT_1_ID
gcloud compute networks create
コマンドを使用して、VPC ネットワークを作成します。gcloud compute networks create lb-network --subnet-mode=custom
サブネットを
us-west1
リージョン内のlb-network
ネットワークに作成します。gcloud compute networks subnets create lb-frontend-and-backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
プロキシ専用サブネットを構成する
プロキシ専用サブネットは、lb-network
VPC ネットワークの us-west1
リージョン内にあるすべての リージョン Envoy ベースのロードバランサで使用されます。リージョンごと、ネットワークごとにアクティブなプロキシ専用サブネットは 1 つだけです。
このネットワークの us-west1
リージョンに予約されているプロキシ専用サブネットがすでに存在する場合は、この手順を実施しないでください。
コンソール
- Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
- 共有 VPC ネットワークの名前
lb-network
をクリックします。 - [サブネット] タブをクリックし、[サブネットを追加] をクリックします。
- [サブネットを追加] ペインの [名前] フィールドに「
proxy-only-subnet
」と入力します。 - [リージョン] リストで [
us-west1
] を選択します。 - [目的] を [リージョン マネージド プロキシ] に設定します。
- [IP アドレス範囲] フィールドに「
10.129.0.0/23
」と入力します。 - [追加] をクリックします。
gcloud
gcloud compute networks subnets
create
コマンドを使用して、プロキシ専用サブネットを作成します。
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-west1 \ --network=lb-network \ --range=10.129.0.0/23
サービス プロジェクト管理者にバックエンド サブネットへのアクセス権を付与する
サービス プロジェクト管理者は lb-frontend-and-backend-subnet
サブネットにアクセスして、ロードバランサのバックエンドをプロビジョニングする必要があります。
共有 VPC 管理者は、サービス プロジェクト管理者(またはサブネットを使用するリソースとバックエンドをデプロイするデベロッパー)にアクセス権を付与する必要があります。手順については、一部のサブネットのサービス プロジェクト管理者をご覧ください。
Service Project 1 でファイアウォール ルールを構成する
この例では、次のファイアウォール ルールを使用します。
fw-allow-health-check
。ロードバランスされているインスタンスに適用される上り(内向き)ルール。 Google Cloudヘルスチェック システム(130.211.0.0/22
と35.191.0.0/16
)からのすべての TCP トラフィックを許可します。この例では、ターゲットタグload-balanced-backend
を使用して、適用するインスタンスを識別します。fw-allow-proxies
。ロードバランスされたインスタンスに適用される上り(内向き)ルール。ロードバランサが管理するプロキシからポート80
、443
、8080
への TCP トラフィックを許可します。この例では、ターゲットタグload-balanced-backend
を使用して、適用するインスタンスを識別します。fw-allow-ssh
。ロードバランスされたインスタンスに適用される上り(内向き)ルール。任意のアドレスから TCP ポート22
への SSH 接続を許可します。このルールには、送信元の IP 範囲をより限定的に指定できます。たとえば、SSH セッションを開始するシステムの IP 範囲のみを指定できます。この例では、ターゲットタグallow-ssh
を使用して、ファイアウォール ルールが適用される仮想マシン(VM)を識別します。
これらのファイアウォール ルールがない場合は、デフォルトの上り(内向き)拒否ルールによってバックエンド インスタンスへの受信トラフィックがブロックされます。
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
- [ファイアウォール ルールを作成] をクリックして、 Google Cloud ヘルスチェックを許可するルールを作成します。
- 名前:
fw-allow-health-check
- ネットワーク:
lb-network
- トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
load-balanced-backend
- ソースフィルタ: IPv4 の範囲
- 送信元 IPv4 範囲:
130.211.0.0/22
と35.191.0.0/16
- プロトコルとポート:
- 指定されたプロトコルとポートを選択します。
- [TCP] チェックボックスをオンにして、ポート番号に「
80
」と入力します。
このルールは、ヘルスチェックに使用されているプロトコルとポートのみに制限することをおすすめします。プロトコルとポートに
tcp:80
を使用すると、 Google Cloud は、ポート80
で HTTP を使用して VM に接続できますが、ポート443
で HTTPS を使用して VM に接続することはできません。 - [作成] をクリックします。
- [ファイアウォール ルールを作成] をクリックして、 Google Cloud ヘルスチェックを許可するルールを作成します。
- 名前:
fw-allow-proxies
- ネットワーク:
lb-network
- トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
load-balanced-backend
- ソースフィルタ: IPv4 の範囲
- 送信元 IPv4 範囲:
10.129.0.0/23
- プロトコルとポート:
- 指定されたプロトコルとポートを選択します。
- [TCP] チェックボックスをオンにして、ポート番号に「
80, 443, 8080
」と入力します。
- [作成] をクリックします。
- [ファイアウォール ルールを作成] をクリックして、 Google Cloud ヘルスチェックを許可するルールを作成します。
- 名前:
fw-allow-ssh
- ネットワーク:
lb-network
- トラフィックの方向: 上り(内向き)
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
allow-ssh
- ソースフィルタ: IPv4 の範囲
- 送信元 IPv4 範囲:
0.0.0.0/0
- プロトコルとポート:
- 指定されたプロトコルとポートを選択します。
- [TCP] チェックボックスをオンにして、ポート番号に「
22
」と入力します。
- [作成] をクリックします。
gcloud
Google Cloud ヘルスチェックを許可する
fw-allow-health-check
ファイアウォール ルールを作成します。この例では、ヘルスチェック プローバーからのすべての TCP トラフィックを許可します。ただし、必要に応じてポートの範囲を狭く構成することもできます。gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=load-balanced-backend \ --rules=tcp
Envoy プロキシ専用サブネットからのトラフィックがバックエンドに到達できるように
fw-allow-proxies
ファイアウォール ルールを作成します。gcloud compute firewall-rules create fw-allow-proxies \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080
ネットワーク タグ
allow-ssh
を使用して、VM との SSH 接続を許可するfw-allow-ssh
ファイアウォール ルールを作成します。gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
静的内部 IPv4 アドレスを予約する
サービス プロジェクト管理者は、共有 VPC ネットワークのサブネットに内部 IPv4 または IPv6 アドレスを予約できます。IP アドレス構成オブジェクトはサービス プロジェクト内で作成されますが、その値は選択した共有サブネットで使用可能な IPv4 アドレス範囲から取得されます。
サービス プロジェクトでスタンドアロンの内部 IP アドレスを予約するには、次の手順を完了します。
コンソール
- 共有 VPC を設定します。
Google Cloud コンソールで、[共有 VPC] ページに移動します。
共有 VPC 管理者としてログインします。
プロジェクト選択ツールからサービス プロジェクトを選択します。
[VPC ネットワーク] > [IP アドレス] に移動します。
[IP アドレス] ページで、[内部静的 IP アドレスの予約] をクリックします。
[名前] フィールドに、IP アドレス名として
l7-ilb-ip-address
を入力します。[IP バージョン] リストで、[IPv4] を選択します。
[ネットワーク] で、
lb-network
を選択します。[サブネットワーク] リストで、[
lb-frontend-and-backend-subnet
] を選択します。[予約] をクリックします。
gcloud
共有 VPC サービス プロジェクト管理者として Google Cloud CLI の認証を行っていない場合は、認証を行います。
gcloud auth login SERVICE_PROJECT_ADMIN
SERVICE_PROJECT_ADMIN
は、共有 VPC サービス プロジェクト管理者の名前に置き換えます。これらの値は、username@yourdomain の形式(例: 222larabrown@gmail.com)にする必要があります。compute addresses create
コマンドを使用して IP アドレスを予約します。gcloud compute addresses create l7-ilb-ip-address \ --project SERVICE_PROJECT_1_ID \ --subnet=lb-frontend-and-backend-subnet \ --region=us-west1 \ --ip-version=IPV4
IP アドレスの作成の詳細は、SDK のドキュメントに記載されています。
サービス プロジェクト 1 で共有 VPC を設定する
Service Project 1 に共有 VPC を設定するには、Service Project 1 を共有 VPC ホスト プロジェクトとして指定し、Service Project 2 と Service Project 3 を共有 VPC サービス プロジェクトとして指定します。このチュートリアルの後半で、サービス プロジェクト 2 と 3 で MIG バックエンドを作成するときに、サービス プロジェクト 1 で作成した同じ VPC ネットワークとサブネットを使用できます。
- ホスト プロジェクトを有効化します。
- サービス プロジェクトを接続します。
サービス プロジェクト 2 と 3 に Compute ネットワーク ユーザーのロール(
roles/compute.networkUser
)を付与します。Console
Google Cloud コンソールの [IAM] ページに移動します。
[
アクセスを許可] をクリックします。アクセス権の付与ペインが開きます。[新しいプリンシパル] フィールドに「
SERVICE_PROJECT_2_NUMBER@cloudservices.gserviceaccount.com
」と入力します。サービスのプロジェクト番号は、プロジェクトのダッシュボードで確認できます。
[ロールを選択] をクリックし、[フィルタ] フィールドに「
Compute Network User
」と入力します。[Compute ネットワーク ユーザー] ロールを選択し、[保存] をクリックします。
上記の手順を繰り返して、サービス プロジェクト 3(
SERVICE_PROJECT_3_NUMBER@cloudservices.gserviceaccount.com
)にCompute Network User
ロールを付与します。
gcloud
サービス プロジェクト 1 で、サービス プロジェクト 2 に Compute ネットワーク ユーザーのロールを付与します。
gcloud projects add-iam-policy-binding SERVICE_PROJECT_1_ID \ --member='serviceAccount:SERVICE_PROJECT_2_NUMBER@cloudservices.gserviceaccount.com' \ --role='roles/compute.networkUser'
SERVICE_PROJECT_2_NUMBER
は、サービス プロジェクト 2 のプロジェクト番号に置き換えます。Service Project 1 で、Service Project 3 に Compute ネットワーク ユーザーのロールを付与します。
gcloud projects add-iam-policy-binding SERVICE_PROJECT_1_ID \ --member='serviceAccount::SERVICE_PROJECT_3_NUMBER@cloudservices.gserviceaccount.com' \ --role='roles/compute.networkUser'
SERVICE_PROJECT_3_NUMBER
は、サービス プロジェクト 3 のプロジェクト番号に置き換えます。
サービス プロジェクト 2 にバックエンド サービスと MIG を作成する
このセクションの手順はすべて、サービス プロジェクト 2 で行う必要があります。
コンソール
インスタンス テンプレートを作成します。 Google Cloud コンソールで、[インスタンス テンプレート] ページに移動します。
- [インスタンス テンプレートを作成] をクリックします。
- インスタンス テンプレート
tutorial-ig-template-sp2
の [名前] を入力します。 - [ロケーション] セクションで、[リージョン] として [リージョン(推奨)] を選択し、[リージョン] として [us-west1(Oregon)] を選択します。
- [マシンの構成] セクションで、シリーズとして [N2] を選択します。
- [ブートディスク] が Debian GNU/Linux 12 (bookworm) などの Debian イメージに設定されていることを確認します。以降の手順では、
apt-get
などの Debian でのみ使用できるコマンドを使用します。[ブートディスク] を変更する必要がある場合は、[変更] をクリックします。- [オペレーティング システム] で [Debian] を選択します。
- [バージョン] で、利用可能な Debian イメージ(Debian GNU/Linux 12 (bookworm) など)を選択します。
- [選択] をクリックします。
- [詳細オプション] をクリックして、[ネットワーキング] をクリックします。
- 次のネットワーク タグを入力する:
allow-ssh
,load-balanced-backend
。 - [ネットワーク インターフェース] セクションで、[共有ネットワーク(共有元のホスト プロジェクト: SERVICE_PROJECT_1_ID)] を選択します。
lb-network
ネットワークからlb-frontend-and-backend-subnet
サブネットを選択します。- [管理] をクリックします。[管理] で、[起動スクリプト] フィールドに次のスクリプトを挿入します。
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | tee /var/www/html/index.html systemctl restart apache2
- [作成] をクリックします。
マネージド インスタンス グループを作成します。 Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
- [インスタンス グループを作成] をクリックします。
- [新しいマネージド インスタンス グループ(ステートレス)] を選択します。詳細については、ステートレス MIG とステートフル MIG をご覧ください。
- [名前] にインスタンス グループの名前「
tutorial-sp2-mig-a
」を入力します。 - [インスタンス テンプレート] で [tutorial-ig-template-sp2] を選択します。
- [ロケーション] で [シングルゾーン] を選択します。
- [リージョン] で、
us-west1
を選択します。 グループ内に作成するインスタンスの数を指定します。
この例では、[自動スケーリング] で次のオプションを指定します。
- [自動スケーリング モード] で [
Off:do not autoscale
] を選択します。 - [インスタンスの最大数] に「
2
」と入力します。
- [自動スケーリング モード] で [
[作成] をクリックします。
リージョン バックエンド サービスを作成します。この手順の一環として、ヘルスチェックを作成して、バックエンド サービスへのバックエンドの追加も行います。 Google Cloud コンソールで、[バックエンド] ページに移動します。
- [バックエンド サービスを作成] をクリックします。
- [バックエンド サービスの作成] ダイアログで、[リージョン バックエンド サービス] の横にある [作成] をクリックします。
- バックエンド サービスの [名前] に「
tutorial-backend-service-sp2
」と入力します。 - [リージョン] で [us-west1] を選択します。
- [ロードバランサのタイプ] で、[リージョンの内部アプリケーション ロードバランサ(INTERNAL_MANAGED)] を選択します。
- [バックエンド タイプ] をインスタンス グループに設定します。
- [バックエンド] セクションで、次のフィールドを設定します。
- [インスタンス グループ] を tutorial-sp2-mig-a に設定します。
- [ポート番号] に「
80
」と入力します。 - [分散モード] を [使用率] に設定します。
- [完了] をクリックします。
- [ヘルスチェック] セクションで [ヘルスチェックを作成] をクリックし、次のフィールドを設定します。
- 名前:
tutorial-regional-health-check
- プロトコル:
HTTP
- ポート:
80
- [保存] をクリックします。
- 名前:
- [続行] をクリックします。
- [作成] をクリックします。
前の手順を繰り返してマネージド インスタンス グループ
tutorial-sp2-mig-b
を作成し、バックエンド サービスtutorial-backend-service-sp2
に追加します。
gcloud
- 作成したサービス プロジェクトを選択します。
gcloud config set project SERVICE_PROJECT_2_ID
HTTP サーバーを使用して VM インスタンス テンプレート
tutorial-ig-template-sp2
を作成します。gcloud compute instance-templates create tutorial-ig-template-sp2 \ --region=us-west1 \ --network=projects/SERVICE_PROJECT_1_ID/global/networks/lb-network \ --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2' \ --project=SERVICE_PROJECT_2_ID
次のように置き換えます。
SERVICE_PROJECT_1_ID
: 共有 VPC ホスト プロジェクトのプロジェクト ID。SERVICE_PROJECT_2_ID
: ロードバランサのバックエンドとバックエンド サービスが作成されるサービス プロジェクトのプロジェクト ID。
リージョンにマネージド インスタンス グループ
tutorial-sp2-mig-a
を作成します。gcloud compute instance-groups managed create tutorial-sp2-mig-a \ --region=us-west1 \ --size=2 \ --template=tutorial-ig-template-sp2 \ --project=SERVICE_PROJECT_2_ID
HTTP ヘルスチェック
tutorial-regional-health-check
を定義します。gcloud compute health-checks create http tutorial-regional-health-check \ --region=us-west1 \ --use-serving-port \ --project=SERVICE_PROJECT_2_ID
バックエンド サービス
tutorial-backend-service-sp2
を定義します。gcloud compute backend-services create tutorial-backend-service-sp2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=tutorial-regional-health-check \ --health-checks-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_2_ID
gcloud compute backend-services add-backend
コマンドを使用して、バックエンド サービスにバックエンドを追加します。gcloud compute backend-services add-backend tutorial-backend-service-sp2 \ --balancing-mode=UTILIZATION \ --instance-group=tutorial-sp2-mig-a \ --instance-group-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_2_ID
リージョンに別のマネージド インスタンス グループ
tutorial-sp2-mig-b
を作成します。gcloud compute instance-groups managed create tutorial-sp2-mig-b \ --region=us-west1 \ --size=2 \ --template=tutorial-ig-template-sp2 \ --project=SERVICE_PROJECT_2_ID
バックエンド サービスにバックエンドを追加します。
gcloud compute backend-services add-backend tutorial-backend-service-sp2 \ --balancing-mode=UTILIZATION \ --instance-group=tutorial-sp2-mig-b \ --instance-group-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_2_ID
サービス プロジェクト 3 にバックエンド サービスと MIG を作成する
このセクションの手順はすべて、サービス プロジェクト 3 で行う必要があります。
コンソール
インスタンス テンプレートを作成します。 Google Cloud コンソールで、[インスタンス テンプレート] ページに移動します。
- [インスタンス テンプレートを作成] をクリックします。
- インスタンス テンプレート
tutorial-ig-template-sp3
の [名前] を入力します。 - [ロケーション] セクションで、[リージョン] として [リージョン(推奨)] を選択し、[リージョン] として [us-west1(オレゴン)] を選択します。
- [マシンの構成] セクションで、シリーズとして [N2] を選択します。
- [ブートディスク] が Debian GNU/Linux 12 (bookworm) などの Debian イメージに設定されていることを確認します。以降の手順では、
apt-get
などの Debian でのみ使用できるコマンドを使用します。[ブートディスク] を変更する必要がある場合は、[変更] をクリックします。- [オペレーティング システム] で [Debian] を選択します。
- [バージョン] で、利用可能な Debian イメージ(Debian GNU/Linux 12 (bookworm) など)を選択します。
- [選択] をクリックします。
- [詳細オプション] をクリックして、[ネットワーキング] をクリックします。
- 次のネットワーク タグを入力する:
allow-ssh
,load-balanced-backend
。 - [ネットワーク インターフェース] セクションで、[共有ネットワーク(共有元のホスト プロジェクト: SERVICE_PROJECT_1_ID)] を選択します。
lb-network
ネットワークからlb-frontend-and-backend-subnet
サブネットを選択します。- [管理] をクリックします。[管理] で、[起動スクリプト] フィールドに次のスクリプトを挿入します。
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | tee /var/www/html/index.html systemctl restart apache2
- [作成] をクリックします。
マネージド インスタンス グループを作成します。 Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
- [インスタンス グループを作成] をクリックします。
- [新しいマネージド インスタンス グループ(ステートレス)] を選択します。詳細については、ステートレス MIG とステートフル MIG をご覧ください。
- [名前] にインスタンス グループの名前「
tutorial-sp3-mig-a
」を入力します。 - [インスタンス テンプレート] で [tutorial-ig-template-sp3] を選択します。
- [ロケーション] で [シングルゾーン] を選択します。
- [リージョン] で、
us-west1
を選択します。 グループ内に作成するインスタンスの数を指定します。
この例では、[自動スケーリング] で次のオプションを指定します。
- [自動スケーリング モード] で [
Off:do not autoscale
] を選択します。 - [インスタンスの最大数] に「
2
」と入力します。
- [自動スケーリング モード] で [
[作成] をクリックします。
リージョン バックエンド サービスを作成します。この手順の一環として、ヘルスチェックを作成して、バックエンド サービスへのバックエンドの追加も行います。 Google Cloud コンソールで、[バックエンド] ページに移動します。
- [バックエンド サービスを作成] をクリックします。
- [バックエンド サービスの作成] ダイアログで、[リージョン バックエンド サービス] の横にある [作成] をクリックします。
- バックエンド サービスの [名前] に「
tutorial-backend-service-sp3
」と入力します。 - [リージョン] で [us-west1] を選択します。
- [ロードバランサのタイプ] で、[リージョンの内部アプリケーション ロードバランサ(INTERNAL_MANAGED)] を選択します。
- [バックエンド タイプ] をインスタンス グループに設定します。
- [バックエンド] セクションで、次のフィールドを設定します。
- [インスタンス グループ] を tutorial-sp3-mig-a に設定します。
- [ポート番号] に「
80
」と入力します。 - [分散モード] を [使用率] に設定します。
- [完了] をクリックします。
- [ヘルスチェック] セクションで [ヘルスチェックを作成] をクリックし、次のフィールドを設定します。
- 名前:
tutorial-regional-health-check
- プロトコル:
HTTP
- ポート:
80
- [保存] をクリックします。
- 名前:
- [続行] をクリックします。
- [作成] をクリックします。
前の手順を繰り返してマネージド インスタンス グループ
tutorial-sp3-mig-b
を作成し、バックエンド サービスtutorial-backend-service-sp3
に追加します。
gcloud
- 作成したサービス プロジェクトを選択します。
gcloud config set project SERVICE_PROJECT_3_ID
HTTP サーバーを使用して VM インスタンス テンプレート
tutorial-ig-template-sp3
を作成します。gcloud compute instance-templates create tutorial-ig-template-sp3 \ --region=us-west1 \ --network=projects/SERVICE_PROJECT_1_ID/global/networks/lb-network \ --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2' \ --project=SERVICE_PROJECT_3_ID
次のように置き換えます。
SERVICE_PROJECT_1_ID
: 共有 VPC ホスト プロジェクトのプロジェクト ID。SERVICE_PROJECT_3_ID
: ロードバランサのバックエンドとバックエンド サービスが作成されるサービス プロジェクトのプロジェクト ID。
リージョンにマネージド インスタンス グループ
tutorial-sp3-mig-a
を作成します。gcloud compute instance-groups managed create tutorial-sp3-mig-a \ --region=us-west1 \ --size=2 \ --template=tutorial-ig-template-sp3 \ --project=SERVICE_PROJECT_3_ID
HTTP ヘルスチェック
tutorial-regional-health-check
を定義します。gcloud compute health-checks create http tutorial-regional-health-check \ --region=us-west1 \ --use-serving-port \ --project=SERVICE_PROJECT_3_ID
バックエンド サービス
tutorial-backend-service-sp3
を定義します。gcloud compute backend-services create tutorial-backend-service-sp3 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=tutorial-regional-health-check \ --health-checks-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_3_ID
gcloud compute backend-services add-backend
コマンドを使用して、バックエンド サービスにバックエンドを追加します。gcloud compute backend-services add-backend tutorial-backend-service-sp3 \ --balancing-mode=UTILIZATION \ --instance-group=tutorial-sp3-mig-a \ --instance-group-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_3_ID
リージョンに別のマネージド インスタンス グループ
tutorial-sp3-mig-b
を作成します。gcloud compute instance-groups managed create tutorial-sp3-mig-b \ --region=us-west1 \ --size=2 \ --template=tutorial-ig-template-sp3 \ --project=SERVICE_PROJECT_3_ID
バックエンド サービスにバックエンドを追加します。
gcloud compute backend-services add-backend tutorial-backend-service-sp3 \ --balancing-mode=UTILIZATION \ --instance-group=tutorial-sp3-mig-b \ --instance-group-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_3_ID
サービス プロジェクト 1 に URL マップと転送ルールを作成する
このセクションの手順はすべて、サービス プロジェクト 1 で行う必要があります。
コンソール
構成を開始する
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
- [ロードバランサを作成] をクリックします。
- [ロードバランサの種類] で [アプリケーション ロードバランサ(HTTP / HTTPS)] を選択し、[次へ] をクリックします。
- [インターネット接続または内部] で [内部] を選択し、[次へ] をクリックします。
- [クロスリージョンまたはシングル リージョンのデプロイ] で [リージョン ワークロードに最適] を選択し、[次へ] をクリックします。
- [構成] をクリックします。
基本的な構成
- ロードバランサの名前
tutorial-url-maps
を入力します。 - [リージョン] リストで [
us-west1
] を選択します。 [ネットワーク] リストで、[lb-network] を選択します([プロジェクト: SERVICE_PROJECT_1_ID] から)。
[共有 VPC ネットワークに必要なプロキシ専用サブネット] という警告が表示されたら、ホスト プロジェクト管理者が
lb-network
共有 VPC ネットワークのus-west1
リージョンにproxy-only-subnet
を作成していることを確認します。このページで、プロキシ専用サブネットを表示する権限がなくても、ロードバランサの作成は成功します。ウィンドウを開いたままにして続行します。
バックエンドを構成する
- [バックエンドの構成] をクリックします。
- [プロジェクト間のバックエンド サービス] をクリックします。
- [プロジェクト ID] フィールドに、サービス プロジェクト 2 のプロジェクト ID を入力します。
- [バックエンド サービス名] フィールドに、使用するサービス プロジェクト 2 のバックエンド サービスの名前を入力します。この例では
tutorial-backend-service-sp2
です。 - [バックエンド サービスを追加] をクリックします。
- [プロジェクト ID] フィールドに、サービス プロジェクト 3 のプロジェクト ID を入力します。
- [バックエンド サービス名] フィールドに、使用するサービス プロジェクト 3 のバックエンド サービスの名前を入力します。この例では
tutorial-backend-service-sp3
です。 - [バックエンド サービスを追加] をクリックします。
ルーティング ルールを構成する
- [ルーティング ルール] をクリックします。
- [ホストとパスのルール] セクションの [ホスト 2] フィールドに
*
と入力します。 - [パス 2] フィールドに「
/*
」と入力します。 - [バックエンド 2] プルダウン リストから
tutorial-backend-service-sp2
を選択します。 - [ホストとパスのルールを追加] をクリックします。
- [ホスト 3] フィールドに「
tutorial-host
」と入力します。 - [パス 3] フィールドに「
/*
」と入力します。 [バックエンド 3] プルダウン リストから
tutorial-backend-service-sp3
を選択します。[ホストとパスのルール] の左側の青色のチェックマークを確認して、[更新] ボタンをクリックします。
トラフィック管理の詳細については、トラフィック管理の設定をご覧ください。
フロントエンドを構成する
プロジェクト間のサービスが機能するようにするには、フロントエンドは、バックエンド サービスの作成に使用した共有 VPC ホスト プロジェクトと同じネットワーク(lb-network
)を使用する必要があります。
- [フロントエンドの構成] をクリックします。
- 転送ルールの [名前] に「
l7-ilb-forwarding-rule
」と入力します。 - [プロトコル] を
HTTP
に設定します。 - [サブネットワーク] を [
lb-frontend-and-backend-subnet
] に設定します。 リストで選択できる場合でも、フロントエンドにプロキシ専用サブネットは選択しないでください。 - [ポート] を
80
に設定します。 - [IP アドレス] フィールドで、デフォルトのオプション [エフェメラル(自動)] をそのまま使用します。
- [完了] をクリックします。
構成を確認して完了する
- [作成] をクリックします。
gcloud
作成したサービス プロジェクトを選択します。
gcloud config set project SERVICE_PROJECT_1_ID
URL マップ
tutorial-url-maps
を作成し、デフォルト サービスを Service Project 1 に作成されたバックエンド サービスに設定します。gcloud compute url-maps create tutorial-url-maps \ --default-service=projects/SERVICE_PROJECT_2_ID/regions/us-west1/backendServices/tutorial-backend-service-sp2 \ --region=us-west1 \ --project=SERVICE_PROJECT_1_ID
次のように置き換えます。
SERVICE_PROJECT_2_ID
: ロードバランサのバックエンドとバックエンド サービスが作成されるサービス プロジェクト 2 のプロジェクト ID。SERVICE_PROJECT_1_ID
: ロードバランサのフロントエンドが作成されるサービス プロジェクト 1 のプロジェクト ID。
ターゲット プロキシ
tutorial-http-proxy
を作成します。gcloud compute target-http-proxies create tutorial-http-proxy \ --url-map=tutorial-url-maps \ --url-map-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_1_ID
HTTP トラフィックを処理する転送ルール
l7-ilb-forwarding-rule
を作成します。プロジェクト間のサービスが機能するようにするには、転送ルールは、バックエンド サービスの作成に使用した共有 VPC ホスト プロジェクトと同じネットワーク(lb-network
)を使用する必要があります。gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/SERVICE_PROJECT_1_ID/global/networks/lb-network \ --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=l7-ilb-ip-address \ --ports=80 \ --region=us-west1 \ --target-http-proxy=tutorial-http-proxy \ --target-http-proxy-region=us-west1 \ --project=SERVICE_PROJECT_1_ID
バックエンド サービスにトラフィックを送信するには、URL マップをバックエンド サービスにリンクします。詳細については、URL マップの使用をご覧ください。
Service Project 2 のバックエンド サービス
tutorial-backend-service-sp2
を、URL マップtutorial-url-maps
とパスマッチャー名tutorial-path-matcher-sp2
にリンクします。gcloud compute url-maps add-path-matcher tutorial-url-maps \ --path-matcher-name=tutorial-path-matcher-sp2 \ --default-service=projects/SERVICE_PROJECT_2_ID/regions/us-west1/backendServices/tutorial-backend-service-sp2 \ --region=us-west1
Service プロジェクト 3 のバックエンド サービス
tutorial-backend-service-sp3
を、URL マップtutorial-url-maps
とパスマッチャー名tutorial-path-matcher-sp3
にリンクします。パスマッチャーが新しいホストルールに関連付けられるように、指定されたホストを含む新しいホストルールtutorial-host
を追加します。gcloud compute url-maps add-path-matcher tutorial-url-maps \ --path-matcher-name=tutorial-path-matcher-sp3 \ --default-service=projects/SERVICE_PROJECT_3_ID/regions/us-west1/backendServices/tutorial-backend-service-sp3 \ --region=us-west1 \ --new-hosts=tutorial-host
ロードバランサをテストする
ロードバランサをテストするには、まず、サンプル クライアント VM を作成します。次に、VM との SSH セッションを確立し、この VM からロードバランサにトラフィックを送信します。
テスト用の VM インスタンスを作成する
クライアントは、共有 VPC ホスト プロジェクトまたは接続されたサービス プロジェクトのいずれかに配置できます。この例では、共有 VPC ホスト プロジェクトとして指定されているサービス プロジェクト 1 にクライアント VM をデプロイして、ロードバランサが動作していることをテストします。クライアントは、同じ共有 VPC ネットワークを使用し、ロードバランサと同じリージョンに存在する必要があります。
このセクションの手順はすべて、サービス プロジェクト 2 で行う必要があります。
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。
[名前] フィールドに「
client-vm
」と入力します。[ゾーン] を us-west1-b に設定します。
[詳細オプション] をクリックして、[ネットワーキング] をクリックします。
ネットワーク タグ
allow-ssh
,load-balanced-backend
を入力します。[ネットワーク インターフェース] セクションで、[共有ネットワーク(共有元のホスト プロジェクト: SERVICE_PROJECT_1_ID)] を選択します。
lb-network
ネットワークからlb-frontend-and-backend-subnet
サブネットを選択します。[作成] をクリックします。
gcloud
テスト用の VM インスタンスを作成する
gcloud compute instances create client-vm \ --image-family=debian-12 \ --image-project=debian-cloud \ --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --zone=us-west1-b \ --tags=allow-ssh \ --project=SERVICE_PROJECT_2_ID
ロードバランサにトラフィックを送信する
SSH を使用して、作成したインスタンスに接続し、内部アプリケーション ロードバランサの転送ルールの IP アドレスを介してバックエンドの HTTP(S) サービスに到達可能であることと、バックエンド インスタンス間でトラフィックのロード バランシングが行われていることをテストします。
ロードバランサの IP アドレスの値を取得します。
gcloud compute addresses list --filter="name=( 'l7-ilb-ip-address')"
次のような出力が表示されます。
NAME: l7-ilb-ip-address ADDRESS/RANGE: 10.1.2.2 TYPE: INTERNAL PURPOSE: GCE_ENDPOINT NETWORK: REGION: us-west1 SUBNET: lb-frontend-and-backend-subnet STATUS: IN_USE
次の手順で使用するサービス
ADDRESS/RANGE
(10.1.2.2
など)を出力からコピーします。SSH を使用してクライアント インスタンスに接続します。
gcloud compute ssh client-vm \ --zone=us-west1-b \ --project=SERVICE_PROJECT_2_ID
ロードバランサの IP アドレスがホスト名を提供していることを確認します。
サービス プロジェクト 2 で IP アドレスがホスト名を提供していることを確認します。
curl 10.1.2.2
次のような出力が表示されます。
Page served from: tutorial-sp2-mig-a-10xk
サービス プロジェクト 3 で IP アドレスがホスト名を提供していることを確認します。
curl -H "Host: tutorial-host" 10.1.2.2
次のような出力が表示されます。
Page served from: tutorial-sp3-mig-a-3d5h
IAM 権限を付与
App Hub ホスト プロジェクトとサービス プロジェクトに適切な IAM ロールと権限を付与します。
Console
Google Cloud コンソールで、プロジェクト セレクタ ページに移動します。
Google Cloud コンソールの [IAM] ページに移動します。
[
アクセスを許可] をクリックします。アクセス権の付与ペインが開きます。[新しいプリンシパル] フィールドに、App Hub を管理するユーザーのメールアドレスを入力します。これは、App Hub ホスト プロジェクトの App Hub 管理者のロールです。
[ロールを選択] をクリックし、[フィルタ] フィールドに「
App Hub
」と入力します。[App Hub 管理者] ロールを選択し、[保存] をクリックします。
各 App Hub サービス プロジェクトで、同じユーザーに App Hub 管理者のロールを付与します。
gcloud
App Hub を使用するユーザーにロールを付与するには、必要に応じて IAM ロールを置き換えて、次のコマンドを繰り返します。詳細については、App Hub のロールと権限をご覧ください。
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='user:HOST_PROJECT_ADMIN' \ --role='roles/apphub.admin'
HOST_PROJECT_ADMIN
は、App Hub ホスト プロジェクトで App Hub 管理者のロールを持つユーザーに置き換えます。この値の形式はusername@yourdomain
です(例:222larabrown@gmail.com
)。App Hub を管理するユーザーに、サービス プロジェクトの App Hub 管理者のロールを付与します。サービス プロジェクトをホスト プロジェクトに追加するには、App Hub 管理者のロールが必要です。サービス プロジェクトごとに、このロールを持つユーザーが少なくとも 1 人必要です。
gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \ --member='user:HOST_PROJECT_ADMIN' \ --role='roles/apphub.admin'
SERVICE_PROJECT_ID
は、サービス プロジェクトの ID に置き換えます。
サービス プロジェクトを接続する
サービス プロジェクトは、App Hub アプリケーションに登録できるインフラストラクチャ リソースを含む Google Cloud プロジェクトです。詳細については、サービス プロジェクトをご覧ください。リソースをデプロイしたサービス プロジェクトを App Hub ホスト プロジェクトに接続します。
Console
Google Cloud コンソールで、App Hub の [設定] ページに移動します。
[設定] ページで、[プロジェクトを接続] をクリックします。
開いたペインで、表示されたリストからプロジェクトを検索し、サービス プロジェクトとして追加するプロジェクトのチェックボックスをオンにします。
[選択] をクリックします。 [接続されたサービス プロジェクト] テーブルに、選択したサービス プロジェクトが表示されます。
[閉じる] をクリックします。
gcloud
サービス プロジェクト 1、2、3 を App Hub ホスト プロジェクトに接続します。
gcloud apphub service-projects add SERVICE_PROJECT_1_ID \ --project=HOST_PROJECT_ID
gcloud apphub service-projects add SERVICE_PROJECT_2_ID \ --project=HOST_PROJECT_ID
gcloud apphub service-projects add SERVICE_PROJECT_3_ID \ --project=HOST_PROJECT_ID
App Hub サービス プロジェクトが App Hub ホスト プロジェクトに接続されていることを確認します。
gcloud apphub service-projects list --project=HOST_PROJECT_ID
サービス プロジェクトを App Hub ホスト プロジェクトに接続すると、接続されたサービス プロジェクトのすべての Google Cloud リソースを、検出された App Hub サービスとワークロードとして表示できます。検出されたサービスとワークロードを表示する方法については、既存のアプリケーション、サービス、ワークロードを表示するをご覧ください。
アプリケーションを作成する
サービスとワークロードのコンテナとなるアプリケーションを作成します。アプリケーションを作成するときに、リソースを登録するスコープのタイプやロケーションなどの不変のプロパティと、重要度や環境などの変数属性を割り当てることができます。変数属性を使用して、アプリケーションをフィルタできます。詳細については、プロパティと属性をご覧ください。
このチュートリアルでは、グローバル アプリケーションとリージョン アプリケーションを作成して、単一のアプリケーションでグローバル リソースとリージョン リソースを管理します。特定のリージョンのリソースをグループ化するには、リージョン アプリケーションを作成して、これらのリソースを登録します。リージョン アプリケーションの作成方法については、App Hub を設定するをご覧ください。
Console
- App Hub ホスト プロジェクトにいることを確認します。
Google Cloud コンソールで、App Hub の [アプリケーション] ページに移動します。
[アプリケーションを作成] をクリックします。
[アプリケーションを作成] ページの [アプリケーションのリージョンと名前を選択] ペインで、[グローバル] を選択します。
[アプリケーション名] フィールドに「
tutorial-application
」と入力します。この名前は一意の識別子であり、アプリケーションの作成後に変更することはできません。表示名
Tutorial
を入力し、[続行] をクリックします。これは、更新可能なユーザー フレンドリーな名前です。詳細については、既存のアプリケーションを更新するをご覧ください。[属性を追加] ペインの [重要度] リストで、[高] を選択します。重要度は、アプリケーション、サービス、またはワークロードが、ビジネス運営にとってどの程度重要であるかを示します。
[環境] フィールドで、ソフトウェア ライフサイクルのステージを示すために [本番環境] を選択します。
[続行] をクリックします。
[オーナーを追加] ペインで、デベロッパー オーナー、オペレーター オーナー、ビジネス オーナーの次の詳細を追加します。表示名を追加する場合は、所有者のメールアドレスを入力する必要があります。
- 所有者の表示名を入力します。
- オーナーのメールアドレスを入力します。この値は、
username@yourdomain
の形式(例:222larabrown@gmail.com
)にする必要があります。
デベロッパー、オペレーター、ビジネス オーナーごとにこの手順を繰り返します。
[作成] をクリックします。
新しいアプリケーションが作成され、[アプリケーション] ページに表示されます。App Hub アプリケーションで検出されたリソースとして使用できるのは、転送ルール、URL マップ、バックエンド サービス、マネージド インスタンス グループ(MIG)のみです。詳細については、コンセプトとデータモデルをご覧ください。
gcloud
作成した App Hub ホスト プロジェクトを選択します。
gcloud config set project HOST_PROJECT_ID
リージョン
global
にtutorial-application
という名前の新しいアプリケーションを作成し、表示名Tutorial
を設定します。このアプリケーション名tutorial-application
は固有の識別子であり、アプリケーションの作成後に変更することはできません。表示名は、更新可能なわかりやすい名前です。Tutorial
詳細については、既存のアプリケーションを更新するをご覧ください。gcloud apphub applications create tutorial-application \ --display-name='Tutorial' \ --scope-type=GLOBAL \ --project=HOST_PROJECT_ID \ --location=global
App Hub ホスト プロジェクト内のアプリケーションを一覧表示します。
gcloud apphub applications list \ --project=HOST_PROJECT_ID \ --location=global
次のような出力が表示されます。
ID DISPLAY_NAME CREATE_TIME tutorial-application Tutorial 2023-10-31T18:33:48
criticality-type
、environment-type
、owner の各属性でアプリケーションを更新します。gcloud apphub applications update tutorial-application \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --developer-owners=display-name=DISPLAY-NAME-DEVELOPER,email=EMAIL-DEVELOPER \ --operator-owners=display-name=DISPLAY-NAME-OPERATOR,email=EMAIL-OPERATOR \ --business-owners=display-name=DISPLAY-NAME-BUSINESS,email=EMAIL-BUSINESS \ --project=HOST_PROJECT_ID \ --location=global
以下を置き換えます。
DISPLAY-NAME-DEVELOPER
、DISPLAY-NAME-OPERATOR
、DISPLAY-NAME-BUSINESS
: それぞれ、デベロッパー、オペレーター、ビジネス オーナーの表示名。EMAIL-NAME-DEVELOPER
、EMAIL-NAME-OPERATOR
、EMAIL-NAME-BUSINESS
: それぞれ、デベロッパー、オペレーター、ビジネス オーナーのメールアドレス。これらの値は、username@yourdomain
の形式(例:222larabrown@gmail.com
)にする必要があります。
注:
criticality-type
: ビジネス運営におけるアプリケーション、サービス、ワークロードの重要度を示します。environment-type
: ソフトウェア ライフサイクルのステージを示します。
作成したアプリケーションの詳細を取得します。
gcloud apphub applications describe tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
このコマンドは、次のような YAML 形式の情報を返します。
attributes: businessOwners: – displayName: [DISPLAY-NAME-BUSINESS] email: [EMAIL-BUSINESS] criticality: type: HIGH developerOwners: – displayName: [DISPLAY-NAME-DEVELOPER] email: [EMAIL-DEVELOPER] environment: type: PRODUCTION operatorOwners: – displayName: [DISPLAY-NAME-OPERATOR] email: [EMAIL-OPERATOR] createTime: '2023-10-31T18:33:48.199394108Z' displayName: Tutorial name: projects/HOST_PROJECT_ID/locations/global/applications/tutorial-application scope: type: REGIONAL state: ACTIVE uid: 9d991a9d-5d8a-4c0d-b5fd-85e39fb58c73 updateTime: '2023-10-31T18:33:48.343303819Z'
サービスとワークロードを登録する
サービスとワークロードを登録すると、追加されたリソースをモニタリングできるアプリケーションに追加されます。
Console
Google Cloud コンソールで、App Hub の [アプリケーション] ページに移動します。
アプリケーションの名前、「Tutorial」をクリックします。 [サービスとワークロード] タブに、App Hub サービス プロジェクトに存在する登録済みのサービスとワークロードのリストが表示されます。
サービスの登録:
- [サービスとワークロード] タブで、[サービス/ワークロードを登録] をクリックします。
- [サービスまたはワークロードの登録] ページの [リソースの選択] ペインで、[参照] をクリックして、サービスまたはワークロードを [リソース] として選択します。
- [リソースの選択] ペインで、サービスの名前「tutorial-backend-service-sp2」を選択し、[選択] をクリックします。
- [リソースの選択] ペインで、リソースの名前
tutorial-service-backend-sp2
を入力します。 - 表示名
Backend service (SP2)
を入力し、[続行] をクリックします。 - [属性を追加] ペインの [重要度] リストで、アプリケーションの重要性を示すために [高] を選択します。
- [環境] フィールドで、ソフトウェア ライフサイクルのステージを示すために [本番環境] を選択します。
- [続行] をクリックします。
- [オーナーを追加] ペインで、デベロッパー オーナー、オペレーター オーナー、ビジネス オーナーに必要であるため、次の詳細を追加します。表示名を追加する場合は、所有者のメールアドレスを入力する必要があります。
- 所有者の表示名を入力します。
- オーナーのメールアドレスを入力します。この値は、
username@yourdomain
の形式(例:222larabrown@gmail.com
)にする必要があります。
- デベロッパー、オペレーター、ビジネス オーナーごとにこの手順を繰り返します。
- [Register] をクリックします。
[サービスとワークロード] タブの [登録されているサービスとワークロード] セクションで、追加された新しいサービスを確認できます。
- 前の手順を繰り返して、他のサービスを tutorial-service-backend-sp3、tutorial-service-forwarding-rule、tutorial-service-url-map として登録します。
- 次の例外を除き、前述のサービスの登録手順を繰り返して、ワークロードを登録します。
- [サービスまたはワークロードの登録] ペインの [サービスまたはワークロードの選択] セクションで、ワークロードの [名前]「tutorial-sp2-mig-a」を選択し、[続行] をクリックします。
- [リソースの選択] ペインで、リソースの名前
tutorial-workload-sp2-mig-a
を入力します。 - 表示名
Instance group - A (SP2)
を入力し、[続行] をクリックします。
- 前の手順を繰り返して、他のワークロードを tutorial-workload-sp2-mig-a、tutorial-workload-sp2-mig-b、tutorial-workload-sp3-mig-a、tutorial-workload-sp3-mig-b として登録します。
gcloud
App Hub 編集者の権限を持つユーザーを追加します。
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='user:APP_HUB_EDITOR' \ --role='roles/apphub.editor'
APP_HUB_EDITOR
は、App Hub ホスト プロジェクトで App Hub 編集者のロールを持つユーザーに置き換えます。この値の形式はusername@yourdomain
です(例:222larabrown@gmail.com
)。App Hub ホスト プロジェクトで検出されたすべてのサービスを一覧表示します。このコマンドによって、アプリケーションに登録可能なサービスが返されます。
gcloud apphub discovered-services list \ --project=HOST_PROJECT_ID \ --location=us-west1
次のような出力が表示されます。
ID SERVICE_REFERENCE SERVICE_PROPERTIES
BACKEND_SERVICE_SP2_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp2'} {'gcpProject': 'projects/SERVICE_PROJECT_2_ID', 'location': 'us-west1'}BACKEND_SERVICE_SP3_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp3'} {'gcpProject': 'projects/SERVICE_PROJECT_3_ID', 'location': 'us-west1'}FORWARDING_RULE_SERVICE_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule'} {'gcpProject': 'projects/SERVICE_PROJECT_1_ID', 'location': 'us-west1'}URL_MAP_SERVICE_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/urlMaps/tutorial-url-maps'} {'gcpProject': 'projects/SERVICE_PROJECT_1_ID', 'location': 'us-west1'}次のステップで使用するサービス
ID
(BACKEND_SERVICE_SP2_ID
など)を出力からコピーします。前の手順で取得したサービスをアプリケーションに登録します。前の手順の出力フィールドからサービス ID をコピーします。
gcloud apphub applications services create tutorial-service-backend-sp2 \ --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/BACKEND_SERVICE_SP2_ID' \ --display-name='Backend service (SP2)' \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications services create tutorial-service-backend-sp3 \ --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/BACKEND_SERVICE_SP3_ID' \ --display-name='Backend service (SP3)' \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications services create tutorial-service-forwarding-rule \ --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/FORWARDING_RULE_SERVICE_ID' \ --display-name='Forwarding rule' \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications services create tutorial-service-url-map \ --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/URL_MAP_SERVICE_ID' \ --display-name='URL map' \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
次のように置き換えます。
BACKEND_SERVICE_SP2_ID
: 登録する Service Project 2 のバックエンド サービスのサービスID
。BACKEND_SERVICE_SP3_ID
: 登録する Service Project 3 のバックエンド サービスのサービスID
。FORWARDING_RULE_SERVICE_ID
: 登録する Service Project 1 の転送ルールのサービスID
。URL_MAP_SERVICE_ID
: 登録する Service Project 1 の URL マップのサービスID
。
アプリケーション内の登録済みサービスをすべて一覧表示します。
gcloud apphub applications services list \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
次のような出力が表示されます。
登録されているが切断されたサービスは、ID DISPLAY_NAME SERVICE_REFERENCE CREATE_TIME tutorial-service-backend-sp2 Backend service {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp2'} 2024-02-13T00:31:45 tutorial-service-backend-sp3 Backend service {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp3'} 2024-02-13T00:31:45 tutorial-service-forwarding-rule Forwarding rule {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule'} 2024-02-13T00:31:45 tutorial-service-url-map URL map {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/urlMaps/tutorial-url-maps'} 2024-02-13T00:31:45
SERVICE_REFERENCE
フィールドの空の値で表されます。登録ステータスの詳細については、App Hub のプロパティと属性をご覧ください。App Hub ホスト プロジェクトで検出されたすべてのワークロードを一覧表示します。このコマンドによって、アプリケーションに登録可能なワークロードが返されます。
gcloud apphub discovered-workloads list \ --project=HOST_PROJECT_ID \ --location=global
次のような出力が表示されます。
次の手順で使用するワークロード ID を出力からコピーします。ID WORKLOAD_REFERENCE WORKLOAD_PROPERTIES
INSTANCE_GROUP_SP3_A_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-a'} {'gcpProject': 'projects/SERVICE_PROJECT_3_ID', 'location': 'us-west1'}INSTANCE_GROUP_SP3_B_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-b'} {'gcpProject': 'projects/SERVICE_PROJECT_3_ID', 'location': 'us-west1'}INSTANCE_GROUP_SP2_A_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-a'} {'gcpProject': 'projects/SERVICE_PROJECT_2_ID', 'location': 'us-west1'}INSTANCE_GROUP_SP2_B_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-b'} {'gcpProject': 'projects/SERVICE_PROJECT_2_ID', 'location': 'us-west1'}前の手順で作成したワークロードをアプリケーションに登録します。前の手順の出力フィールドからワークロード ID をコピーします。
gcloud apphub applications workloads create tutorial-workload-sp3-mig-a \ --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP3_A_ID' \ --display-name='Workload instance group (SP3-A)' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications workloads create tutorial-workload-sp3-mig-b \ --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP3_B_ID' \ --display-name='Workload instance group (SP3-B)' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications workloads create tutorial-workload-sp2-mig-a \ --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP2_A_ID' \ --display-name='Workload instance group (SP2-A)' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications workloads create tutorial-workload-sp2-mig-b \ --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP2_B_ID' \ --display-name='Workload instance group (SP2-B)' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
次のように置き換えます。
INSTANCE_GROUP_SP3_A_ID
、INSTANCE_GROUP_SP3_B_ID
: 登録する Service Project 3 のマネージド インスタンス グループのワークロードID
。INSTANCE_GROUP_SP2_A_ID
、INSTANCE_GROUP_SP2_B_ID
: 登録する Service Project 2 のマネージド インスタンス グループのワークロードID
。
アプリケーションに登録されているすべてのワークロードを一覧表示します。
gcloud apphub applications workloads list \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
次のような出力が表示されます。
登録されているが切断されたワークロードは、ID DISPLAY_NAME SERVICE_REFERENCE CREATE_TIME tutorial-workload-sp3-mig-a Workload instance group (SP3-A) {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-a'} 2024-02-13T00:31:45 tutorial-workload-sp3-mig-b Workload instance group (SP3-B) {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-b'} 2024-02-13T00:31:45 tutorial-workload-sp2-mig-a Workload instance group (SP2-A) {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-a'} 2024-02-13T00:31:45 tutorial-workload-sp2-mig-b Workload instance group (SP2-B) {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-b'} 2024-02-13T00:31:45
WORKLOAD_REFERENCE
フィールドの空の値で表されます。登録ステータスの詳細については、App Hub のプロパティと属性をご覧ください。
すべてのサービスとワークロードを表示する
App Hub ホスト プロジェクトに接続されているサービス プロジェクトから、サービスとワークロードの詳細を表示できます。
Google Cloud コンソールで、App Hub の [サービスとワークロード] ページに移動します。
[リージョン] リストで [global] を選択します。Workload instance group ワークロードに、[App Hub タイプ]、[重要度]、[登録先] などの詳細が表示されます。
状態に基づいてサービスまたはワークロードをフィルタするには:
- [フィルタ] フィールドで、[登録ステータス] などのフィルタを選択します。
- [登録済み] をクリックします。アプリケーションに登録されているサービスとワークロードのリストが表示されます。
アプリケーション指標を表示する
App Hub ホスト プロジェクトで作成されたアプリケーションのシステム指標を表示できます。これらの指標は、アプリケーションのパフォーマンスと健全性のモニタリングに役立つゴールデン シグナル(トラフィック、エラー、レイテンシ、飽和度)に対応しています。
Google Cloud コンソールで、App Hub の [アプリケーション] ページに移動します。
アプリケーションの名前「
Tutorial
」をクリックします。[サービスとワークロード] タブに、アプリケーションに登録されているサービスとワークロードのメタデータが表示されます。
登録されたサービスとワークロードのシステム指標を表示するには、[指標] をクリックします。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
App Hub リソースを削除する
Console
Google Cloud コンソールで、App Hub の [アプリケーション] ページに移動します。
アプリケーションの名前、「Tutorial」をクリックします。
[サービスとワークロード] タブの [登録済みのサービスとワークロード] セクションで、サービスの名前をクリックします。
[サービスとワークロード] ページで、[登録を解除する] をクリックします。
サービスの登録が解除されたことを示すアラートが表示されます。
[サービスとワークロード] タブの [登録済みのサービスとワークロード] セクションで、ワークロードの名前をクリックします。
[詳細] タブで、[登録を解除する] をクリックします。
ワークロードの登録が解除されたことを示すアラートが表示されます。
App Hub の [アプリケーション] ページに移動します。
アプリケーションの名前をクリックします。
[tutorial-application] ページで、[削除] をクリックします。
Google Cloud コンソールで、App Hub の [設定] ページに移動します。
[設定] ページで、App Hub ホスト プロジェクトから削除するサービス プロジェクトのチェックボックスをオンにします。
[プロジェクトを接続解除] をクリックします。
gcloud
アプリケーションに登録されているサービスを一覧表示します。
gcloud apphub applications services list \ --application=tutorial-application --project=HOST_PROJECT_ID \ --location=global
アプリケーションからサービスを登録解除します。
gcloud apphub applications services delete SERVICE_NAME \ --application=tutorial-application --project=HOST_PROJECT_ID \ --location=global
SERVICE_NAME
は、実際のサービス名に置き換えます。これで、アプリケーションに登録可能な検出されたサービスになります。アプリケーションに登録されているワークロードを一覧表示します。
gcloud apphub applications workloads list \ --application=tutorial-application --project=HOST_PROJECT_ID \ --location=global
アプリケーションからワークロードの登録を解除します。
gcloud apphub applications workloads delete WORKLOAD_NAME \ --application=tutorial-application --project=HOST_PROJECT_ID \ --location=global
WORKLOAD_NAME
は、使用するワークロードの名前に置き換えます。これで、ワークロードは、アプリケーションに登録可能な検出されたワークロードになります。アプリケーションを削除します。
gcloud apphub applications delete tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
App Hub ホスト プロジェクトからサービス プロジェクトを削除します。
gcloud apphub service-projects remove SERVICE_PROJECT_ID \ --project=HOST_PROJECT_ID
SERVICE_PROJECT_ID
は、サービス プロジェクト 1、2、3 のプロジェクト ID に置き換えます。
Deployment を削除する
このソリューションが不要になった場合は、このソリューションで作成したリソースに対する課金が継続しないように、すべてのリソースを削除します。
詳細については、ロードバランサの設定をクリーンアップするをご覧ください。プロジェクトの削除
Console
- Google Cloud コンソールで、[リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
gcloud
Google Cloud プロジェクトを削除します。
gcloud projects delete PROJECT_ID
PROJECT_ID
は、ホスト プロジェクト ID またはサービス プロジェクト ID に置き換えます。