単一のプロジェクトを使用して App Hub アプリケーションを作成する


このチュートリアルでは、単一のプロジェクトで App Hub アプリケーションを設定する方法について説明します。サービス プロジェクトとして機能する App Hub ホスト プロジェクトで、ロードバランスされたマネージド インスタンス グループ(MIG)をデプロイします。次に、App Hub ホスト プロジェクトのアプリケーションで、サービス プロジェクトのすべてのインフラストラクチャ リソースを App Hub サービスとワークロードとして登録してモニタリングします。

このチュートリアルは、App Hub を設定および管理するユーザーを対象としています。Cloud Load Balancing の使用経験が必要です。

目標

このチュートリアルでは、次のタスクを行う方法を説明します。

  1. Google Cloud プロジェクトを作成または選択します。このプロジェクトは、App Hub のホスト プロジェクトです。
  2. ホスト プロジェクトで、Terraform を使用して VPC ネットワーク、リージョン外部アプリケーション ロードバランサ、ロードバランサの MIG バックエンドをデプロイします。リージョン外部アプリケーション ロードバランサには、次のリソースが含まれます。

    • HTTP ヘルスチェック
    • 転送ルール
    • URL マップ
    • ターゲット プロキシ
    • マネージド インスタンス グループをバックエンドとして使用するバックエンド サービス
    • SSL 証明書(HTTPS の場合)

    転送ルール、URL マップ、バックエンド サービス、MIG のみが、App Hub で検出されたリソースとして使用可能になります。詳細については、コンセプトとデータモデルをご覧ください。

  3. ホスト プロジェクトに適切なロールと権限を付与します。

  4. App Hub ホスト プロジェクトをサービス プロジェクトとして接続する。

  5. App Hub ホスト プロジェクトでアプリケーションを作成する。

  6. インフラストラクチャ リソースを App Hub サービスとワークロードとして検出する。

  7. アプリケーションにサービス プロジェクトのサービスとワークロードを登録し、属性を割り当てる。

  8. App Hub で登録されているサービスとワークロードの詳細を表示する。

費用

ロードバランスされたマネージド VM ソリューションで使用される Google Cloud リソースの費用を見積もるには、Google Cloud 料金計算ツールで事前に計算された見積もりをご覧ください。

見積もりを出発点として使用して、デプロイの費用を計算します。見積もりを変更して、ソリューションで使用するリソースに対して行う予定の構成の変更を反映できます。

事前に計算された見積もりは、次のような特定の要因に関する前提条件に基づいています。

  • リソースがデプロイされている Google Cloud のロケーション。
  • リソースが使用される時間。

App Hub の費用について詳しくは、料金ページをご覧ください。

始める前に

プロジェクト作成者にはオーナーロールroles/owner)が付与されます。デフォルトでは、この Identity and Access Management(IAM)ロールには、ほとんどの Google Cloud リソースに対する完全アクセスに必要な権限が含まれています。

プロジェクト作成者でない場合は、プロジェクトで適切なプリンシパルに必要な権限を付与する必要があります。プリンシパルは Google アカウント(エンドユーザーの場合)やサービス アカウント(アプリケーションとワークロードの場合)になることもあります。

このチュートリアルを完了するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Console

  1. Google Cloud コンソールでプロジェクトの選択ページに移動します。

    プロジェクト セレクタに移動

  2. App Hub ホスト プロジェクトとなる Google Cloud プロジェクトを選択または作成します。

  3. Enable the required APIs.

    Enable the APIs

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Google Cloud CLI の最新バージョンがインストールされていることを確認します。Cloud Shell から次のコマンドを実行します。

      gcloud components update

  3. App Hub のホスト プロジェクトとなる新しいプロジェクト HOST_PROJECT_ID を作成または選択します。

    • Google Cloud プロジェクトを作成します。

      gcloud projects create HOST_PROJECT_ID
    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project HOST_PROJECT_ID
  4. API を有効にします。

    gcloud services enable apphub.googleapis.com \
       cloudresourcemanager.googleapis.com \
       compute.googleapis.com \
       config.googleapis.com \
       serviceusage.googleapis.com

環境の準備

このソリューションを最小限の労力でデプロイできるように、Terraform 構成が GitHub で提供されています。Terraform 構成では、ソリューションに必要なすべての Google Cloud のリソースを定義しています。 GitHub から Terraform 構成をダウンロードし、必要に応じてコードをカスタマイズしてから、Terraform CLI を使用してソリューションをデプロイします。ソリューションをデプロイした後も、引き続き Terraform を使用してソリューションを管理できます。

