App Engine フレキシブル環境では、サービスのインスタンスをデプロイするネットワークを指定できます。このページでは、共有 VPC ネットワーク上で App Engine フレキシブル環境を使用するようにプロジェクトを構成する方法について説明します。
共有 VPC ネットワークの設定方法の詳細については、共有 VPC のプロビジョニングをご覧ください。
共有 VPC を使用する App Engine フレキシブル環境の設定
App Engine フレキシブル環境のインスタンスを共有 VPC ネットワークにデプロイするには、次の 3 つのステップが必要です。
Google Cloud CLI を使用する場合は、このガイドに進む前に、次のコマンドを実行して最新バージョンに更新してください。
gcloud components update
共有 VPC ネットワークへのトラフィックの許可
共有 VPC ネットワーク上で App Engine フレキシブル環境へのトラフィックを許可するには、共有 VPC 管理者が共有 VPC ホスト プロジェクト内でファイアウォール ルールを作成する必要があります。このファイアウォール ルールで、フレキシブル環境への配信とヘルスチェック トラフィックを許可します。
ファイアウォール ルールには次のプロパティを指定する必要があります。
- ネットワーク: 共有 VPC ネットワークの名前
- トラフィックの方向: 上り
- 一致したときのアクション: 許可
- ターゲット: 指定されたターゲットタグ
- ターゲットタグ:
aef-instance
- ソースフィルタ: IP 範囲
- ソース IP の範囲:
35.191.0.0/16
、130.211.0.0/22
- プロトコルとポート: 指定されたプロトコルとポート
- tcp: 8443、10402
共有 VPC 管理者は、Google Cloud コンソールまたは Google Cloud CLI を使用してファイアウォール ルールを作成できます。
Console
Google Cloud コンソールを使用してファイアウォール ルールを作成するには:
ファイアウォール ルールの作成ページに移動します。
[名前] フィールドと [説明] フィールドに、ファイアウォール ルールの名前と説明をそれぞれ入力します。
上記で指定したとおりに必須プロパティを入力します。
[作成] をクリックします。
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
)
Console
Google Cloud コンソールを使用して権限を設定するには:
サービス プロジェクトの IAM 設定ページに移動し、[プロジェクト番号] の値をメモします。
ホスト プロジェクトの [IAM] ページに移動します。
[追加] をクリックします。
[新しいメンバー] フィールドに、次のメールアドレスをカンマで区切って入力します。
PROJECT_NUM
の部分は、ステップ 1 で取得したプロジェクト番号に置き換えます。PROJECT_NUM@cloudservices.gserviceaccount.com
service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com
[ロールを選択] プルダウンで、[Compute Engine] > [Compute ネットワーク ユーザー] を選択します。
[保存] をクリックします。
gcloud
App Engine アプリがデプロイされているサービス プロジェクトのプロジェクト番号を取得するため、次のコマンドを実行します。
SERVICE_PROJECT_ID
の部分は、サービス プロジェクトのプロジェクト ID で置き換えます。export SERVICE_PROJECT_NUM=$(gcloud projects describe SERVICE_PROJECT_ID --format="value(projectNumber)")
サービス プロジェクトの 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 です。サービス プロジェクトの 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 ネットワークにデプロイできます。
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
サービスをデプロイします。
gcloud app deploy
構成の確認
App Engine フレキシブル環境サービスが共有 VPC ネットワークで実行されていることを確認するには、Google Cloud コンソールの [App Engine のバージョン] ページでバージョン構成を表示します。
App Engine の [バージョン] ページに移動します。
右側の [構成] 列で、目的のバージョンの [表示] をクリックします。
構成に含まれるネットワーク名が共有 VPC ネットワークの名前であることを確認します。