App Hub を設定する

このドキュメントでは、Google Cloud でアプリケーションをビルド、運用、管理するために App Hub を設定する手順について説明します。このドキュメントは、App Hub を設定して管理するユーザーを対象としています。

App Hub を設定する場合、主なタスクは次のとおりです。

  1. 新しい App Hub ホスト プロジェクトを作成するか、既存のプロジェクトをホスト プロジェクトとして使用するかを決定します。
    • 複数のホスト プロジェクトを作成する予定の場合は、同じフォルダに作成することを強くおすすめします。
    • App Hub のホスト プロジェクトは、共有 VPC ホスト プロジェクトと同じではなく、要件が同じではありません。たとえば、App Hub を使用するために共有 VPC ネットワークは必要ありません。このドキュメントでは、ホスト プロジェクトへの参照はすべて、App Hub のホスト プロジェクトを意味します。
    • ホスト プロジェクトは、それ自体以外のサービス プロジェクトにできません。
  2. ホスト プロジェクトで App Hub API を有効にします。
  3. 1 つ以上の App Hub サービス プロジェクトをホスト プロジェクトに追加します。
    • App Hub のサービス プロジェクトは、共有 VPC サービス プロジェクトと同じではなく、要件が同じではありません。このドキュメントでは、サービス プロジェクトへの参照はすべて、App Hub サービス プロジェクトを意味します。
  4. App Hub ユーザーを App Hub 管理者、App Hub 編集者、または App Hub 閲覧者として指定します。
  5. アプリケーションを作成します。
  6. アプリケーションにサービスとワークロードを登録します。

サービスとワークロード

App Hub を使用すると、ホスト プロジェクトに接続されているサービス プロジェクトのリソースを、サービスとワークロードとして利用できます。サービスとワークロードをアプリケーションに登録すると、リソースの観察とモニタリングが可能になります。次のリソースを App Hub サービスとして指定し、App Hub アプリケーションに登録できます。

  • 転送ルール
  • URL マップ
  • バックエンド サービス

マネージド インスタンス グループ(MIG)は、個々の VM ではなくワークロードとして指定し、App Hub アプリケーションに登録できます。

App Hub は、HTTP または HTTPS トラフィックを使用するリージョン L7 外部および内部アプリケーション ロードバランサをサポートします。

登録するワークロードとサービスは、アプリケーションと同じリージョンに存在する必要があります。したがって、以下の手順とコマンドでは、すべてのリソースが同じリージョンにあることを前提としています。指定できるリージョンについては、ロケーションをご覧ください。

全体的な設定プロセス

App Hub を設定する手順は次のとおりです。

  1. アプリケーションに含める既存のリソースと、それらが属するプロジェクトを決定します
  2. App Hub ホスト プロジェクトを作成し、プロジェクトで App Hub API を有効にします。必要に応じて、ビジネスの組織構造に基づいて、複数のホスト プロジェクトを作成します。複数のプロジェクトを作成する場合は、新しいフォルダ内に作成することをおすすめします。
  3. サービス プロジェクトを接続します。ホスト プロジェクトを構成したら、アプリケーションに必要な基盤となるリソースを持つサービス プロジェクトをホスト プロジェクトに接続します。次の点にご注意ください。
    1. サービス プロジェクトは、ホスト プロジェクトと同じ組織に存在する必要があります。サービス プロジェクトをホスト プロジェクトに接続した後で、別の組織に移動することはできません。サービス プロジェクトを別の組織に移動するには、このドキュメントの手順に沿って、ホスト プロジェクトへのサービス プロジェクトの接続を削除または解除する必要があります。その後、サービス プロジェクトを別の組織に接続できます。
    2. 1 つのサービス プロジェクトを複数のホスト プロジェクトに接続することはできません。
    3. ホスト プロジェクトは、独自のサービス プロジェクトにできますが、他のホスト プロジェクトのサービス プロジェクトにすることはできません。
    4. サービス プロジェクトをホスト プロジェクトに接続した後は、ホスト プロジェクトにサービスまたはワークロードのクエリを実行すると、すべてのサービス プロジェクトのすべてのサービスとワークロードが自動的に返されるようになります。
  4. 複数のワークロードとサービスを整理するアプリケーションを作成します。 次の点にご注意ください。
    1. アプリケーションの名前が、ホスト プロジェクトとロケーションで一意であることを確認してください。
    2. サービス プロジェクトは、複数のアプリケーションでホスト プロジェクトに接続できますが、個々のリソースは 1 つのアプリケーションにのみ登録できます。
  5. サービスとワークロードをクエリし、アプリケーションに登録します。アプリケーションを作成したら、ホスト プロジェクトに対して使用可能なサービスとワークロードをクエリしてください。クエリは、ホスト プロジェクトと、そのホスト プロジェクトに接続されたすべてのサービス プロジェクトに対して実行されます。また、それらのプロジェクト内のすべてのサービスとワークロードも返されます。次の点にご注意ください。
    1. サービスやワークロードは 1 つのアプリケーションにのみ登録できます。
    2. 登録するワークロードとサービスは、アプリケーションと同じリージョンに存在する必要があります。
    3. 登録されたサービスとワークロードは、基盤となるインフラストラクチャ リソースの更新の影響を受けません。つまり、サービスとワークロードとして機能する基盤となるリソースを削除しても、App Hub によって関連するワークロードとサービスがアプリケーションから削除されることはありません。ワークロードまたはサービスを個別に登録解除する必要があります。

