在共用虛擬私人雲端網路上使用 App Engine 彈性環境

在 App Engine 彈性環境中,您可以指定要將服務執行個體部署至哪個網路。本頁面說明如何將專案設定為在共用虛擬私人雲端 (VPC) 網路上使用 App Engine 彈性環境。

有關如何設定共用 VPC 網路的詳情,請參閱佈建共用虛擬私人雲端一文。

設定共用 VPC 上的 App Engine 彈性環境

如要在共用 VPC 網路上部署 App Engine 彈性環境執行個體,請按照下列三個步驟操作:

  1. 建立防火牆規則,允許 App Engine 彈性環境的流量傳入共用 VPC 網路

  2. 將適當的權限授予共用 VPC 服務專案的服務帳戶

  3. 將 App Engine 服務設定為使用共用 VPC 網路

允許流量傳入共用虛擬私人雲端網路

共用虛擬私人雲端管理員必須在共用虛擬私人雲端主專案中建立防火牆規則,以允許流量傳入共用虛擬私人雲端網路上的 App Engine 彈性環境。防火牆規則會允許提供服務和進行健康狀態檢查的流量傳入彈性環境執行個體。

防火牆規則必須具備下列屬性:

  • 「Newtork」(網路):共用 VPC 網路的名稱
  • 「Direction of traffic」(流量方向):輸入
  • 「Action on match」(相符時執行的動作):允許
  • 「Target」目標:指定的目標標記
  • 「Target tags」(目標標記):aef-instance
  • 「Source filter」(來源篩選器):IP 範圍
  • 「Source IP ranges」(來源 IP 範圍):35.191.0.0/16130.211.0.0/22
  • 「Protocols and ports」(通訊協定和通訊埠):指定的通訊協定和通訊埠
    • 「TCP」:8443、10402

共用 VPC 管理員可使用 Google Cloud Platform 主控台或 gcloud 指令列工具建立防火牆規則:

主控台

如何使用 GCP 主控台建立防火牆規則:

  1. 前往「Create a firewall rule」(建立防火牆規則) 頁面。

    建立防火牆規則

  2. 在「Name」(名稱) 和「Description」(說明) 欄位中,分別輸入防火牆規則的名稱和相關說明。

  3. 填入上述內容指定的必要屬性。

  4. 按一下 [Create] (建立)

gcloud

如要使用 gcloud 指令列工具建立防火牆規則,請執行下列指令:

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 主專案的 GCP 專案 ID。

設定權限

共用 VPC 管理員必須將 Compute 網路使用者角色授予以下兩個服務帳戶,以允許服務專案將 App Engine 彈性環境執行個體部署至網路:

  • Google API 服務代理人 (PROJECT_NUM@cloudservices.gserviceaccount.com)
  • App Engine 彈性環境服務代理人 (service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com)

Console

如何使用 GCP 主控台設定權限:

  1. 前往服務專案的「IAM Settings」(IAM 設定) 頁面,記下專案編號

    前往「IAM Settings」(IAM 設定) 頁面

  2. 前往主專案的「IAM」頁面

    前往「IAM」頁面

  3. 按一下 [Add] (新增)

  4. 在「New members」(新增成員) 欄位中,輸入下列電子郵件地址,並以半形逗號分隔。接著,請將 PROJECT_NUM 替換為您在步驟 1 中取得的專案編號。

    • PROJECT_NUM@cloudservices.gserviceaccount.com
    • service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com
  5. 在「Select a role」(請選擇角色) 下拉式選單中,依序選取 [Compute Engine] > [Compute Network User] (Compute 網路使用者)

  6. 按一下 [Save] (儲存)

gcloud

  1. 找出 App Engine 應用程式部署的服務專案,並記下該專案的編號。接著,請執行下列指令,並將 SERVICE_PROJECT_ID 替換為服務專案的專案 ID:

    export SERVICE_PROJECT_NUM=$(gcloud projects describe SERVICE_PROJECT_ID --format="value(projectNumber)")
    
  2. 將主專案的 compute.networkUser 角色授予服務專案的 Google API 服務代理人:

    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 主專案的 GCP 專案 ID。

  3. 將主專案的 compute.networkUser 角色授予服務專案的 App Engine 彈性環境服務代理人:

    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 主專案的 GCP 專案 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 彈性環境服務是否在共用虛擬私人雲端網路上運作,請前往 GCP Console 的「App Engine Versions」(App Engine 版本) 頁面查看版本設定:

  1. 前往「App Engine Versions」(App Engine 版本) 頁面。

    前往「App Engine Versions」(App Engine 版本) 頁面

  2. 按一下畫面右側「Config」(設定) 欄中的 [View] (查看),以查看所需的版本。

  3. 確認設定中的網路名稱與共用 VPC 網路的名稱相同。