共有 VPC ネットワークでの App Engine フレキシブル環境の使用

App Engine フレキシブル環境では、サービスのインスタンスをデプロイするネットワークを指定できます。このページでは、共有 VPC ネットワーク上で App Engine フレキシブル環境を使用するようにプロジェクトを構成する方法について説明します。

共有 VPC ネットワークの設定方法の詳細については、共有 VPC のプロビジョニングをご覧ください。

共有 VPC を使用する App Engine フレキシブル環境の設定

App Engine フレキシブル環境のインスタンスを共有 VPC ネットワークにデプロイするには、次の 3 つのステップが必要です。

  1. 共有 VPC ネットワーク上で App Engine フレキシブル環境のトラフィックを許可するファイアウォール ルールを作成する

  2. 共有 VPC サービス プロジェクトのサービス アカウントに適切な権限を付与する

  3. 共有 VPC ネットワークを使用するように App Engine サービスを構成する

Google Cloud CLI を使用する場合は、このガイドに沿って進める前に、次のコマンドを実行して最新バージョンに更新してください。

gcloud components update

共有 VPC ネットワークへのトラフィックの許可

共有 VPC ネットワーク上で App Engine フレキシブル環境へのトラフィックを許可するには、共有 VPC 管理者が共有 VPC ホスト プロジェクト内でファイアウォール ルールを作成する必要があります。このファイアウォール ルールで、フレキシブル環境への配信とヘルスチェック トラフィックを許可します。

ファイアウォール ルールには次のプロパティを指定する必要があります。

  • ネットワーク: 共有 VPC ネットワークの名前
  • トラフィックの方向: 上り(内向き)
  • 一致したときのアクション: 許可
  • ターゲット: 指定されたターゲットタグ
  • ターゲットタグ: aef-instance
  • ソースフィルタ: IP 範囲
  • ソース IP の範囲: 35.191.0.0/16130.211.0.0/22
  • プロトコルとポート: 指定されたプロトコルとポート
    • tcp: 8443、10402

共有 VPC 管理者は、Google Cloud Console か Google Cloud CLI を使用してファイアウォール ルールを作成できます。

コンソール

Google Cloud コンソールを使用してファイアウォール ルールを作成するには:

  1. ファイアウォール ルールの作成ページに移動します。

    ファイアウォール ルールの作成

  2. [名前] フィールドと [説明] フィールドに、ファイアウォール ルールの名前と説明をそれぞれ入力します。

  3. 上記で指定したとおりに必須プロパティを入力します。

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

gcloud

Google Cloud CLI を使用してファイアウォール ルールを作成するには、次のコマンドを実行します。

gcloud compute firewall-rules create NETWORK_NAME-flex-firewall \
--project HOST_PROJECT_ID \
--network NETWORK_NAME \
--allow tcp:10402,tcp:8443 \
--target-tags aef-instance \
--source-ranges 35.191.0.0/16,130.211.0.0/22 \
--description 'Allows traffic to App Engine flexible environment'

ここで

  • NETWORK_NAME は、共有 VPC ネットワークの名前です。
  • HOST_PROJECT_ID は、共有 VPC ホスト プロジェクトの Google Cloud プロジェクト ID です。

権限の設定

サービス プロジェクトで App Engine フレキシブル環境のインスタンスをネットワークにデプロイできるようにするには、共有 VPC 管理者が次の 2 つのサービス アカウントに Compute ネットワーク ユーザーのロールを付与する必要があります。

  • Google API サービス エージェント(PROJECT_NUM@cloudservices.gserviceaccount.com
  • App Engine フレキシブル環境サービス エージェント(service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com

コンソール

Google Cloud コンソールを使用して権限を設定するには:

  1. サービス プロジェクトの IAM 設定ページに移動し、[プロジェクト番号] の値をメモします。

    IAM 設定に移動

  2. ホスト プロジェクトの [IAM] ページに移動します。

    IAM に移動

  3. [追加] をクリックします。

  4. [新しいメンバー] フィールドに、次のメールアドレスをカンマで区切って入力します。PROJECT_NUM の部分は、ステップ 1 で取得したプロジェクト番号に置き換えます。

    • PROJECT_NUM@cloudservices.gserviceaccount.com
    • service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com
  5. [ロールを選択] プルダウンで、[Compute Engine] > [Compute ネットワーク ユーザー] を選択します。

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

gcloud

  1. App Engine アプリがデプロイされているサービス プロジェクトのプロジェクト番号を取得するため、次のコマンドを実行します。SERVICE_PROJECT_ID の部分は、サービス プロジェクトのプロジェクト ID で置き換えます。

    export SERVICE_PROJECT_NUM=$(gcloud projects describe SERVICE_PROJECT_ID --format="value(projectNumber)")
    
  2. サービス プロジェクトの Google API サービス エージェントにホスト プロジェクトの compute.networkUser ロールを付与します。

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member=serviceAccount:$SERVICE_PROJECT_NUM@cloudservices.gserviceaccount.com \
    --role=roles/compute.networkUser
    

    HOST_PROJECT_ID は共有 VPC ホスト プロジェクトの Google Cloud プロジェクト ID です。

  3. サービス プロジェクトの App Engine フレキシブル環境サービス エージェントに、ホスト プロジェクトの compute.networkUser ロールを付与します。

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member=serviceAccount:service-$SERVICE_PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com \
    --role=roles/compute.networkUser
    

サービスの構成とデプロイ

ファイアウォール ルールと適切な権限を設定したら、新しいサービスまたは既存の App Engine フレキシブル環境サービスを共有 VPC ネットワークにデプロイできます。

  1. app.yaml ファイルで、ネットワーク設定name フィールドを使用して、共有 VPC ネットワークの完全修飾名を指定します。

    network:
      name: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
    

    ここで

    • HOST_PROJECT_ID は、共有 VPC ホスト プロジェクトの Google Cloud プロジェクト ID です。
    • NETWORK_NAME は、共有 VPC ネットワークの名前です。

    サービスを SUBNETWORK_NAME という名前のサブネットワークの一部として構成するには、subnetwork_name フィールドも設定します。

    network:
      name: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
      subnetwork_name: SUBNETWORK_NAME
    
  2. サービスをデプロイします。

    gcloud app deploy
    

構成の確認

App Engine フレキシブル環境サービスが共有 VPC ネットワークで実行されていることを確認するには、Google Cloud コンソールの [App Engine のバージョン] ページでバージョン構成を表示します。

  1. App Engine の [バージョン] ページに移動します。

    [App Engine のバージョン] に移動

  2. 右側の [構成] 列で、目的のバージョンの [表示] をクリックします。

  3. 構成に含まれるネットワーク名が共有 VPC ネットワークの名前であることを確認します。