前提条件

App Hub を設定する前に、次のタスクを行ってください。

  1. ホスト プロジェクトにする既存のプロジェクトを決定するか、新しいプロジェクトを作成します。新しいプロジェクトを作成することを強くおすすめします。
  2. App Hub の Identity and Access Management(IAM)ロール(App Hub 管理者、App Hub 編集者、App Hub 閲覧者)を持つユーザーが決定されていることを確認します。

次の点にご注意ください。

  • ホスト プロジェクトには、1 つ以上のサービス プロジェクトを接続できます。
  • 1 つのサービス プロジェクトを複数のホスト プロジェクトに接続することはできません。
  • サービス プロジェクトをホスト プロジェクトに接続するユーザーには、サービス プロジェクトとホスト プロジェクトの両方での App Hub 管理者の IAM ロールが必要です。詳細については、App Hub のロールと権限をご覧ください。

App Hub を設定する

このセクションでは、サンプルの App Hub アーキテクチャを作成します。

この例では、組織に 3 つのサービス プロジェクトがあり、インフラストラクチャ リソースが次のようにプロジェクトにデプロイされています。

  • サービス プロジェクト 1 には、サービス 1 とサービス 2 の 2 つのインフラストラクチャ リソースがあります。
  • サービス プロジェクト 2 には、サービス 3、ワークロード 1、ワークロード 2 の 3 つのインフラストラクチャ リソースがあります。
  • サービス プロジェクト 3 には、サービス 4、ワークロード 3、ワークロード 4 の 3 つのインフラストラクチャ リソースがあります。

サンプルの作成に選択したプロジェクトに、このセクションで説明するリソースが含まれていることを確認するか、手順に沿ってサンプルを調整できるように準備してください。

以降のセクションでは、App Hub のサンプルを作成する手順について説明します。ホスト プロジェクトを作成してサービス プロジェクトをホスト プロジェクトに追加し、次にアプリケーションを作成してサービスとワークロードをアプリケーションに接続します。この例では 3 つのサービス プロジェクトがありますが、追加するサービス プロジェクトは増減できます。

この例では、追加するサービス プロジェクトがすでに存在し、アプリケーションに追加するサービスとワークロードが含まれていることを前提としています。サンプルを作成する前に、アプリケーションに含めるサービスとワークロードをどのサービス プロジェクトに含めるかを決定します。

App Hub を有効にする

このセクションでは、新しいホスト プロジェクトを選択または作成し、App Hub API を有効にして、組織内のユーザーに適切なロールと権限を付与します。また、サービス プロジェクトをホスト プロジェクトに接続します。

