設定私人專屬服務

本頁面說明如何設定,讓 App Engine 彈性環境服務只在其內部 IP 位址上公開。

根據預設,彈性環境服務在首次部署時會同時收到內部 IP 位址和臨時外部 IP 位址。使用暫時性外部 IP 位址可讓服務將要求傳送至具有自訂網域的 App Engine 服務,以及網際網路上的資源。臨時外部 IP 位址會產生費用

如果您的服務不需要外部 IP 位址,您可以限制服務僅使用內部 IP 位址,藉此防止服務傳送要求至網際網路上的資源,並降低成本。這不會阻止服務接收來自網際網路或具有自訂網域的 App Engine 服務的要求,因為服務的完整網域名稱仍會對外公開。

限制

停用臨時外部 IP 位址時,會受到以下限制:

  • 含有自訂網域的服務:如要將要求傳送至含有自訂網域的 App Engine 服務,您必須設定 Cloud NAT
  • 外部資源:如要傳送要求至外部資源,您必須設定 Cloud NAT
  • 私人 Google 存取權依附元件:如果執行個體的 IP 模式設為 internal,則需要在目標子網路上設定私人 Google 存取權
  • 舊版網路: 舊版網路無法使用私人 Google 存取權,因此無法停用暫時性外部 IP 位址。

事前準備

如要部署沒有外部 IP 位址的彈性環境應用程式,您必須在目標子網路上啟用私人 Google 存取權。

準備共用虛擬私有雲網路

如果您使用共用虛擬私有雲,請按照下列步驟準備共用虛擬私有雲網路,以便進一步設定。

  1. 確認您有與私人 Google 存取權相容的路線。通常,網路的預設路徑與私人 Google 存取權相容。針對其他路線,請確認路線的設定如下:

    Network: SHARED_VPC_NETWORK_NAME
    Destination IP address range: 0.0.0.0/0
    Instance tags: INSTANCE_TAGS
    Next hop: DEFAULT_INTERNET_GATEWAY
    

    更改下列內容:

    • SHARED_VPC_NETWORK_NAME:共用虛擬私有雲網路的名稱。
    • INSTANCE_TAGS:如果您不使用任何執行個體標記,請不要在這個欄位中指定任何項目。如果您使用執行個體標記,請在執行個體標記清單中加入 aef-instances
    • DEFAULT_INTERNET_GATEWAY:預設的網際網路閘道。

    如要進一步瞭解私人 Google 存取權支援的路徑,請參閱私人 Google 存取權說明文件中的路徑選項

  2. 確認您有與私人 Google 存取權相容的防火牆規則。防火牆規則必須設為以下方式。

    Network: SHARED_VPC_NETWORK_NAME
    Destination IP address range: 0.0.0.0/0
    Destination filter: IP ranges
    Direction of traffic: Egress
    Attach on match: Allow
    Instance tags: INSTANCE_TAGS
    

    更改下列內容:

    • SHARED_VPC_NETWORK_NAME:共用虛擬私有雲網路的名稱。
    • INSTANCE_TAGS:如果您不使用任何執行個體標記,請勿在這個欄位中指定任何項目。如果您使用執行個體標記,請在執行個體標記清單中加入 aef-instances

    如要進一步瞭解私人 Google 存取權的相容防火牆規則,請參閱私人 Google 存取權的防火牆設定說明文件。

設定服務只使用內部 IP 位址

  1. 更新 Google Cloud CLI。這樣就能確保您使用的是支援彈性環境應用程式私人 IP 位址的 gcloud CLI 版本。

    gcloud components update
  2. app.yaml 檔案中,將 instance_ip_mode 欄位新增至 network 區段,並將其設為 internal

    • 如果 app.yaml 檔案已包含 network 區段,請在 network 區段中新增以下行:

      instance_ip_mode: internal

    • 如果 app.yaml 檔案沒有 network 區段,請建立該區段,並新增下列行來指定執行個體 IP 模式:

      network:
       instance_ip_mode: internal

    儲存變更。

  3. 部署服務。

    gcloud beta app deploy
  4. 如要驗證設定,請查看 Google Cloud 控制台的「Instances」頁面。

    前往「Instances」(執行個體)

    向下捲動至「Instances」表格 (位於「Summary」圖表下方)。在「外部 IP」欄中,確認沒有列出任何 IP 位址。如果這個欄沒有 IP 位址,表示執行個體沒有外部 IP 位址。即使這個欄位為空白,執行個體仍會有內部 IP 位址。

傳送不含外部 IP 位址的外部要求

如果您的服務會傳送要求至網際網路,但您希望限制服務只能使用內部 IP 位址,可以使用 Cloud NAT 建立閘道。您的服務可以透過 Cloud NAT 閘道傳送外部要求,而不需要使用預設的暫時性外部 IP 位址。

  1. 請按照「設定服務僅使用內部 IP 位址」一節中的步驟操作。

  2. 請按照這篇文章的步驟設定 Cloud NAT。

如要進一步瞭解這種做法,請參閱 Cloud Architecture Center 說明文件,瞭解如何部署 Cloud NAT 以便擷取資料