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

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

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

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

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

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

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

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

如果您使用 Google Cloud CLI,請先執行下列指令,更新至最新版本,再按照本指南的說明操作:

gcloud components update

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

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

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

  • 「Newtork」(網路):共用虛擬私人雲端網路的名稱
  • 「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 主控台或 Google Cloud CLI 建立防火牆規則:

控制台

如何使用 Google Cloud 控制台建立防火牆規則:

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

    建立防火牆規則

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

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

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

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 是共用虛擬私有雲主專案的 Google Cloud 專案 ID。

設定權限

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

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

控制台

如何使用 Google Cloud 控制台設定權限:

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

    前往身分與存取權管理設定頁面

  2. 前往主專案的「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 主專案的Google Cloud 專案 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 檔案中使用「network settings」(網路設定) name 欄位,指定共用虛擬私人雲端網路的完整名稱:

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

    其中

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

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

    前往 App Engine 版本頁面

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

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