コンソール

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

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

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

  3. 必要な API を有効にします。

    API を有効にする

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

    プロジェクト作成者でない場合は、プロジェクトで必要な権限を適切なプリンシパルに付与する必要があります。たとえば、プリンシパルは Google アカウント(エンドユーザーの場合)やサービス アカウント(アプリケーションとコンピューティング ワークロードの場合)になることもあります。このチュートリアルを完了するために必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。

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

      [IAM] に移動

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

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

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

    5. App Hub 管理者のロールを選択し、[保存] をクリックします。

    6. 各 App Hub サービス プロジェクトで、App Hub 管理者のロールを同じユーザーに付与します。

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

    [設定] に移動

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

  7. 次のいずれかを行います。

    • プロジェクトのリストで、サービス プロジェクトとして追加するプロジェクトのチェックボックスをオンにします。
    • プロジェクトを検索し、サービス プロジェクトとして追加するプロジェクトを選択します。
  8. [選択] をクリックします。 [接続されたサービス プロジェクト] テーブルに、選択したサービス プロジェクトが表示されます。

  9. [Close] をクリックします。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  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. 作成したホスト プロジェクトで App Hub API を有効にします。

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

    プロジェクト作成者でない場合は、プロジェクトで必要な権限を適切なプリンシパルに付与する必要があります。たとえば、プリンシパルは Google アカウント(エンドユーザーの場合)やサービス アカウント(アプリケーションとコンピューティング ワークロードの場合)になることもあります。このチュートリアルを完了するために必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。

    1. 必要に応じて、App Hub を管理するユーザーにホスト プロジェクトの 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 です(例: robert.smith@example.com)。

    2. App Hub を管理するユーザーに、サービス プロジェクトの App Hub 管理者ロールを付与します。サービス プロジェクトをホスト プロジェクトに追加するには、App Hub 管理者のロールが必要です。このロールを持つユーザーは、サービス プロジェクトごとに 1 人以上必要です。1 人のユーザーが複数のサービス プロジェクトでロールを持つことができます。

      gcloud projects add-iam-policy-binding SERVICE_PROJECT_1 \
          --member='user:HOST_PROJECT_ADMIN' \
          --role='roles/apphub.admin'
      
      gcloud projects add-iam-policy-binding SERVICE_PROJECT_2 \
          --member='user:HOST_PROJECT_ADMIN' \
          --role='roles/apphub.admin'
      
      gcloud projects add-iam-policy-binding SERVICE_PROJECT_3 \
          --member='user:HOST_PROJECT_ADMIN' \
          --role='roles/apphub.admin'
      

      次のように置き換えます。

      • SERVICE_PROJECT_1: この例の 3 つのサービス プロジェクトのうち最初のプロジェクト。
      • SERVICE_PROJECT_2: この例の 3 つのサービス プロジェクトのうち 2 番目のプロジェクト。
      • SERVICE_PROJECT_3: この例の 3 つのサービス プロジェクトのうちの 3 番目のプロジェクト。
  6. App Hub ホスト プロジェクトにサービス プロジェクトを追加します。

    gcloud apphub service-projects add SERVICE_PROJECT_1 \
        --project=HOST_PROJECT_ID
    
    gcloud apphub service-projects add SERVICE_PROJECT_2 \
        --project=HOST_PROJECT_ID
    
    gcloud apphub service-projects add SERVICE_PROJECT_3 \
        --project=HOST_PROJECT_ID
    

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

サービスとワークロードのコンテナとなるアプリケーションをまだ作成していない場合は、作成します。

コンソール

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

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

  3. [アプリケーションを作成] をクリックします。 [アプリケーションの作成] ペインが表示されます。

  4. リージョンを選択します。

  5. [アプリケーション名] を入力し、[続行] をクリックします。

  6. [属性を追加] セクションで [表示名] を入力します。

  7. 必要に応じて、後続のフィールドにアプリケーションの詳細を追加します。詳しくは、このドキュメントの既存の App Hub アプリケーションを更新するをご覧ください。

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