ロードバランサとマネージド インスタンス グループを使用した App Hub のワークロードとサービス。
図 1. ロードバランサとマネージド インスタンス グループを使用した App Hub のワークロードとサービス。

ロードバランスされたマネージド VM ソリューションでデプロイされるトポロジのリクエスト処理フローは次のとおりです。

  1. ユーザーが、Compute Engine にデプロイされたアプリケーションにリクエストを行います。Cloud Load Balancing がこのリクエストを受信します。

  2. Cloud Load Balancing は、転送ルール、URL マップ、バックエンド サービス内の情報を使用して、Compute Engine マネージド インスタンス グループにトラフィックをルーティングします。

Terraform クライアントを設定する

Terraform は、Cloud Shell またはローカルホストで実行できます。このチュートリアルでは、Terraform がプリインストールされ、Google Cloud での認証が構成されている Cloud Shell で Terraform を実行する方法について説明します。

このソリューションの Terraform コードは、GitHub リポジトリで入手できます。

  1. Cloud Shell で、GitHub リポジトリのクローンを作成します。

    git clone https://github.com/terraform-google-modules/terraform-docs-samples
    
  2. Cloud Shell で、現在の作業ディレクトリが terraform-docs-samples/lb/regional_external_http_load_balancer かどうかを確認します。このディレクトリには、ソリューションの Terraform 構成ファイルが含まれています。このディレクトリに移動する必要がある場合は、次のコマンドを実行します。

    cd terraform-docs-samples/lb/regional_external_http_load_balancer 
    
  3. 次のコマンドを実行して Terraform を初期化します。

    terraform init
    

    次のメッセージが表示されるまで待ちます。

    Terraform has been successfully initialized!
    

Terraform 構成を検証して確認する

  1. 現在の作業ディレクトリが terraform-docs-samples/lb/regional_external_http_load_balancer であることを確認します。そうでない場合は、そのディレクトリに移動します。

  2. Terraform 構成にエラーがないことを確認します。

    terraform validate
    

    コマンドからエラーが返された場合は、構成で必要な修正を行ってから、terraform validate コマンドを再度実行します。コマンドで次のメッセージが返されるまで、この手順を繰り返します。

    Success! The configuration is valid.
    
  3. 構成で定義されているリソースを確認します。

    terraform plan
    

    terraform plan コマンドの出力に、構成の適用時に Terraform がプロビジョニングするリソースのリストが表示されます。

    変更を行う場合は、構成を編集してから、terraform validate コマンドと terraform plan コマンドを再度実行します。

リソースをプロビジョニングする

構成にこれ以上の変更が必要ない場合は、リソースをデプロイします。

  1. 現在の作業ディレクトリが terraform-docs-samples/lb/regional_external_http_load_balancer であることを確認します。そうでない場合は、そのディレクトリに移動します。

  2. Terraform 構成を適用します。

    terraform apply
    

    作成されるリソースのリストが表示されます。

  3. アクションの実行を求められたら、「yes」と入力します。

    Terraform でデプロイの進行状況を示すメッセージが表示されます。

    デプロイを完了できない場合、失敗の原因となったエラーが表示されます。エラー メッセージを確認し、構成を更新してエラーを修正します。次に、terraform apply コマンドを再実行します。

    すべてのリソースが作成されると、Terraform から次のメッセージが表示されます。

    Apply complete!
    

Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。

Cloud Load Balancing は、転送ルール、URL マップ、バックエンド サービス、Compute Engine MIG にトラフィックを分散します。バックエンド サービス、URL マップ、転送ルールが、App Hub ホスト プロジェクトで検出されたサービスになります。Compute Engine MIG は、App Hub ホスト プロジェクトで検出されたワークロードになります。

このソリューションが不要になった場合は、デプロイメントを削除して、Google Cloud リソースに対する課金が継続しないようにします。詳細については、デプロイメントを削除するをご覧ください。

IAM 権限を付与

App Hub ホスト プロジェクトに適切な IAM ロールと権限を付与します。

