既存のサービスとワークロードをアプリケーションに登録すると、ビジネス上の目的に基づいてリソースを整理することで、管理を簡素化できます。このアプローチにより、可視性、モニタリング、ガバナンス、運用制御を一元的に行うことができます。
このガイドでは、まだアプリケーションとして正式に定義されていないGoogle Cloud で実行されている既存のサービスとワークロードをグループ化する方法について説明します。
始める前に
リソースをアプリケーションに整理する前に、アプリケーション管理の初期設定を完了する必要があります。このプロセスには通常、次のロールと手順が含まれます。
管理者向け:
- アプリケーション管理を設定します。アプリ対応フォルダまたはホスト プロジェクトを構成して、アプリケーションの管理境界として機能するようにします。
- 必要な API を有効にします。使用するすべてのリソースの API を有効にします。
- ユーザーにアクセス権を付与します。 アプリケーション ライフサイクルにおけるユーザーの役割に基づいて、適切な IAM ロールを割り当てます。
デベロッパーとオペレータ向け:
- 初期設定が完了していることを管理者にご確認ください。
- 実行するタスクに必要な IAM ロールがあることを確認します。
- 設定モデルに応じて、アプリ対応フォルダまたはホスト プロジェクトを開きます。
アプリケーションを作成する
App Hub でアプリケーションを作成して、既存のサービスとワークロードの論理コンテナとして機能させます。
コンソール
- Google Cloud コンソールで、設定モデルに応じて、プロジェクト選択ツールを使用してホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
App Hub から [アプリケーション] ページに移動します。
[アプリケーションを作成] をクリックします。
[アプリケーションのリージョンと名前の選択] ペインで、地理的分布の要件に基づいてアプリケーションに最適なロケーションを選択します。
- リージョン アプリケーションを作成するには、[リージョン] を選択します。次に、App Hub でサポートされているリージョンに基づいて、アプリケーションの特定のリージョンを選択します。
- [グローバル] を選択して、グローバル アプリケーションを作成します。
アプリケーションに最適なロケーションの詳細については、グローバル アプリケーションとリージョン アプリケーションをご覧ください。
[アプリケーション名] を入力し、[続行] をクリックします。
省略可: アプリケーションの最上位属性を定義して、検出可能性とガバナンスをサポートします。
- [属性を追加] セクションで、表示名を入力します。
- [重要度] リストで、アプリケーションの重要性を示す値を選択します。
- [環境] リストで、ソフトウェア ライフサイクルのステージを示す値を選択します。
- 所有者の連絡先情報(表示名、メールアドレスなど)を追加します。メールアドレスは
username@yourdomain
形式(例:jane-doe@gmail.com
)にする必要があります。
[作成] をクリックします。
gcloud
Google Cloud CLI を使用して、ターミナルまたは Cloud Shell からアプリケーションを作成します。
gcloud apphub applications create APPLICATION_NAME \ --project=PROJECT_ID \ --scope-type=LOCATION \ --location=REGION \ --display-name=DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL
APPLICATION_NAME
は、アプリケーションの名前に置き換えます。名前にはスペースなしの小文字の英数字のみを使用します。--criticality-type
などのオプションのフラグを使用して、アプリケーションの最上位の属性を定義し、検出可能性とガバナンスをサポートします。必須フラグとオプション フラグの場合は、次のように置き換えます。
- 必須:
PROJECT_ID
: 設定モデルに応じて、ホスト プロジェクトまたは管理プロジェクトの ID。 必須:
LOCATION
: 地理的分布の要件に基づくアプリケーションのロケーション。次のいずれかの値を使用します。- リージョン アプリケーションの場合は
REGIONAL
。 - グローバル アプリケーションの場合は
GLOBAL
。
アプリケーションに最適なロケーションの詳細については、グローバル アプリケーションとリージョン アプリケーションをご覧ください。
- リージョン アプリケーションの場合は
必須:
REGION
: アプリケーションの特定のリージョン。次の値のいずれかを使用できます。- アプリケーションの
--scope-type
ロケーションがREGIONAL
に設定されている場合は、App Hub でサポートされているリージョン名を指定します。 - アプリケーションの
--scope-type
の場所がGLOBAL
に設定されている場合は、global
を使用します。
- アプリケーションの
省略可:
DISPLAY_NAME
: アプリケーションの表示名。省略可:
CRITICALITY
: 運用におけるアプリケーションの重要度レベル。次のいずれかの値を使用します。MISSION_CRITICAL
HIGH
MEDIUM
LOW
省略可:
ENVIRONMENT
: ソフトウェア ライフサイクルのステージ。次の値のいずれかを使用できます。PRODUCTION
STAGING
DEVELOPMENT
TEST
省略可:
DEV_NAME
とDEV_EMAIL
: それぞれデベロッパー オーナーの表示名とメールアドレス。省略可:
OPERATOR_NAME
とOPERATOR_EMAIL
: オペレーター オーナーの表示名とメールアドレス。省略可:
BUSINESS_NAME
とBUSINESS_EMAIL
: それぞれビジネス オーナーの表示名とメールアドレス。
- 必須:
プロジェクト内のアプリケーションを一覧表示します。
gcloud apphub applications list \ --project=PROJECT_ID \ --location=REGION
次のような出力が得られるはずです。
ID DISPLAY_NAME CREATE_TIME APPLICATION_NAME DISPLAY_NAME 2023-10-31T18:33:48
Terraform
Terraform を使用してアプリケーションを作成するには、google_apphub_application
リソースを使用します。このリソースを使用すると、アプリケーションの名前、ロケーション、属性などのプロパティを定義できます。
次の例では、重要度、環境、所有者属性が定義された us-central1
にリージョン アプリケーションを作成します。
resource "google_apphub_application" "example" {
project = "my-project-id"
location = "us-central1"
application_id = "my-application"
display_name = "My Application"
description = "This application represents our platform."
scope {
type = "REGIONAL"
}
attributes {
criticality {
type = "MISSION_CRITICAL"
}
environment {
type = "PRODUCTION"
}
business_owners {
display_name = "Alice"
email = "alice@example.com"
}
developer_owners {
display_name = "Bob"
email = "bob@example.com"
}
operator_owners {
display_name = "Charlie"
email = "charlie@example.com"
}
}
}
サービスとワークロードを登録する
アプリケーションを作成したら、既存のサービスとワークロードを登録します。
コンソール
- Google Cloud コンソールで、設定モデルに応じて、プロジェクト選択ツールを使用してホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
App Hub から [アプリケーション] ページに移動します。
既存のサービスとワークロードを登録するアプリケーションの名前をクリックします。
アプリケーションの詳細ページで、[サービスとワークロード] タブを選択します。このタブには、アプリケーションに登録できる既存のリソースのリストが表示されます。App Hub では、リソース階層内にあるサポートされているリソースをサービスとワークロードとして選択できます。
登録するサービスまたはワークロードごとに、次の操作を行います。
- [サービスとワークロード] タブで、[サービス/ワークロードを登録] をクリックします。
- [リソースを選択] ペインに移動し、[参照] をクリックして、登録するサービスまたはワークロードを見つけます。
- サービスまたはワークロードを選択して、[選択] をクリックします。
- [リソースの選択] ペインで、サービスまたはワークロードの名前を入力して [続行] をクリックします。
省略可: [属性を追加] ペインで、検出可能性とガバナンスをサポートするリソースの最上位属性を定義します。
[続行] をクリックします。
省略可: [オーナーを追加] セクションで、サービスまたはワークロードのオーナーの詳細を追加します。
[Register] をクリックします。
[サービスとワークロード] タブに、登録済みのサービスまたはワークロードが表示されます。
gcloud
App Hub では、リソース階層内にあるサポートされているリソースをサービスとワークロードとして選択できます。Google Cloud CLI を使用して、ターミナルまたは Cloud Shell からアプリケーションに登録できるサービスまたはワークロードを一覧表示します。サービスとワークロードではコマンドが若干異なります。
サービスを登録する
アプリケーションに登録できる利用可能なサービスを一覧表示します。
gcloud apphub discovered-services list \ --project=PROJECT_ID \ --location=REGION \ --filter=FILTER_EXPRESSION
必須フラグとオプション フラグの場合は、次のように置き換えます。
- 必須:
PROJECT_ID
: 設定モデルに応じて、ホスト プロジェクトまたは管理プロジェクトの ID。 必須:
REGION
: 地理的な分布に基づくサービスの特定のリージョン。次のいずれかの値を使用します。- サービスがリージョンである場合は、App Hub でサポートされているリージョン名を指定します。
- サービスがグローバルな場合は、
global
を使用します。
省略可:
FILTER_EXPRESSION
:--filter
フラグのフィルタ式。指定したプロジェクトのサービスまたは特定のプロパティを持つサービスのみを表示します。例:service_properties.gcp_project=projects/PROJECT_ID
service_properties.gcp_project=projects/PROJECT_ID AND service_reference.uri~"forwardingRules"
出力は次のようになります。
ID SERVICE_REFERENCE SERVICE_PROPERTIES SERVICE_ID {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'} {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}
- 必須:
出力からサービス ID
SERVICE_ID
をコピーします。サービスをアプリケーションに登録します。
gcloud apphub applications services create SERVICE_NAME \ --project=PROJECT_ID \ --location=REGION \ --application=APPLICATION_NAME \ --discovered-service=projects/PROJECT_ID/locations/REGION/discoveredServices/SERVICE_ID \ --display-name=SERVICE_DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL
SERVICE_NAME
は、サービスをアプリケーションに登録するために使用する名前に置き換えます。--criticality-type
などのオプション フラグを使用して、サービスの最上位属性を定義し、検出可能性とガバナンスをサポートします。必須フラグとオプション フラグの場合は、次のように置き換えます。
- 必須:
PROJECT_ID
: 設定モデルに応じて、ホスト プロジェクトまたは管理プロジェクトの ID。 必須:
REGION
: 地理的な分布に基づくサービスの特定のリージョン。次のいずれかの値を使用します。- サービスがリージョンである場合は、App Hub でサポートされているリージョン名を指定します。
- サービスがグローバルな場合は、
global
を使用します。
必須:
APPLICATION_NAME
: サービスを登録するアプリケーションの名前。必須:
SERVICE_ID
: 前の出力からコピーしたサービス ID。省略可:
SERVICE_DISPLAY_NAME
: サービスの表示名。省略可:
CRITICALITY
: 運用におけるサービスの重要度。次の値のいずれかを使用できます。MISSION_CRITICAL
HIGH
MEDIUM
LOW
省略可:
ENVIRONMENT
: ソフトウェア ライフサイクルのステージ。次の値のいずれかを使用できます。PRODUCTION
STAGING
DEVELOPMENT
TEST
省略可:
DEV_NAME
とDEV_EMAIL
: それぞれデベロッパー オーナーの表示名とメールアドレス。省略可:
OPERATOR_NAME
とOPERATOR_EMAIL
: オペレーター オーナーの表示名とメールアドレス。省略可:
BUSINESS_NAME
とBUSINESS_EMAIL
: ビジネス オーナーの表示名とメールアドレス。
- 必須:
アプリケーションに登録されているサービスを一覧表示します。
gcloud apphub applications services list \ --application=APPLICATION_NAME --project=PROJECT_ID \ --location=REGION
登録された各サービスについて、次のような出力を取得する必要があります。
ID DISPLAY_NAME SERVICE_REFERENCE CREATE_TIME SERVICE_NAME SERVICE_DISPLAY_NAME {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'} 2023-11-01T21:38:08
ワークロードを登録する
アプリケーションに登録できる使用可能なワークロードを一覧表示します。
gcloud apphub discovered-workloads list \ --project=PROJECT_ID \ --location=REGION \ --filter=FILTER_EXPRESSION
必須フラグとオプション フラグの場合は、次のように置き換えます。
- 必須:
PROJECT_ID
: 設定モデルに応じて、ホスト プロジェクトまたは管理プロジェクトの ID。 必須:
REGION
: 地理的分布に基づくワークロードの特定のリージョン。次のいずれかの値を使用します。- ワークロードがリージョンである場合は、App Hub でサポートされているリージョン名を指定します。
- ワークロードがグローバルな場合は、
global
を使用します。
省略可:
FILTER_EXPRESSION
:--filter
フラグのフィルタ式。指定されたプロジェクトのワークロードまたは特定のプロパティを持つワークロードのみを表示します。例:workload_properties.gcp_project=projects/PROJECT_ID
。
出力は次のようになります。
ID WORKLOAD_REFERENCE WORKLOAD_PROPERTIES WORKLOAD_ID {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'} {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}
- 必須:
出力からワークロード ID
WORKLOAD_ID
をコピーします。ワークロードをアプリケーションに登録します。
gcloud apphub applications workloads create WORKLOAD_NAME \ --project=PROJECT_ID \ --location=REGION \ --application=APPLICATION_NAME \ --discovered-workload=projects/PROJECT_ID/locations/REGION/discoveredWorkloads/WORKLOAD_ID \ --display-name=WORKLOAD_DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL
WORKLOAD_NAME
は、ワークロードをアプリケーションに登録するために使用する名前に置き換えます。--criticality-type
などのオプション フラグを使用して、ワークロードの最上位属性を定義し、検出可能性とガバナンスをサポートします。必須フラグとオプション フラグの場合は、次のように置き換えます。
- 必須:
PROJECT_ID
: 設定モデルに応じて、ホスト プロジェクトまたは管理プロジェクトの ID。 必須:
REGION
: 地理的分布に基づくワークロードの特定のリージョン。次のいずれかの値を使用します。- ワークロードがリージョンである場合は、App Hub でサポートされているリージョン名を指定します。
- ワークロードがグローバルな場合は、
global
を使用します。
必須:
APPLICATION_NAME
: ワークロードを登録するアプリケーションの名前。必須:
WORKLOAD_ID
: 前の出力からコピーしたワークロード ID。省略可:
WORKLOAD_DISPLAY_NAME
: ワークロードの表示名。省略可:
CRITICALITY
: 運用におけるワークロードの重要度。次の値のいずれかを使用できます。MISSION_CRITICAL
HIGH
MEDIUM
LOW
省略可:
ENVIRONMENT
: ソフトウェア ライフサイクルのステージ。次の値のいずれかを使用できます。PRODUCTION
STAGING
DEVELOPMENT
TEST
省略可:
DEV_NAME
とDEV_EMAIL
: それぞれデベロッパー オーナーの表示名とメールアドレス。省略可:
OPERATOR_NAME
とOPERATOR_EMAIL
: オペレーター オーナーの表示名とメールアドレス。省略可:
BUSINESS_NAME
とBUSINESS_EMAIL
: ビジネス オーナーの表示名とメールアドレス。
- 必須:
アプリケーションに登録されているワークロードを一覧表示します。
gcloud apphub applications workloads list \ --application=APPLICATION_NAME --project=PROJECT_ID \ --location=REGION
登録されたワークロードごとに、次のような出力を取得する必要があります。
ID DISPLAY_NAME WORKLOAD_REFERENCE CREATE_TIME WORKLOAD_NAME WORKLOAD_DISPLAY_NAME {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'} 2023-11-01T21:38:08
Terraform
Terraform を使用してサービスまたはワークロードをアプリケーションに登録するには、google_apphub_discovered_service
データソースと google_apphub_discovered_workload
データソースを使用して、登録するリソースに関する情報を動的に取得します。
次に、google_apphub_service
リソースまたは google_apphub_workload
リソースを使用して、それぞれサービスまたはワークロードを登録します。
サービスを登録する
URI を使用してサービスに関する情報を取得します。
data "google_apphub_discovered_service" "my-service" { location = "REGION" service_uri = "SERVICE_URI" }
検出されたサービスをアプリケーションに登録します。例:
resource "google_apphub_service" "example" { project = "my-project-id" location = "us-central1" application_id = google_apphub_application.example.application_id service_id = "frontend-load-balancer" discovered_service = data.google_apphub_discovered_service.my-forwarding-rule.name display_name = "Frontend Load Balancer" description = "The primary load balancer for the frontend." }
ワークロードを登録する
URI を使用してワークロードに関する情報を取得します。
data "google_apphub_discovered_workload" "my-workload" { location = "REGION" workload_uri = "WORKLOAD_URI" }
検出されたワークロードをアプリケーションに登録します。次に例を示します。
resource "google_apphub_workload" "example" { project = "my-project-id" location = "us-central1" application_id = google_apphub_application.example.application_id workload_id = "frontend-instance-group" discovered_workload = data.google_apphub_discovered_workload.my-mig.name display_name = "Frontend Instance Group" description = "The managed instance group for the frontend." }
Google Cloud リソースの組織構造を変更するか、基盤となるリソースを削除すると、アプリケーションに登録されているサービスとワークロードの登録ステータスが「接続解除」に変更されることがあります。接続が解除されたサービスとワークロードは、登録を解除するまでアプリケーションに残ります。詳細については、サービスとワークロードの登録ステータスをご覧ください。
権限を付与してオペレーションを開始する
アプリケーションを作成して App Hub にリソースを登録したら、責任に基づいてユーザー アクセス権を付与し、このロジック グループを単一の単位として管理します。
- アクセス要件に応じて、アプリケーションに権限を付与できます。推奨されるロールの一覧については、ユーザーにアプリケーション中心のロールを付与するをご覧ください。
- Cloud Hub に移動して、定義したアプリケーションの統合運用ダッシュボードを表示します。このダッシュボードには、健全性、パフォーマンス、費用に関するデータが表示されます。