gcloud

  1. APPLICATION_NAME という名前の新しいアプリケーションを作成し、表示名 APPLICATION_DISPLAY_NAME を設定します。--scope-type フラグは、アプリケーションに登録できるサービスとワークロードを定義します。REGIONAL のみがサポートされています。つまり、アプリケーションと同じリージョンのサービスとワークロードのみを登録できます。

    gcloud apphub applications create APPLICATION_NAME \
      --display-name='APPLICATION_DISPLAY_NAME' \
      --scope-type=REGIONAL \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    次のように置き換えます。

    • APPLICATION_NAME: アプリケーションの名前。 名前にはスペースを含まない小文字の英数字を使用する必要があります。
    • APPLICATION_DISPLAY_NAME: アプリケーションの表示名。
    • REGION: アプリケーションのリージョン。この値は us-east1 とします。
  2. ホスト プロジェクト内のアプリケーションを一覧表示します。

    gcloud apphub applications list \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    出力は次のようになります。

    ID: APPLICATION_NAME
    DISPLAY_NAME: APPLICATION_DISPLAY_NAME
    CREATE_TIME: 2023-10-31T18:33:48
    
  3. 作成したアプリケーションの詳細を取得します。

    gcloud apphub applications describe APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    このコマンドは、次のような YAML 形式の情報を返します。

    createTime: '2023-10-31T18:33:48.199394108Z'
    displayName: APPLICATION_DISPLAY_NAME
    name: projects/HOST_PROJECT_ID/locations/REGION/applications/APPLICATION_NAME
    scope:
      type: REGIONAL
    state: ACTIVE
    uid: [APPLICATION_UID]
    updateTime: '2023-10-31T18:33:48.343303819Z'
    
    

既存の App Hub アプリケーションを更新する

アプリケーションの作成後にアプリケーションの属性を更新することもできます。

コンソール

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

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

  2. アプリケーションの一覧で、更新するアプリケーションの [編集] をクリックします。

  3. 必要に応じてフィールドを編集し、[保存] をクリックします。

  4. 省略可: アプリケーションの重要性を示す [重要度] リストで、次のいずれかを選択します。

    • ミッション クリティカル
  5. 省略可: [環境] フィールドで、ソフトウェア ライフサイクルのステージを示すために、次のいずれかを選択します。

    • 本番環境
    • ステージング環境
    • 開発環境
    • テスト
  6. 省略可: デベロッパー オーナーオペレーター オーナービジネス オーナーに必要であるため、次の詳細を追加します。表示名を追加する場合は、所有者のメールアドレスを入力する必要があります。

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

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

gcloud

  1. criticality-typeenvironment-type、owner type の各属性でアプリケーションを更新します。

    gcloud apphub applications update APPLICATION_NAME \
      --criticality-type='CRITICALITY_LEVEL' \
      --environment-type='ENVIRONMENT' \
      --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=REGION
    

    次のように置き換えます。

    • CRITICALITY_LEVEL: ビジネス運営におけるアプリケーション、サービス、ワークロードの重要度を示します。次のいずれかの値を指定します。
      • MISSION_CRITICAL
      • HIGH
      • MEDIUM
      • LOW
    • ENVIRONMENT: ソフトウェア ライフサイクルのステージを示します。次のいずれかの値を指定します。
      • PRODUCTION
      • STAGING
      • DEVELOPMENT
      • TEST
    • DISPLAY-NAME-DEVELOPERDISPLAY-NAME-OPERATORDISPLAY-NAME-BUSINESS: それぞれ、デベロッパー、オペレーター、ビジネス オーナーの表示名。
    • EMAIL-NAME-DEVELOPEREMAIL-NAME-OPERATOREMAIL-NAME-BUSINESS: それぞれ、デベロッパー、オペレーター、ビジネス オーナーのメールアドレス。これらの値は、username@yourdomain の形式にする必要があります(例: robert.smith@example.com)。
  2. 属性 environment-type の値が PRODUCTION のアプリケーションを一覧表示します。

    gcloud apphub applications list \
        --filter='attributes.environment.type=PRODUCTION' \
        --project=HOST_PROJECT_ID \
        --location=REGION
    

    出力は次のようになります。

    ID: APPLICATION_NAME
    DISPLAY_NAME: APPLICATION_DISPLAY_NAME
    CREATE_TIME: 2023-10-31T18:33:48
    

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