Console

  1. このチュートリアルを完了するために必要な権限を取得するには、プロジェクトに対する必要な IAM ロールを付与するよう管理者に依頼してください。

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動

    2. [アクセスを許可] をクリックします。アクセス権の付与ペインが開きます。

    3. [新しいプリンシパル] フィールドに、ホスト プロジェクトの App Hub 管理者のロール、つまり App Hub を管理するユーザーのメールアドレスを入力します。

    4. [ロールを選択] をクリックし、[フィルタ] フィールドに「App Hub」と入力します。

    5. [App Hub 管理者] ロールを選択します。

    6. [別のロールを追加] をクリックし、[ロールを選択] リストから [Monitoring 閲覧者] を選択します。

    7. [保存] をクリックします。

gcloud

  1. 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 管理者のロールを持つユーザーに置き換えます。この値の形式は username@yourdomain です(例: 222larabrown@gmail.com)。

  2. 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 は、HOST_PROJECT_ID の名前に置き換えます。

  3. App Hub を管理するユーザーに、ホスト プロジェクトの Monitoring 閲覧者のロールを付与します。指標を表示するには、ホスト プロジェクトに対する Monitoring 閲覧者のロールが必要です。

    gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \
       --member='user:HOST_PROJECT_ADMIN' \
       --role='roles/monitoring.viewer'

サービス プロジェクトを接続する

リソースをサービス プロジェクトとしてデプロイしたホスト プロジェクトを接続します。

Console

  1. Google Cloud コンソールで、App Hub の [設定] ページに移動します。

    [設定] に移動

  2. [設定] ページで、[プロジェクトを接続] をクリックします。

  3. 開いたペインで、表示されたリストからプロジェクトを検索し、App Hub サービス プロジェクトのチェックボックスをオンにします。

  4. [選択] をクリックします。 [接続されたサービス プロジェクト] テーブルに、選択したホスト プロジェクトがサービス プロジェクトとして表示されます。

  5. [閉じる] をクリックします。

gcloud

ホスト プロジェクトをサービス プロジェクトとして App Hub ホスト プロジェクトに追加します。

gcloud apphub service-projects add HOST_PROJECT_ID \
  --project=HOST_PROJECT_ID

アプリケーションを作成する

サービスとワークロードのコンテナになるアプリケーションを作成します。

Console

  1. App Hub ホスト プロジェクトにいることを確認します。
  2. Google Cloud コンソールで、App Hub の [アプリケーション] ページに移動します。

    [アプリケーション] に移動

  3. [アプリケーションを作成] をクリックします。

  4. [アプリケーションを作成] ページの [アプリケーションのリージョンと名前を選択] ペインで、[リージョン] を選択します。

  5. [リージョン] リストで [us-west1] を選択します。

  6. [アプリケーション名] フィールドに、tutorial-application と入力します。

  7. 表示名 Tutorial を入力し、[続行] をクリックします。

  8. [属性を追加] ペインで、[重要度] リストから [] を選択します。重要度は、アプリケーション、サービス、またはワークロードが、ビジネス運営にとってどの程度重要であるかを示します。

  9. [環境] フィールドで、ソフトウェア ライフサイクルのステージを示すために [本番環境] を選択します。

  10. [続行] をクリックします。

  11. [オーナーを追加] ペインで、デベロッパー オーナーオペレーター オーナービジネス オーナーの次の詳細を追加します。表示名を追加する場合は、所有者のメールアドレスを入力する必要があります。

    1. 所有者の表示名を入力します。
    2. 所有者のメールアドレスを入力します。この値は、username@yourdomain の形式(例: 222larabrown@gmail.com)にする必要があります。
  12. デベロッパー、オペレーター、ビジネス オーナーごとに、上記の手順を繰り返します。

  13. [作成] をクリックします。

新しいアプリケーションが作成され、[アプリケーション] ページに表示されます。

