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

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

如要進一步瞭解如何設定共用的虛擬私人雲端網路,請參閱佈建共用虛擬私人雲端一文。

設定在共用虛擬私人雲端上運作的 App Engine 彈性環境

要在共用的虛擬私人雲端網路上部署 App Engine 彈性環境執行個體,必須執行下列三個步驟:

  1. 建立防火牆規則,允許流量進入共用虛擬私人雲端網路上的 App Engine 彈性環境

  2. 將適當權限授予共用虛擬私人雲端服務專案中的服務帳戶

  3. 設定 App Engine 服務使用共用的虛擬私人雲端網路

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

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

這項防火牆規則必須設有下列屬性:

  • Network (網路):共用虛擬私人雲端網路的名稱
  • Direction of traffic (流量方向):Ingress (輸入)
  • Action on match (相符時執行的動作):Allow (允許)
  • Targets (目標):Specified target tags (指定的目標標記)
  • 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

共用虛擬私人雲端管理員可以使用 Google Cloud Platform 主控台或 gcloud 指令列工具建立防火牆規則:

主控台

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

  1. 前往防火牆規則建立頁面。

    建立防火牆規則

  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 是共用虛擬私人雲端網路的名稱。
  • HOST_PROJECT_ID 是共用虛擬私人雲端主專案的 GCP 專案 ID。

設定權限

共用虛擬私人雲端管理員必須為以下兩個服務帳戶授予 Compute 網路使用者角色,服務專案才能在網路中部署 App Engine 彈性環境執行個體:

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

主控台

使用 GCP 主控台設定權限的步驟如下:

  1. 前往服務專案的「IAM Settings」(身分與存取權管理設定) 頁面,並記下專案編號

    前往「IAM Settings」(身分與存取權管理設定) 頁面

  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. 為服務專案的 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 是共用虛擬私人雲端主專案的 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 彈性環境服務部署至共用虛擬私人雲端網路。

  1. app.yaml 檔案中,使用網路設定name 欄位指定共用虛擬私人雲端網路的名稱 (須完全符合相關規定):

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

    其中

    • HOST_PROJECT_ID 是共用虛擬私人雲端主專案的 GCP 專案 ID。
    • NETWORK_NAME 是共用虛擬私人雲端網路的名稱。

    如要將服務設為隸屬於名為 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 主控台的 App Engine「Versions」(版本) 頁面查看版本設定:

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

    前往 App Engine 版本頁面

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

  3. 確認設定中的網路名稱與共用虛擬私人雲端網路的名稱相同。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Java 適用的 App Engine 彈性環境文件