インフラストラクチャ サービスとワークロードをアプリケーションに登録すると、サービスとワークロードが App Hub リソースとして登録されます。プレースホルダを使用して gcloud CLI でアプリケーションを作成する場合、3 つのサービス プロジェクトのサービスとワークロードは次のようになります。

  • サービス プロジェクト 1 には、サービス 1 とサービス 2 の 2 つのインフラストラクチャ リソースがあります。
  • サービス プロジェクト 2 には、サービス 3、ワークロード 1、ワークロード 2 の 3 つのインフラストラクチャ リソースがあります。
  • サービス プロジェクト 3 には、サービス 4、ワークロード 3、ワークロード 4 の 3 つのインフラストラクチャ リソースがあります。

コンソール

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

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

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

  3. 登録するサービスまたはワークロードごとに、次の操作を行います。

    1. [サービスとワークロード] タブで、[サービス / ワークロードを登録] をクリックします。
    2. [サービスまたはワークロードの登録] ペインの [サービスまたはワークロードの選択] セクションで、サービスまたはワークロードを選択して [続行] をクリックします。
    3. [属性を追加] セクションで、サービスまたはワークロードの名前を入力します。
    4. 必要に応じて、以下のフィールドにサービスまたはワークロードの詳細を追加します。詳しくは、このドキュメントの既存の App Hub アプリケーションを更新するをご覧ください。[重要度] フィールドと [環境] フィールドに指定された値のいずれかを指定する必要がありますが、この値は、アプリケーションの作成時に設定した値とは異なる場合があります。
    5. [Register] をクリックします。
    6. ページを更新して、サービスまたはワークロードの [登録ステータス] が [登録済み] に更新されたことを確認します。登録ステータスの詳細については、App Hub のプロパティと属性をご覧ください。

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 編集者のロールを持つユーザーに置き換えます。この値の形式は username@yourdomain です(例: robert.smith@example.com)。

  2. ホスト プロジェクトに接続されているサービス プロジェクト 2 から検出されたワークロードを一覧表示します。このコマンドは、アプリケーションに登録可能なワークロードを返します。

    gcloud apphub discovered-workloads list \
      --filter='workload_properties.gcp_project=projects/SERVICE_PROJECT_2' \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    未登録の MIG を含む出力は次のようになります。

    ID: [DISCOVERED_WORKLOAD_ID_1]
    WORKLOAD_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-1'}
    WORKLOAD_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_2', 'location': 'REGION'}
    
    ID: [DISCOVERED_WORKLOAD_ID_2]
    WORKLOAD_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-2'}
    WORKLOAD_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_2', 'location': 'REGION'}
    

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

  3. 前の手順で作成したワークロードをアプリケーションに登録します。

    gcloud apphub applications workloads create WORKLOAD_NAME \
      --discovered-workload='projects/HOST_PROJECT_ID/locations/REGION/discoveredWorkloads/DISCOVERED_WORKLOAD_ID_2' \
      --display-name='mywebserver-deployment1' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    次のように置き換えます。

    • WORKLOAD_NAME: ワークロードを登録するときの名前。
    • DISCOVERED_WORKLOAD_ID_2: 前の手順の出力のワークロード ID。
  4. 前の 2 つのステップを繰り返して、サービス プロジェクト 3 から必要なワークロードをフィルタして登録します。

  5. 省略可: criticality-typeenvironment-type、オーナー属性を使用してワークロードを更新できます。

    gcloud apphub applications workloads update WORKLOAD_NAME \
      --application=APPLICATION_NAME \
      --criticality-type='CRITICALITY_LEVEL' \
      --environment-type='ENVIRONMENT' \
      --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=REGION
    

    criticality-typeenvironment-type に指定された値のいずれかを指定する必要がありますが、この値はアプリケーションの作成時に設定した値とは異なる場合があります。

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

    gcloud apphub applications workloads list \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    出力は次のようになります。

    ID: WORKLOAD_NAME
    DISPLAY_NAME: mywebserver-deployment1
    WORKLOAD_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-2'}
    CREATE_TIME: 2023-10-31T18:34:23
    

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

  7. ホスト プロジェクトに接続されているサービス プロジェクト 1 の転送ルールを使用して、検出されたサービスを一覧表示します。このコマンドによって、アプリケーションに登録可能なサービスが返されます。

    gcloud apphub discovered-services list \
      --filter='service_properties.gcp_project=projects/SERVICE_PROJECT_1 AND service_reference.uri~"forwardingRules"' \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    出力は次のようになります。

    ID: [DISCOVERED_SERVICE_ID_1]
    SERVICE_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-1'}
    SERVICE_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_1', 'location': 'REGION'}
    
    ID: [DISCOVERED_SERVICE_ID_2]
    SERVICE_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-2'}
    SERVICE_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_1', 'location': 'REGION'}
    

    出力からサービス ID DISCOVERED_SERVICE_ID_2 をコピーして、次の手順で使用します。

  8. 転送ルール testing-forwarding-rule-2 をサービス プロジェクト 1 にサービスとして登録します。

    gcloud apphub applications services create SERVICE_NAME \
      --discovered-service='projects/HOST_PROJECT_ID/locations/REGION/discoveredServices/DISCOVERED_SERVICE_ID_2' \
      --display-name='mywebserver-service1' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    次のように置き換えます。

    • SERVICE_NAME: サービスを登録するときの名前。
    • DISCOVERED_SERVICE_ID_2: 前の手順の出力のサービス ID。
  9. 上記の手順を繰り返して、サービスを一覧表示し、これらのサービスをフィルタリングして、サービス プロジェクト 1、2、3 にサービスを登録します。

  10. criticality-type 属性と environment-type 属性でサービスを更新します。

    gcloud apphub applications services update SERVICE_NAME \
      --criticality-type='CRITICALITY_LEVEL' \
      --environment-type='ENVIRONMENT' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID  \
      --location=REGION
    
  11. APPLICATION_NAME アプリケーションと HOST_PROJECT_ID ホスト プロジェクトの登録済みサービスを一覧表示します。

    gcloud apphub applications services list \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    各サービスの出力は、次のようになります。

    ID: SERVICE_NAME
    DISPLAY_NAME: mywebserver-service1
    SERVICE_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-2'}
    CREATE_TIME: 2023-11-01T21:38:08
    

    登録済みであるが、接続解除されているサービスは、SERVICE_REFERENCE フィールドに空の値で示されます。

  12. APPLICATION_NAME アプリケーションと HOST_PROJECT_ID ホスト プロジェクト内のサービスを、environment-type 属性が PRODUCTION に設定されているものにフィルタリングします。

    gcloud apphub applications services list \
      --filter='attributes.environment.type=PRODUCTION' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