gcloud

  1. 作成した App Hub ホスト プロジェクトを選択します。

    gcloud config set project HOST_PROJECT_ID
  2. リージョン us-west1tutorial-application という名前の新しいアプリケーションを作成し、表示名 Tutorial を設定します。

    gcloud apphub applications create tutorial-application \
        --display-name='Tutorial' \
        --scope-type=REGIONAL \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    
  3. App Hub ホスト プロジェクト内のアプリケーションを一覧表示します。

    gcloud apphub applications list \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    次のような出力が表示されます。

    ID                    DISPLAY_NAME  CREATE_TIME
    tutorial-application  Tutorial      2023-10-31T18:33:48
    
  4. criticality-typeenvironment-type、オーナーの属性でアプリケーションを更新します。

    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=us-west1
    

    以下を置き換えます。

    • DISPLAY-NAME-DEVELOPERDISPLAY-NAME-OPERATORDISPLAY-NAME-BUSINESS: それぞれ、デベロッパー、オペレーター、ビジネス オーナーの表示名。
    • EMAIL-NAME-DEVELOPEREMAIL-NAME-OPERATOREMAIL-NAME-BUSINESS: それぞれ、デベロッパー、オペレーター、ビジネス オーナーのメールアドレス。これらの値は、username@yourdomain の形式にする必要があります(例: 222larabrown@gmail.com)。

    注:

    • criticality-type: ビジネス運営におけるアプリケーション、サービス、ワークロードの重要度を示します。
    • environment-type: ソフトウェア ライフサイクルのステージを示します。
  5. 作成したアプリケーションの詳細を取得します。

    gcloud apphub applications describe tutorial-application \
      --project=HOST_PROJECT_ID \
      --location=us-west1
    

    このコマンドは、次のような 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/us-west1/applications/tutorial-application
    scope:
      type: REGIONAL
    state: ACTIVE
    uid: 9d991a9d-5d8a-4c0d-b5fd-85e39fb58c73
    updateTime: '2023-10-31T18:33:48.343303819Z'
    

サービスとワークロードを登録する

サービスとワークロードを登録すると、アプリケーションに追加されます。

Console

  1. Google Cloud コンソールで、App Hub の [アプリケーション] ページに移動します。

    [アプリケーション] に移動

  2. アプリケーションの名前、「Tutorial」をクリックします。 [サービスとワークロード] タブに、App Hub サービス プロジェクトに存在する登録済みのサービスとワークロードのリストが表示されます。

  3. サービスの登録:

    1. [サービスとワークロード] タブで、[サービス / ワークロードを登録] をクリックします。
    2. [サービスまたはワークロードの登録] ページの [リソースの選択] ペインで、[参照] をクリックして、サービスまたはワークロードを [リソース] として選択します。
    3. [リソースの選択] ペインで、サービスの名前l7-xlb-backend-service」を選択し、[選択] をクリックします。
    4. [リソースの選択] ペインで、リソースの名前 tutorial-service-backend を入力します。
    5. 表示名 Backend service を入力し、[続行] をクリックします。
    6. [属性を追加] ペインの [重要度] リストで、アプリケーションの重要性を示すために [] を選択します。
    7. [環境] フィールドで、ソフトウェア ライフサイクルのステージを示すために [本番環境] を選択します。
    8. [続行] をクリックします。
    9. [オーナーを追加] ペインで、デベロッパー オーナーオペレーター オーナービジネス オーナーに必要であるため、次の詳細を追加します。表示名を追加する場合は、所有者のメールアドレスを入力する必要があります。
      1. 所有者の表示名を入力します。
      2. 所有者のメールアドレスを入力します。この値は、username@yourdomain の形式(例: 222larabrown@gmail.com)にする必要があります。
    10. デベロッパー、オペレーター、ビジネス オーナーごとに、上記の手順を繰り返します。
    11. [Register] をクリックします。

    [サービスとワークロード] タブの [登録されているサービスとワークロード] セクションで、追加された新しいサービスを確認できます。

  4. 上記の手順を繰り返して、他のサービスを tutorial-service-forwarding-ruletutorial-service-url-map として登録します。

  5. 次の例外を除き、前述のサービスの登録手順を繰り返して、ワークロードを登録します。

    1. [サービスまたはワークロードの登録] ペインの [サービスまたはワークロードの選択] セクションで、ワークロードの [名前]「l7-xlb-backend-example」を選択して [続行] をクリックします。
    2. [リソースの選択] ペインで、リソースの名前 tutorial-workload-mig を入力します。
    3. 表示名 Workload instance group を入力し、[続行] をクリックします。[サービスとワークロード] タブの [登録されているサービスとワークロード] セクションで、追加された新しいワークロードを確認できます。