App Hub の設定プロセスが完了しました。

サービス プロジェクトを追加または削除する

サービス プロジェクトの接続を変更して、さまざまなインフラストラクチャ リソースをアプリケーションにグループ化して使用できます。

コンソール

サービス プロジェクトをホスト プロジェクトに追加するには、次のようにします。

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

    [設定] に移動

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

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

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

  5. [Close] をクリックします。

ホスト プロジェクトからサービス プロジェクトを削除するには:

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

    [設定] に移動

  2. [設定] ページで、サービス プロジェクトとして削除するプロジェクトのチェックボックスをオンにします。

  3. [プロジェクトを接続解除] をクリックします。[接続されたサービス プロジェクト] テーブルが更新され、ホスト プロジェクトに接続されたプロジェクトのみが表示されます。

gcloud

サービス プロジェクトをホスト プロジェクトに追加するには、次のようにします。

gcloud apphub service-projects add SERVICE_PROJECT_ID \
   --project=HOST_PROJECT_ID
SERVICE_PROJECT_ID は、ホスト プロジェクトに追加するサービス プロジェクトの名前に置き換えます。ホスト プロジェクトからサービス プロジェクトを削除するには:
gcloud apphub service-projects remove SERVICE_PROJECT_ID \
   --project=HOST_PROJECT_ID

既存のアプリケーション、サービス、ワークロードを表示する

プロジェクト内のアプリケーションを表示したり、アプリケーション内のサービスとワークロードを一覧表示したりできます。

コンソール

  • プロジェクト内のアプリケーションを表示するには、Google Cloud コンソールで App Hub の [アプリケーション] ページに移動します。

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

  • サービスとワークロードを一覧表示するには:

    アプリケーション

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

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

    2. アプリケーションの名前をクリックします。アプリケーションに登録されているサービスとワークロードのリストが記載されたページが表示されます。

    3. 省略可: サービスまたはワークロードをフィルタするには:

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

    サービスとワークロード

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

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

    2. [リージョン] リストで、サービスとワークロードを表示するリージョンを選択します。たとえば、us-east1 を選択します。
      [サービスとワークロード] ページには、us-east1 に関連付けられた、接続済みのサービス プロジェクトのすべてのサービスとワークロードが表示されます。

    3. 省略可: サービスまたはワークロードをフィルタするには:

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

gcloud

プロジェクト内のアプリケーションを表示するには:

gcloud apphub applications list \
    --project=HOST_PROJECT_ID \
    --location=REGION

アプリケーション内の登録済みサービスを一覧表示するには:

gcloud apphub applications services list \
    --application=APPLICATION_NAME \
    --project=HOST_PROJECT_ID \
    --location=REGION

アプリケーション内の登録済みワークロードを一覧表示するには:

gcloud apphub applications workloads list \
    --application=APPLICATION_NAME \
    --project=HOST_PROJECT_ID \
    --location=REGION

クリーンアップ

既存のアプリケーションをクリーンアップし、ホスト プロジェクトからサービス プロジェクトの接続を削除して、プロジェクトに関連するリソースを削除します。これにより、サービス プロジェクトのリソースの自動検出が停止します。

これを行うには、まず、アプリケーションに登録されているワークロードとサービスを削除する必要があります。

コンソール

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

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

  2. アプリケーションの名前をクリックします。アプリケーションに登録されているサービスとワークロードのリストが表示されます。

  3. サービスまたはワークロードの登録を解除します。

    1. [サービスとワークロード] タブの [登録済みのサービスとワークロード] セクションで、登録解除するサービスまたはワークロードの名前をクリックします。
    2. 登録されたサービスまたはワークロードに対して開いたページで、[登録解除] をクリックして、サービスまたはワークロードを [検出済み] リソースとして更新します。
      [サービスとワークロード] タブに、ワークロードが登録されていないことが通知されるアラートが表示されます。
    3. サービスとワークロードごとに、この手順を繰り返します。
  4. App Hub の [アプリケーション] ページに移動します。

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

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

  6. アプリケーションの詳細が表示されているページで [削除] をクリックします。

  7. このドキュメントでは、サービス プロジェクトの追加や削除の手順に沿って、ホスト プロジェクトからサービス プロジェクトを削除します。

gcloud

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

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

    gcloud apphub applications workloads delete WORKLOAD_NAME \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

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

  3. 先ほどのコマンドを繰り返して、残りの登録済みワークロードをアプリケーションから削除します。

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

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

    gcloud apphub applications services delete SERVICE_NAME \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    これで、サービスが検出されたサービスになり、アプリケーションに登録できるようになりました。

  6. 上記のコマンドを繰り返して、残りの登録済みサービスをアプリケーションから登録解除します。

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

    gcloud apphub applications delete APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    
  8. ホスト プロジェクトからサービス プロジェクトを削除します。

    gcloud apphub service-projects remove SERVICE_PROJECT_ID \
      --project=HOST_PROJECT_ID
    
  9. ホスト プロジェクトからすべてのサービス プロジェクトを削除するには、前述のコマンドを繰り返します。

次のステップ