gcloud

  1. 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)。

  2. App Hub ホスト プロジェクトで検出されたすべてのサービスを一覧表示します。このコマンドによって、アプリケーションに登録可能なサービスが返されます。

    gcloud apphub discovered-services list \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    次のような出力が表示されます。

    ID                             SERVICE_REFERENCE                                                                                                              SERVICE_PROPERTIES
    BACKEND_SERVICE_ID          {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/backendServices/l7-xlb-backend-service'}  {'gcpProject': 'projects/SERVICE_PROJECT_ID', 'location': 'us-west1'}
    FORWARDING_RULE_SERVICE_ID" {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/forwardingRules/l7-xlb-forwarding-rule'}  {'gcpProject': 'projects/SERVICE_PROJECT_ID', 'location': 'us-west1'}
    URL_MAP_SERVICE_ID          {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/urlMaps/regional-l7-xlb-map'}             {'gcpProject': 'projects/SERVICE_PROJECT_ID', 'location': 'us-west1'}
    

    次のステップで使用するサービス IDBACKEND_SERVICE_SP2_ID など)を出力からコピーします。

  3. 前の手順で取得したサービスをアプリケーションに登録します。前の手順の出力フィールドからサービス ID をコピーします。

    gcloud apphub applications services create tutorial-service-backend \
        --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/BACKEND_SERVICE_ID' \
        --display-name='Backend service' \
        --criticality-type='HIGH' \
        --environment-type='PRODUCTION' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    
    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=us-west1
    
    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=us-west1
    

    以下を置き換えます。

    • BACKEND_SERVICE_ID: 登録するバックエンド サービスのサービス ID
    • FORWARDING_RULE_SERVICE_ID: 登録する転送ルールのサービス ID
    • URL_MAP_SERVICE_ID: 登録する URL マップのサービス ID
  4. アプリケーションに登録されたすべてのサービスを一覧表示します。

    gcloud apphub applications services list \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    次のような出力が表示されます。

    ID                               DISPLAY_NAME      SERVICE_REFERENCE                                                                                                              CREATE_TIME
    tutorial-service-backend         Backend service   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/backendServices/l7-xlb-backend-service'}  2024-02-13T00:31:45
    tutorial-service-forwarding-rule Forwarding rule   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/forwardingRules/l7-xlb-forwarding-rule'}  2024-02-13T00:31:45
    tutorial-service-url-map         URL map           {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/urlMaps/regional-l7-xlb-map'}             2024-02-13T00:31:45
    

    登録済みであるが、接続解除されているサービスは、SERVICE_REFERENCE フィールドに空の値で示されます。登録ステータスの詳細については、App Hub のプロパティと属性をご覧ください。

  5. App Hub ホスト プロジェクトで検出されたすべてのワークロードを一覧表示します。このコマンドによって、アプリケーションに登録可能なワークロードが返されます。

    gcloud apphub discovered-workloads list \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    次のような出力が表示されます。

    ID                            WORKLOAD_REFERENCE                                                                                                            WORKLOAD_PROPERTIES
    INSTANCE_GROUP_ID          {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/zones/us-west1-a/instanceGroups/l7-xlb-backend-example'}  {'gcpProject': 'projects/SERVICE_PROJECT_ID', 'location': 'us-west1', 'zone': 'us-west1-a'}
    

    出力からワークロード ID をコピーし、次の手順で使用します。

  6. 前の手順のワークロードを sample-workload としてアプリケーションに登録します。前の手順の出力フィールドからワークロード ID をコピーします。

    gcloud apphub applications workloads create tutorial-workload \
        --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/WORKLOAD_ID' \
        --display-name='Workload instance group' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    WORKLOAD_ID は、登録するワークロードの ID に置き換えます。

  7. アプリケーションに登録されているすべてのワークロードを一覧表示します。

    gcloud apphub applications workloads list \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    次のような出力が表示されます。

    ID                        DISPLAY_NAME              WORKLOAD_REFERENCE                                                                                                            CREATE_TIME
    tutorial-workload-mig     Workload instance group   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/zones/us-west1-a/instanceGroups/l7-xlb-backend-example'}  2024-02-13T00:31:45
    

    登録済みであるが、接続解除されたワークロードは、WORKLOAD_REFERENCE フィールドに空の値で示されます。登録ステータスの詳細については、App Hub のプロパティと属性をご覧ください。

すべてのサービスとワークロードを表示する

App Hub ホスト プロジェクトに接続されているサービス プロジェクトから、サービスとワークロードの詳細を表示できます。

  1. Google Cloud コンソールで、App Hub の [サービスとワークロード] ページに移動します。

    [サービスとワークロード] に移動

    接続された App Hub サービス プロジェクトのすべてのサービスとワークロードが表示されます。

  2. [リージョン] リストで [us-west1] を選択します。Workload instance group ワークロードに、[App Hub タイプ]、[重要度]、[登録先] などの詳細が表示されます。

  3. 状態に基づいてサービスまたはワークロードをフィルタするには:

    1. [フィルタ] フィールドで、[登録ステータス] などのフィルタを選択します。
    2. [登録済み] をクリックします。アプリケーションに登録されているサービスとワークロードのリストが表示されます。

アプリケーション指標を表示する

App Hub ホスト プロジェクトで作成されたアプリケーションのシステム指標を表示できます。これらの指標は、アプリケーションのパフォーマンスと健全性のモニタリングに役立つゴールデン シグナル(トラフィック、エラー、レイテンシ、飽和度)に対応しています。

  1. Google Cloud コンソールで、App Hub の [アプリケーション] ページに移動します。

    [アプリケーション] に移動

  2. アプリケーションの名前「Tutorial」をクリックします。

    [サービスとワークロード] タブに、アプリケーションに登録されているサービスとワークロードのメタデータが表示されます。

  3. 登録されたサービスとワークロードのシステム指標を表示するには、[指標] をクリックします。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

App Hub リソースを削除する

Console

  1. Google Cloud コンソールで、App Hub の [アプリケーション] ページに移動します。

    [アプリケーション] に移動

  2. アプリケーションの名前、「Tutorial」をクリックします。

  3. [サービスとワークロード] タブの [登録済みのサービスとワークロード] セクションで、サービスの名前をクリックします。

  4. [サービスとワークロード] ページで、[登録を解除する] をクリックします。

    サービスの登録が解除されたことを示すアラートが表示されます。

  5. [サービスとワークロード] タブの [登録済みのサービスとワークロード] セクションで、ワークロードの名前をクリックします。

  6. [詳細] タブで、[登録を解除する] をクリックします。

    ワークロードの登録が解除されたことを示すアラートが表示されます。

  7. App Hub の [アプリケーション] ページに移動します。

    [アプリケーション] に移動

  8. アプリケーションの名前をクリックします。

  9. [tutorial-application] ページで、[削除] をクリックします。

  10. Google Cloud コンソールで、App Hub の [設定] ページに移動します。

    [設定] に移動

  11. [設定] ページで、App Hub ホスト プロジェクトから削除するサービス プロジェクトのチェックボックスをオンにします。

  12. [プロジェクトを接続解除] をクリックします。

gcloud

  1. アプリケーションの登録済みサービスを一覧表示します。

    gcloud apphub applications services list \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=us-west1
    
  2. アプリケーションからサービスを登録解除します。

    gcloud apphub applications services delete SERVICE_NAME \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=us-west1
    

    SERVICE_NAME は、実際のサービス名に置き換えます。

    これで、アプリケーションに登録可能な検出されたサービスになります。

  3. アプリケーションの登録済みワークロードを一覧表示します。

    gcloud apphub applications workloads list \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=us-west1
    
  4. アプリケーションからワークロードの登録を解除します。

    gcloud apphub applications workloads delete WORKLOAD_NAME \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=us-west1
    

    WORKLOAD_NAME は、使用するワークロードの名前に置き換えます。

    これで、ワークロードは、アプリケーションに登録可能な検出されたワークロードになります。

  5. アプリケーションを削除します。

    gcloud apphub applications delete tutorial-application \
      --project=HOST_PROJECT_ID \
      --location=us-west1
    
  6. App Hub ホスト プロジェクトからサービス プロジェクトを削除します。

    gcloud apphub service-projects remove SERVICE_PROJECT_ID \
      --project=HOST_PROJECT_ID
    

Deployment を削除する

このソリューションが不要になった場合は、このソリューションで作成したリソースに対する課金が継続しないように、すべてのリソースを削除します。

Terraform CLI を使用してソリューションをデプロイした場合は、次の手順に沿って操作します。

  1. Cloud Shell で、現在の作業ディレクトリが terraform-docs-samples/lb/regional_external_http_load_balancer であることを確認します。そうでない場合は、そのディレクトリに移動します。

  2. Terraform によってプロビジョニングされたリソースを削除します。

    terraform destroy
    

    破棄されるリソースのリストが表示されます。

  3. アクションの実行を求められたら、「yes」と入力します。

    進行状況を示すメッセージが表示されます。すべてのリソースが削除されると、次のメッセージが表示されます。

    Destroy complete!
    

ソリューションに使用した Google Cloud プロジェクトが不要になった場合は、プロジェクトを削除できます。

プロジェクトの削除

Console

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

gcloud

Google Cloud プロジェクトを削除します。

gcloud projects delete PROJECT_ID

PROJECT_ID は、ホスト プロジェクト ID またはサービス プロジェクト ID に置き換えます。

次のステップ