佈建共用虛擬私有雲

共用虛擬私有雲可讓您將「主專案」中「虛擬私有雲 (VPC) 網路」的子網路匯出至同一個「機構」中的其他「服務專案」。服務專案中的執行個體可以使用主專案共用子網路中的網路連線。本頁說明如何設定及使用共用 VPC,包括機構的必要管理準備工作。

共用虛擬私有雲支援匯出任何堆疊類型的子網路。

如要瞭解如何分離服務專案或完全移除共用虛擬私有雲設定,請參閱「取消佈建共用虛擬私有雲」。

共用虛擬私有雲在 API 和指令列介面中也稱為「XPN」。

配額、限制和符合資格的資源

開始前,請務必熟悉共用虛擬私有雲IAM,尤其是:

執行貴機構準備作業

準備機構時,請注意下列資訊。

管理員和身分與存取權管理

執行貴機構準備作業、設定共用虛擬私有雲主專案以及使用共用虛擬私有雲網路,這些工作需要至少三種不同管理層級的身分與存取權管理 (IAM) 角色。如要進一步瞭解各個角色,以及選用角色的相關資訊,請參閱共用虛擬私有雲總覽的「管理員和身分與存取權管理」一節。

機構政策限制

機構政策限制可在專案、資料夾或機構層級保護共用 VPC 資源。以下各節說明各項政策。

避免主專案遭到誤刪

主專案遭到誤刪時,會導致其中附加的所有服務專案中斷。如果您將某專案設為共用虛擬私有雲主專案,系統會為這個專案啟用名為「防刪除鎖定」的特殊鎖定功能。只要有防刪除鎖定,就能防止專案遭到意外刪除。當您為主專案解除共用虛擬私有雲設定時,系統則會自動移除防刪除鎖定功能。

具有 orgpolicy.policyAdmin 角色的使用者可以定義機構層級的政策限制 (constraints/compute.restrictXpnProjectLienRemoval),將防刪除鎖定的移除權限限制為僅限下列角色:

  • 具備機構層級 roles/ownerroles/resourcemanager.lienModifier 的使用者
  • 在機構層級具備自訂角色,且角色包含 resourcemanager.projects.get resourcemanager.projects.updateLiens 權限的使用者

這麼做可有效避免未具備機構層級 roles/owner 角色或機構層級 resourcemanager.lienModifier 角色的專案擁有者,意外刪除共用虛擬私有雲主專案。如要進一步瞭解與 resourcemanager.lienModifier 角色相關聯的權限,請參閱 Resource Manager 說明文件中的「設定專案防刪除鎖定功能」一節。

機構政策會套用至機構中的所有專案,因此您只需按照以下步驟操作一次,即可限制防刪除鎖定的移除作業。

  1. 以具備 orgpolicy.policyAdmin 角色的機構管理員或身分與存取權管理主體身分,進行 gcloud 驗證,將 ORG_ADMIN 替換為機構管理員名稱:

    gcloud auth login ORG_ADMIN
    
  2. 依照這個指令的輸出結果判定您的機構 ID 編號。

    gcloud organizations list
    
  3. 執行這個指令,強制執行貴機構的 compute.restrictXpnProjectLienRemoval 政策,將 ORG_ID 替換為上一步判定的編號。

    gcloud resource-manager org-policies enable-enforce \
        --organization ORG_ID compute.restrictXpnProjectLienRemoval
    
  4. 以機構管理員身分完成上述工作後,請登出 gcloud,以利保障帳戶安全。

    gcloud auth revoke ORG_ADMIN
    

限制附加的主專案

根據預設,共用虛擬私有雲管理員可將非主專案附加至相同機構中的任何主專案。組織政策管理員可以限制一組主機專案,讓資料夾或機構中的非主機專案或非主機專案可附加至這些專案。詳情請參閱constraints/compute.restrictSharedVpcHostProjects 限制

限制服務專案可使用的主專案子網路

根據預設,設定共用虛擬私有雲後,服務專案中的 IAM 主體只要具備適當的 IAM 權限,就能使用主專案中的任何子網路。除了管理個別使用者權限,機構政策管理員也可以設定政策,定義特定專案或資料夾/機構中的專案可存取的子網路集。詳情請參閱constraints/compute.restrictSharedVpcSubnetworks 限制

避免主專案遭到誤刪

如果共用虛擬私有雲網路的帳單已中斷,所有依附資源 (包括服務專案) 都會完全關閉。為避免因計費功能未啟用或遭停用,導致共用虛擬私有雲意外關閉,請確保主專案與其帳單帳戶之間的連結

指派共用虛擬私人雲端管理員

機構管理員可將共用虛擬私有雲端管理員專案身分與存取權管理員角色授予一或多個身分與存取權管理主體。

專案身分與存取權管理員角色會授予共用虛擬私有雲端管理員權限,可共用所有現有和日後的子網路,而不只是個別子網路。這類授權會在機構或資料夾層級 (而非專案層級) 建立繫結,因此必須在機構中定義身分與存取權管理主體,不能只在專案中定義。

主控台

在機構層級授予共用虛擬私人雲端管理員角色

  1. 以機構管理員身分登入 Cloud de Confiance 控制台,然後前往「IAM」(身分與存取權管理) 頁面。

    前往「IAM」頁面

  2. 從專案選單中選取您的機構。

    如果您選取的是專案,「Role」(角色) 選單就會顯示不正確的項目。

  3. 按一下「新增」

  4. 輸入「New principals」(新增主體) 的電子郵件地址。

  5. 在「角色」選單中,依序選取「Compute Engine」>「Compute Shared VPC Admin」

  6. 按一下 [Add another role] (新增其他角色)

  7. 在「角色」下拉式清單中,依序選取「資源管理員」 >「專案 IAM 管理員」

  8. 按一下 [儲存]

在資料夾層級授予共用虛擬私人雲端管理員角色

  1. 以機構管理員身分登入 Cloud de Confiance 控制台,然後前往「IAM」(身分與存取權管理) 頁面。

    前往「IAM」頁面

  2. 從專案選單中選取您的資料夾。

    如果選取專案或機構,就會看到錯誤選項。

  3. 按一下「新增」

  4. 輸入「New principals」(新增主體) 的電子郵件地址。

  5. 在「Select a role」(選取角色) 下,選取「Compute Engine」>「Compute Shared VPC Admin」(Compute 共用虛擬私有雲管理員)

  6. 按一下 [Add another role] (新增其他角色)

  7. 在「角色」選單中,依序選取「資源管理員」>「專案 IAM 管理員」

  8. 按一下 [Add another role] (新增其他角色)

  9. 在「Roles」(角色) 選單中,依序選取「Resource Manager」>「Compute Network Viewer」

  10. 按一下 [儲存]

gcloud

  1. 以機構管理員身分進行 gcloud 驗證,將 ORG_ADMIN 替換為機構管理員名稱:

    gcloud auth login ORG_ADMIN
    
  2. 依照這個指令的輸出結果判定您的機構 ID 編號。

    gcloud organizations list
    
  3. 如要在機構層級指派共用虛擬私人雲端管理員角色,請執行下列操作:

    1. 將共用虛擬私有雲管理員角色套用至現有的身分與存取權管理主體。將 ORG_ID 替換為上一步產生的機構 ID 編號,並將 EMAIL_ADDRESS 替換為您要授予共用虛擬私人雲端管理員角色之使用者的電子郵件地址。

      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/compute.xpnAdmin"
      
      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/resourcemanager.projectIamAdmin"
      
  4. 如要在資料夾層級指派共用虛擬私人雲端管理員角色,請執行下列操作:

    1. 查看這個指令的輸出,判定資料夾 ID。

      gcloud resource-manager folders list --organization=ORG_ID
      
    2. 將共用虛擬私有雲管理員角色套用至現有的身分與存取權管理主體。將 ORG_ID 替換為上一步產生的機構 ID 編號,並將 EMAIL_ADDRESS 替換為您要授予共用虛擬私人雲端管理員角色之使用者的電子郵件地址。

      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.xpnAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/resourcemanager.projectIamAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.networkViewer"
      
  5. 完成執行工作後,請在 gcloud 指令列工具中撤銷機構管理員帳戶權杖,以利保障帳戶安全。

    gcloud auth revoke ORG_ADMIN
    

API

  • 如要在機構層級指派共用虛擬私人雲端管理員角色,請按照下列程序操作:

    1. 找出機構 ID 編號。

      POST https://cloudresourcemanager.s3nsapis.fr/v1/organizations
      
    2. 描述並記錄現有機構政策的詳細資料。

      POST https://cloudresourcemanager.s3nsapis.fr/v1/organizations/ORG_ID:getIamPolicy
      

      ORG_ID 替換為機構 ID。

    3. 指派共用虛擬私有雲管理員角色。

      POST https://cloudresourcemanager.s3nsapis.fr/v1/organizations/ORG_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      更改下列內容:

      • ORG_ID:機構 ID,其中包含您要授予共用虛擬私有雲管理員角色的使用者。
      • EMAIL_ADDRESS:使用者的電子郵件地址。
      • ETAG:您在說明現有政策時取得的專屬 ID。如果同時傳送多個更新要求,這項機制可防止發生衝突。

      詳情請參閱 organizations.setIamPolicy 方法

  • 如要在資料夾層級指派共用虛擬私人雲端管理員角色,請使用下列要求:

    1. 找出機構 ID 編號。

      POST https://cloudresourcemanager.s3nsapis.fr/v1/organizations
      
    2. 找出資料夾 ID。

      GET https://cloudresourcemanager.s3nsapis.fr/v2/folders?parent=organizations/ORG_ID
      

      ORG_ID 替換為機構 ID。

    3. 說明現有資料夾政策的詳細資料,然後記錄下來。

      POST https://cloudresourcemanager.s3nsapis.fr/v2/folders/FOLDER_ID:getIamPolicy
      

      FOLDER_ID 替換為資料夾 ID。

    4. 指派共用虛擬私有雲管理員角色。

      POST https://cloudresourcemanager.s3nsapis.fr/v1/organizations/FOLDER_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.networkViewer"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      更改下列內容:

      • FOLDER_ID:機構 ID,其中包含您要授予共用虛擬私有雲管理員角色的使用者。
      • EMAIL_ADDRESS:使用者的電子郵件地址。
      • ETAG:您在說明現有政策時取得的專屬 ID。如果同時傳送多個更新要求,這項功能可避免發生衝突。

      詳情請參閱 folders.setIamPolicy 方法

設定共用虛擬私有雲

本節所述的所有工作都必須由共用虛擬私人雲端管理員執行。

啟用主專案

機構內的共用虛擬私人雲端管理員可以按照下列程序,將專案指定為共用虛擬私人雲端「主專案」,但須遵守配額與限制。如果貴機構的共用虛擬私人雲端管理員具備專案建立者角色和專案刪除者角色 (roles/resourcemanager.projectCreatorroles/resourcemanager.projectDeleter),也可以建立及刪除專案。

啟用主專案後,專案的網路資源不會自動與服務專案共用。您必須將服務專案附加至主專案,才能與服務專案共用所選網路和子網路。

主控台

如果您尚未具備 Compute 共用虛擬私有雲管理員角色 (roles/compute.xpnAdmin),就無法在 Cloud de Confiance 控制台中查看這個頁面。

  1. 前往 Cloud de Confiance 控制台的「Shared VPC」(共用 VPC) 頁面。

    前往共用虛擬私有雲

  2. 以共用虛擬私有雲管理員身分登入。

  3. 在專案選擇工具中選取您要啟用並做為共用虛擬私人雲端主專案的專案。

  4. 按一下 [Set up Shared VPC] (設定共用虛擬私人雲端)

  5. 在下一個頁面中,按一下 [Enable host project] (啟用主專案) 下方的 [Save & continue] (儲存並繼續)

  6. 在「選取子網路」 之下,執行下列其中一項操作:

    1. 如果您需要將主專案虛擬私人雲端網路中目前和日後的所有子網路,與後續步驟中指定的服務專案和服務專案管理員共用,請按一下 [Share all subnets (project-level permissions)] (共用所有子網路 (專案層級權限))
    2. 如果您需要將主專案虛擬私人雲端網路中的部分子網路與服務專案和服務專案管理員共用,請按一下 [Individual subnets (subnet-level permissions)] (個別子網路 (子網路層級權限)),然後選取「Subnets to share」(要共用的子網路)
  7. 按一下 [Continue] (繼續)
    隨即顯示下一個畫面。

  8. 在「Project names」(專案名稱) 中,指定要連結至主專案的服務專案。請注意,附加服務專案時不會定義任何服務專案管理員;這會在下一步中進行。

  9. 在「Select users by role」(依角色選取使用者) 部分,新增服務專案管理員。 系統會將共用子網路的 compute.networkUser 身分與存取權管理角色授予這些使用者。只有服務專案管理員可以在共用虛擬私有雲主專案的子網路中建立資源。

  10. 按一下 [儲存]

gcloud

  1. 以共用虛擬私有雲管理員身分驗證 gcloud,然後將 SHARED_VPC_ADMIN 替換為共用虛擬私人雲端管理員名稱:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. 針對您要設為主專案的專案啟用共用虛擬私有雲,將 HOST_PROJECT_ID 替換為專案 ID。

    gcloud compute shared-vpc enable HOST_PROJECT_ID
    
  3. 請確認該專案列為貴機構的主專案,將 ORG_ID 替換為您的機構 ID (依 gcloud organizations list 而定)。

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. 如果您只需要啟用主專案,可以登出 gcloud,保障共用虛擬私有雲管理員帳戶憑證。 否則請略過這個步驟,並繼續執行附加服務專案的步驟。

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. 使用具備共用 VPC 管理員權限的憑證,為專案啟用共用 VPC。

    POST https://compute.s3nsapis.fr/compute/v1/projects/HOST_PROJECT_ID/enableXpnHost
    

    HOST_PROJECT_ID 替換為共用 VPC 主專案的專案 ID。

    詳情請參閱 projects.enableXpnHost 方法

  2. 確認專案列為主專案。

    POST https://compute.s3nsapis.fr/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
    

    HOST_PROJECT_ID 替換為共用 VPC 託管專案的 ID。

    詳情請參閱 projects.listXpnHosts 方法

Terraform

您可以使用 Terraform 資源啟用主專案。

resource "google_compute_shared_vpc_host_project" "host" {
  project = var.project # Replace this with your host project ID in quotes
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

附加服務專案

您必須將服務專案附加到主專案,其服務專案管理員才能使用共用虛擬私有雲。共用虛擬私有雲管理員必須執行下列步驟,才能完成附加作業。

一個服務專案只能附加到一個主專案,但一個主專案可支援附加多個服務專案。詳情請參閱「虛擬私有雲配額」頁面中的共用虛擬私有雲專屬限制

主控台

  1. 以共用 VPC 管理員身分登入 Cloud de Confiance 控制台。
  2. 前往 Cloud de Confiance 控制台的「Shared VPC」(共用 VPC) 頁面。
    前往「Shared VPC」(共用 VPC) 頁面
  3. 按一下「Attached projects」(附加的專案) 分頁。
  4. 在「Attached projects」(附加的專案) 分頁之下,按一下 [Attach projects] (附加專案) 按鈕。
  5. 在「Project names」(專案名稱) 部分中,勾選要附加的服務專案對應的核取方塊。請注意,附加服務專案時不會定義任何服務專案管理員;這會在下一步中進行。
  6. 在「VPC network permissions」(VPC 網路權限) 部分中,選取主體將取得 compute.networkUser 角色的角色。系統會根據虛擬私有雲端網路共用模式,授予身分與存取權管理主體整個主專案或主專案中特定子網路的網路使用者角色。這些主體在各自的服務專案中稱為「服務專案管理員」。
  7. 在「VPC network sharing mode」(VPC 網路共用模式) 區段中,選取下列其中一項操作:
    1. 如果您需要將主專案虛擬私人雲端網路中目前和日後的所有子網路,與所有服務專案和服務專案管理員共用,請按一下 [Share all subnets (project-level permissions)] (共用所有子網路 (專案層級權限))
    2. 如果您需要將主專案虛擬私人雲端網路中的特定子網路,與服務專案和服務專案管理員共用,請按一下 [Individual subnets (subnet-level permissions)] (個別子網路 (子網路層級權限)),然後選取「Subnets to share」(要共用的子網路)
  8. 按一下 [儲存]

gcloud

  1. 如果您尚未以共用虛擬私有雲管理員身分驗證 gcloud,請立即執行。將 SHARED_VPC_ADMIN 替換為共用虛擬私有雲管理員名稱:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. 將服務專案附加到先前啟用的主專案。接著將 SERVICE_PROJECT_ID 替換為服務專案的專案 ID,並將 HOST_PROJECT_ID 替換為主專案的專案 ID。

    gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_ID \
        --host-project HOST_PROJECT_ID
    
  3. 確認服務專案已附加成功。

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
  4. 您也可以選擇列出附加到主專案的服務專案:

    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  5. 如果您只需要附加服務專案,可以登出 gcloud,以利保障共用虛擬私人雲端管理員帳戶憑證。否則,請略過這個步驟,然後為所有子網路部分子網路定義服務專案管理員。

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. 將服務專案附加至共用虛擬私有雲主專案。

    POST https://compute.s3nsapis.fr/compute/v1/projects/HOST_PROJECT_ID/enableXpnResource
    {
      "xpnResource": {
        "id": "SERVICE_PROJECT"
      }
    }
    

    更改下列內容:

    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • SERVICE_PROJECT:要附加的服務專案 ID。

    詳情請參閱 projects.enableXpnResource 方法

  2. 確認服務專案已附加至主專案。

    GET https://compute.s3nsapis.fr/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
    

    更改下列內容:

    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。

    詳情請參閱 projects.getXpnResources 方法

Terraform

您可以使用 Terraform 資源附加服務專案。

resource "google_compute_shared_vpc_service_project" "service1" {
  host_project    = google_compute_shared_vpc_host_project.host.project
  service_project = var.service_project # Replace this with your service project ID in quotes
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

所有子網路的服務專案管理員

共用虛擬私有雲管理員可以指派服務專案中的 IAM 主體擔任「服務專案管理員」,並授予主專案中所有子網路的存取權。這類的服務專案管理員會取得「整個主專案」compute.networkUser 角色。也就是說,這類的管理員可存取主專案中所有已定義和日後的子網路。

如果使用者在主專案中具有 compute.networkUser 角色,就能查看附加服務專案中的所有子網路。

主控台

如要使用Cloud de Confiance 控制台,將服務專案中的 IAM 主體定義為服務專案管理員,並授予主專案中所有子網路的存取權,請參閱「附加服務專案」一節。

gcloud

下列步驟說明如何將服務專案中的 IAM 主體定義為服務專案管理員,並授予主專案中所有子網路的存取權。執行下列步驟前,您必須已啟用主專案,以及將服務專案連結到主專案

  1. 如果您尚未以共用虛擬私有雲管理員身分驗證 gcloud,請立即執行。將 SHARED_VPC_ADMIN 替換為共用虛擬私有雲管理員名稱:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. 建立政策繫結,將服務專案中的身分與存取權管理主體定義為服務專案管理員。接著將 HOST_PROJECT_ID 替換為主專案的專案 ID,並將 SERVICE_PROJECT_ADMIN 替換為服務專案管理員使用者的電子郵件地址。

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member "user:SERVICE_PROJECT_ADMIN" \
    --role "roles/compute.networkUser"
    

    只要變更 --member 引數的格式,即可指定不同類型的主體:

    • 使用 group: 即可將 Google 群組 (按電子郵件地址識別) 指定為主體。
    • 使用 domain: 將 Google 網域指定為主體。
    • 使用 serviceAccount: 指定服務帳戶。 如要進一步瞭解這項用途,請參閱「將服務帳戶設為服務專案管理員」。
  3. 重複進行先前的步驟,分別定義其他每一個服務專案管理員。

  4. 您定義服務專案管理員後,請登出 gcloud,保障共用虛擬私人雲端管理員帳戶憑證。

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. 說明並記錄現有專案政策的詳細資料。 您需要現有政策和 etag 值。

    POST https://cloudresourcemanager.s3nsapis.fr/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    HOST_PROJECT_ID 替換為共用 VPC 主專案的 ID。

  2. 建立政策繫結,將服務專案中的 IAM 主體指定為服務專案管理員。

    POST https://cloudresourcemanager.s3nsapis.fr/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    更改下列內容:

    • HOST_PROJECT_ID:主專案的 ID,其中包含共用虛擬私有雲網路。
    • PRINCIPAL:與角色相關聯的身分,例如使用者、群組、網域或服務帳戶。詳情請參閱 Resource Manager 說明文件中的members欄位。
    • ETAG:您在說明現有政策時取得的專屬 ID。如果同時傳送多個更新要求,這項功能可避免發生衝突。

    詳情請參閱 projects.setIamPolicy 方法

部分子網路的服務專案管理員

共用虛擬私有雲管理員可以指派服務專案中的身分與存取權管理主體為「服務專案管理員」,並只授予主專案中部分子網路的存取權。這個選項提供更精細的方法來定義服務專案管理員,讓您只針對主專案中的部分子網路將 compute.networkUser 角色授予這些管理員。

如果使用者在主專案中具有 compute.networkUser 角色,就能查看附加服務專案中的所有子網路。

主控台

如要使用Cloud de Confiance 控制台,將服務專案中的 IAM 主體定義為服務專案管理員,並只授予主專案中部分子網路的存取權,請參閱「附加服務專案」一節。

gcloud

下列步驟說明如何將服務專案中的身分與存取權管理主體定義為服務專案管理員,並只授予主專案中部分子網路的存取權。定義服務專案管理員前,您必須啟用主專案,以及將服務專案連結至主專案

  1. 如果您尚未以共用虛擬私有雲管理員身分驗證 gcloud,請立即執行。將 SHARED_VPC_ADMIN 替換為共用虛擬私有雲管理員名稱:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. 選擇主專案中服務專案管理員有權存取的子網路,並取得其目前的身分與存取權管理政策 (以 JSON 格式)。將 SUBNET_NAME 替換為主專案中的子網路名稱,並將 HOST_PROJECT_ID 替換為主專案的專案 ID。

    gcloud compute networks subnets get-iam-policy SUBNET_NAME \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID \
        --format json
    
  3. 複製上一步的 JSON 格式輸入內容,並儲存為檔案。為操作時易於辨識,這些步驟會將儲存的檔案命名為 subnet-policy.json

  4. 修改 subnet-policy.json 檔案,並新增您要指派為服務專案管理員的身分與存取權管理主體 (擁有子網路的存取權)。接著將每個 SERVICE_PROJECT_ADMIN 替換為服務專案的身分與存取權管理使用者電子郵件地址。

    {
      "bindings": [
      {
         "members": [
               "user:[SERVICE_PROJECT_ADMIN]",
               "user:[SERVICE_PROJECT_ADMIN]"
            ],
            "role": "roles/compute.networkUser"
      }
      ],
      "etag": "[ETAG_STRING]"
    }
    

    請注意,您可以在政策中指定不同類型的身分與存取權管理主體 (除了使用者外):

    • user: 替換為 group:,即可指定 Google 群組 (按電子郵件地址識別) 為主體。
    • user: 替換為 domain:,即可指定 Google 網域為主體。
    • 使用 serviceAccount: 指定服務帳戶。 有關這個用途的詳情,請參閱將服務帳戶設為服務專案管理員
  5. 使用 subnet-policy.json 檔案內容更新子網路的政策繫結。

    gcloud compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID
    
  6. 您定義服務專案管理員後,請登出 gcloud,保障共用虛擬私人雲端管理員帳戶憑證。

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. 說明現有子網路政策的詳細資料,然後記錄這些資料。 您需要現有政策和 etag 值。

    GET https://compute.s3nsapis.fr/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
    

    更改下列內容:

    • HOST_PROJECT_ID:主專案的 ID,其中包含共用虛擬私有雲網路。
    • SUBNET_NAME:要共用的子網路名稱。
    • SUBNET_REGION:子網路所在的地區。
  2. 更新子網路政策,授予服務專案管理員主專案中子網路的存取權。

    POST https://compute.s3nsapis.fr/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    更改下列內容:

    • ETAG:您在說明現有政策時取得的專屬 ID。如果同時傳送多個更新要求,這項功能可避免發生衝突。
    • HOST_PROJECT_ID:主專案的 ID,其中包含共用虛擬私有雲網路。
    • PRINCIPAL:與角色相關聯的身分,例如使用者、群組、網域或服務帳戶。詳情請參閱 Resource Manager 說明文件中的members欄位。
    • SUBNET_NAME:要共用的子網路名稱。
    • SUBNET_REGION:子網路所在的地區。

    詳情請參閱 subnetworks.setIamPolicy 方法

將服務帳戶設為服務專案管理員

共用虛擬私人雲端管理員也可以將服務專案的服務帳戶定義為服務專案管理員。本節說明如何將「兩種不同類型的服務帳戶」定義為服務專案管理員:

您可以將服務專案管理員角色 (compute.networkUser) 授予主專案的所有子網路其中部分子網路。然而,為操作時易於辨識,本節僅說明如何針對主專案的所有子網路,個別將這兩種服務帳戶類型定義為服務專案管理員。

將使用者管理服務帳戶設為服務專案管理員

下列操作步驟說明如何針對共用虛擬私人雲端主專案的所有子網路,將使用者管理服務帳戶定義為服務專案管理員。

主控台

  1. 以共用 VPC 管理員身分登入 Cloud de Confiance 控制台。
  2. 前往 Cloud de Confiance 控制台的「Settings」(設定) 頁面。
    前往「設定」頁面
  3. 將專案變更為服務專案,其中包含必須定義為服務專案管理員的服務帳戶。
  4. 複製服務專案的專案 ID。為操作時易於辨識,這項程序會使用 SERVICE_PROJECT_ID 代表服務專案 ID。
  5. 將專案變更為共用虛擬私人雲端主專案。
  6. 前往 Cloud de Confiance 控制台的「IAM」頁面。
    前往「IAM」頁面
  7. 按一下「新增」
  8. SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.s3ns.iam.gserviceaccount.com新增到「主體」欄位,並將 SERVICE_ACCOUNT_NAME 替換為服務帳戶的名稱。
  9. 在 [Roles] (角色) 選單中選取 [Compute Engine] > [Compute Network User] (Compute Network 使用者)
  10. 按一下「新增」

gcloud

  1. 如果您尚未以共用虛擬私有雲管理員身分驗證 gcloud,請立即執行。將 SHARED_VPC_ADMIN 替換為共用虛擬私有雲管理員名稱:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. 如果您不知道服務專案的專案 ID,可以列出貴機構的所有專案。這份清單會顯示每個專案的專案 ID。

    gcloud projects list
    
  3. 建立政策繫結,將服務帳戶設為服務專案管理員。接著將 HOST_PROJECT_ID 替換為主專案的專案 ID,將 SERVICE_ACCOUNT_NAME 替換為服務帳戶名稱,並將 SERVICE_PROJECT_ID 替換為服務專案 ID。

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.s3ns.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. 說明並記錄現有專案政策的詳細資料。 您需要現有政策和 etag 值。

    POST https://cloudresourcemanager.s3nsapis.fr/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    HOST_PROJECT_ID 替換為共用 VPC 託管專案的 ID。

  2. 建立政策繫結,將服務帳戶指定為服務專案管理員。

    POST https://cloudresourcemanager.s3nsapis.fr/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.s3ns.iam.gserviceaccount.com",
            ...include additional service accounts
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    更改下列內容:

    • HOST_PROJECT_ID:主專案的 ID,其中包含共用虛擬私有雲網路。
    • SERVICE_ACCOUNT_NAME:服務帳戶名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID,其中包含服務帳戶。
    • ETAG:您在說明現有政策時取得的專屬 ID。如果同時傳送多個更新要求,這項功能可避免發生衝突。

    詳情請參閱 projects.setIamPolicy 方法

將 Google API 服務帳戶設為服務專案管理員

下列操作步驟說明如何針對共用虛擬私人雲端主專案的所有子網路,將「Google API 服務帳戶」定義為服務專案管理員。搭配共用虛擬私有雲端使用代管執行個體群組時,您必須將 Google API 服務帳戶設為服務專案管理員,因為執行個體建立等工作是由這類服務帳戶執行。如要進一步瞭解這項關係,請參閱「代管執行個體群組和 IAM」。

主控台

  1. 以共用 VPC 管理員身分登入 Cloud de Confiance 控制台。
  2. 前往 Cloud de Confiance 控制台的「Settings」(設定) 頁面。
    前往「設定」頁面
  3. 將專案變更為服務專案,其中包含必須定義為服務專案管理員的服務帳戶。
  4. 複製服務專案的專案編號。為操作時易於辨識,這項程序會使用 SERVICE_PROJECT_NUMBER 代表服務專案編號。
  5. 將專案變更為共用虛擬私人雲端主專案。
  6. 前往 Cloud de Confiance 控制台的「IAM」頁面。
    前往「IAM」頁面
  7. 按一下「新增」
  8. SERVICE_PROJECT_NUMBER@cloudservices.s3ns-system.iam.gserviceaccount.com新增到「Members」欄位。
  9. 在 [Roles] (角色) 選單中選取 [Compute Engine] > [Compute Network User] (Compute Network 使用者)
  10. 按一下「新增」

gcloud

  1. 如果您尚未以共用虛擬私有雲管理員身分驗證 gcloud,請立即執行。將 SHARED_VPC_ADMIN 替換為共用虛擬私有雲管理員名稱:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. 判定服務專案的「專案編號」。為操作時易於辨識,這項程序會使用 SERVICE_PROJECT_NUMBER 代表服務專案編號。將 SERVICE_PROJECT_ID 替換為服務專案的專案 ID。

    gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
    
    • 如果您不知道服務專案的專案 ID,可以列出貴機構的所有專案。這份清單會顯示每個專案的專案編號。

      gcloud projects list
      
  3. 建立政策繫結,將服務帳戶設為服務專案管理員。將 HOST_PROJECT_ID 替換為主專案的專案 ID,並將 SERVICE_PROJECT_NUMBER 替換為服務專案編號。

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.s3ns-system.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. 說明並記錄現有專案政策的詳細資料。 您需要現有政策和 etag 值。

    POST https://cloudresourcemanager.s3nsapis.fr/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    HOST_PROJECT_ID 替換為共用 VPC 託管專案的 ID。

  2. 列出專案,找出專案編號。

    GET https://cloudresourcemanager.s3nsapis.fr/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
    

    SERVICE_PROJECT_ID 替換為服務帳戶所在的服務專案 ID。

  3. 建立政策繫結,將服務帳戶指定為服務專案管理員。

    POST https://cloudresourcemanager.s3nsapis.fr/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.s3ns-system.iam.gserviceaccount.com"
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    更改下列內容:

    • HOST_PROJECT_ID:主專案的 ID,其中包含共用虛擬私有雲網路。
    • SERVICE_PROJECT_NUMBER:包含服務帳戶的服務專案編號。
    • ETAG:您在說明現有政策時取得的專屬 ID。如果同時傳送多個更新要求,這項功能可避免發生衝突。

    詳情請參閱 projects.setIamPolicy 方法

使用共用虛擬私有雲

共用虛擬私人雲端管理員完成啟用主專案將必要服務專案附加至主專案,以及為所有部分主專案子網路定義服務專案管理員等工作後,服務專案管理員就能在服務專案中,使用主專案的子網路建立執行個體、範本和內部負載平衡器。

本節所述的所有工作都必須由服務專案管理員執行。

請注意,共用虛擬私有雲管理員只能將運算網路使用者角色 (roles/compute.networkUser) 授予服務專案管理員,且可選擇授予整個主專案或僅部分子網路。服務專案管理員也應具備管理各自服務專案所需的其他角色。舉例來說,服務專案管理員也可以是專案擁有者,或者至少擁有該專案的Compute Instance Admin 角色 (roles/compute.instanceAdmin)。

列出可用的子網路

服務專案管理員可以列出自己已獲權使用的子網路,操作步驟如下。

主控台

前往 Cloud de Confiance 控制台的「Shared VPC」(共用 VPC) 頁面。

前往共用虛擬私有雲

gcloud

  1. 如果您尚未以服務專案管理員身分驗證 gcloud,請立即執行。接著將 SERVICE_PROJECT_ADMIN 替換為服務專案管理員名稱:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. 執行下列指令,並將 HOST_PROJECT_ID 替換為共用虛擬私有雲端主專案的專案 ID:

    gcloud compute networks subnets list-usable --project HOST_PROJECT_ID
    

    以下範例會列出 project-1 主專案中可用的子網路:

    $ gcloud compute networks subnets list-usable --project project-1
    
    PROJECT    REGION       NETWORK  SUBNET    RANGE          SECONDARY_RANGES
    project-1  us-west1     net-1    subnet-1  10.138.0.0/20
    project-1  us-central1  net-1    subnet-2  10.128.0.0/20  r-1 192.168.2.0/24
                                                              r-2 192.168.3.0/24
    project-1  us-east1     net-1    subnet-3  10.142.0.0/20
    

詳情請參閱 SDK 說明文件中的 list-usable 指令

API

列出主專案中可用的子網路。以服務專案管理員身分提出要求。

GET https://compute.s3nsapis.fr/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable

HOST_PROJECT_ID 替換為共用 VPC 託管專案的 ID。

詳情請參閱 subnetworks.listUsable 方法

預留靜態內部 IPv4 或 IPv6 位址

服務專案管理員可以在共用虛擬私有雲網路的子網路中,保留內部 IPv4 或 IPv6 位址。IP 位址設定物件是在服務專案中建立,而其值來自所選共用子網路中可用的 IPv4 位址範圍。

如要在服務專案中保留獨立的內部 IP 位址,請完成下列步驟。

主控台

  1. 設定共用虛擬私有雲
  2. 前往 Cloud de Confiance 控制台的「Shared VPC」(共用 VPC) 頁面。

    前往共用虛擬私有雲

  3. 以共用虛擬私有雲管理員身分登入。

  4. 從專案選擇工具中選取服務專案。

  5. 依序選取「VPC network」(虛擬私有雲網路) > IP addresses」(IP 位址),前往「IP addresses」(IP 位址) 頁面

  6. 按一下「保留內部靜態 IP 位址」

  7. 在「Name」欄位中輸入 IP 位址名稱。

  8. 在「IP version」(IP 版本) 清單中,選取所需的 IP 版本:

    • 如要預留靜態內部 IPv4 位址,請選取「IPv4」IPv4
    • 如要保留靜態內部 IPv6 位址,請選取「IPv6」IPv6
  9. 按一下「與我共用的網路」按鈕。

  10. 在「Network」(網路) 和「Subnetwork」(子網路) 清單中,分別選取虛擬私有雲網路和子網路。

  11. 指定預留 IP 位址的方式:

    • 如要指定要保留的靜態內部 IPv4 位址,請在「Static IP address」(靜態 IP 位址) 中選取「Let me choose」(讓我選擇),然後輸入自訂 IP 位址。否則,系統會自動為您指派子網路中的靜態內部 IPv4 位址。
    • 如果是 IPv6 位址,系統會從子網路的內部 IPv6 位址範圍,自動指派靜態內部 IPv6 位址。
  12. 選用:如要在不同前端共用靜態內部 IPv4 位址,請在「用途」部分選擇「共用」。預設選取項目為「非共用」

  13. 按一下「保留」

gcloud

  1. 如果您尚未以服務專案管理員身分驗證 Google Cloud CLI,請立即執行。接著將 SERVICE_PROJECT_ADMIN 替換為服務專案管理員名稱:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. 使用 compute addresses create 指令

    • 保留 IPv4 位址:

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV4
      
    • 保留 IPv6 位址:

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV6
      

    更改下列內容:

    • IP_ADDR_NAME:IPv4 位址物件的名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET:共用子網路的名稱。

如要進一步瞭解如何建立 IP 位址,請參閱 SDK 說明文件

API

請使用 addresses.insert 方法

  • 以服務專案管理員身分預留靜態內部 IPv4 位址:

    POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
    {
    "name": "ADDRESS_NAME",
    "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
    "addressType": "INTERNAL"
    }
    

更改下列內容:

  • ADDRESS_NAME:預留內部 IP 位址的名稱。
  • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
  • REGION:保留的 IPv4 位址所在區域,以及共用子網路所在區域。
  • SERVICE_PROJECT_ID:您要保留 IPv4 位址的服務專案 ID。
  • SUBNET_NAME:共用子網路的名稱。

詳情請參閱 addresses.insert 方法

Terraform

您可以使用 Terraform 資料區塊指定主機子網路資訊。然後使用 Terraform 資源預留靜態內部 IPv4 位址。如果省略選用的 address 引數,系統會選取並預留可用的 IPv4 位址。

指定主機子網路:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

從主專案的子網路保留 IPv4 位址,以供服務專案使用:

resource "google_compute_address" "internal" {
  project      = var.service_project
  region       = "us-central1"
  name         = "int-ip"
  address_type = "INTERNAL"
  address      = "10.0.0.8"
  subnetwork   = data.google_compute_subnetwork.subnet.self_link
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

預留靜態外部 IPv4 位址

服務專案中的資源可以使用服務專案或主專案中定義的區域靜態外部 IPv4 位址。因此,附加服務專案中的資源可以使用在主專案中保留的區域靜態外部 IPv4 位址。

保留靜態外部 IPv6 位址

服務專案管理員可以在服務專案中保留靜態外部 IPv6 位址。IPv6 位址設定物件是在服務專案中建立,而其值來自所選共用子網路中的可用 IPv6 位址範圍。

主控台

您可以使用Cloud de Confiance 控制台,在服務專案中預留獨立的外部 IPv6 位址:

  1. 設定共用虛擬私有雲
  2. 在 Cloud de Confiance 控制台中,前往「Shared VPC」(共用 VPC) 頁面。
    前往「Shared VPC」(共用 VPC) 頁面
  3. 以共用虛擬私有雲管理員身分登入。
  4. 從專案選擇工具中選取服務專案。
  5. 如要前往「IP addresses」(IP 位址) 頁面,請依序選取「VPC network」(虛擬私有雲網路) >「IP addresses」(IP 位址)。
  6. 按一下「保留外部靜態 IP 位址」
  7. 選擇新位址的名稱。
  8. 指定網路服務層級為「Premium」(進階) 或「Standard」(標準)。 只有進階級支援預留 IPv6 靜態位址。
  9. 在「IP 版本」下方,選取「IPv6」
  10. 指定這個 IP 位址是地區全球
    • 如果您要為全域負載平衡器保留靜態 IP 位址,請選擇「全域」
    • 如果您要為執行個體或區域負載平衡器保留靜態 IP 位址,請選擇「區域」,然後選取要在其中建立位址的區域。
  11. 選擇下列項目:
    • 這個專案中的網路:如要在與保留 IPv6 位址的虛擬私有雲 (VPC) 網路相同的子網路中保留外部 IPv6 位址,請選擇這個選項。
    • 「與我共用的網路」:如要在共用虛擬私有雲網路的子網路中預留外部 IPv6 位址,請選擇這個選項。
  12. 根據您的選擇,選擇下列項目:

    • 「Network」(網路):虛擬私有雲網路
    • 子網路:要從哪個子網路指派靜態區域性 IPv6 位址
    • 「端點類型」:選擇「VM 執行個體」或「網路負載平衡器」
  13. 選用:如果您選擇「VM 執行個體」做為端點類型,請選取要附加 IPv6 位址的 VM 執行個體。

  14. 按一下「保留」

gcloud

  1. 如果您尚未以服務專案管理員身分驗證 gcloud,請立即執行。接著將 SERVICE_PROJECT_ADMIN 替換為服務專案管理員名稱:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. 使用 gcloud compute addresses create 指令

    gcloud compute addresses create IP_ADDR_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --region=REGION \
        --ip-version=IPV6 \
        --endpoint-type=[VM | NETLB]
    

    更改下列內容:

    • IP_ADDR_NAME:IPv6 位址物件的名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • SUBNET:共用子網路的名稱。
    • REGION:包含共用子網路的區域。

API

如要以服務專案管理員身分預留靜態內部 IPv6 位址,請使用 addresses.insert 方法

POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
{
  "name": "ADDRESS_NAME",
  "ipVersion": "IPV6",
  "ipv6EndpointType": "VM|LB",
  "networkTier": "PREMIUM",
  "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "addressType": "EXTERNAL"
}

更改下列內容:

  • SERVICE_PROJECT_ID:您要保留 IPv6 位址的服務專案 ID。
  • REGION:保留的 IPv6 位址和共用子網路所在的區域。
  • ADDRESS_NAME:保留的靜態外部 IPv6 位址名稱。
  • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
  • SUBNET_NAME:共用子網路的名稱。

建立執行個體

使用共用虛擬私有雲建立執行個體時,請留意以下事項:

  • 建立執行個體的標準過程中,您必須選取區域、網路和子網路。您選取的子網路和區域都必須位在同一地區。服務專案管理員使用共用虛擬私有雲網路的子網路建立執行個體時,為該執行個體選取的區域必須與所選子網路所在地區相同。

    當您透過預留的靜態內部 IPv4 位址建立執行個體時,系統會先行選取建立靜態 IPv4 位址時使用的子網路和地區。本節提供使用靜態內部 IPv4 位址建立執行個體的 gcloud 範例。

  • 服務專案管理員只能透過已獲權使用的子網路建立執行個體。如要判斷可用的子網路,請參閱「列出可用的子網路」。

  • 當 Cloud de Confiance 收到在共用虛擬私有雲網路的子網路中建立執行個體的要求時,系統會檢查發出要求的身分與存取權管理主體,是否有權使用該共用子網路。如果檢查失敗,系統就不會建立執行個體,且 Cloud de Confiance會傳回權限錯誤。如需協助,請與共用 VPC 管理員聯絡。

  • 您建立的執行個體堆疊類型,必須支援您建立執行個體的共用子網路。詳情請參閱子網路類型。對於具有 IPv6 位址的執行個體,子網路的 IPv6 存取權類型會決定指派給執行個體的 IPv6 位址是內部或外部 IPv6 位址。

主控台

  1. 設定共用虛擬私有雲
  2. 前往 Cloud de Confiance 控制台的「Shared VPC」(共用 VPC) 頁面。

    前往共用虛擬私有雲

  3. 以共用虛擬私有雲管理員身分登入。

  4. 從專案選擇工具中選取服務專案。

  5. 如要前往「建立執行個體」頁面,請依序選取「Compute Engine」>「VM 執行個體」>「建立執行個體」

  6. 指定執行個體的 [名稱]

  7. 在「區域」中,選取包含共用子網路的區域。

  8. 點選「進階選項」下方的「網路」

  9. 在「Network interfaces」(網路介面) 下方,按一下「與我共用的網路」圓形按鈕。

  10. 在「Shared subnetwork」(共用子網路) 清單中,選取要建立執行個體的子網路:

    • 如果是僅支援 IPv4 的執行個體,請選取僅支援 IPv4 或雙重堆疊 (IPv4 和 IPv6) 的子網路。
    • 如果是雙重堆疊執行個體,請選取具有必要 IPv6 存取權類型的雙重堆疊子網路。
    • 如果是僅限 IPv6 的執行個體,請選取雙重堆疊子網路或僅限 IPv6 的子網路,並使用必要的 IPv6 存取權類型。
  11. 選取「IP 堆疊類型」

    • IPv4 (單一堆疊)
    • IPv4 和 IPv6 (雙重堆疊)
    • IPv6 (單一堆疊)
  12. 指定該執行個體所需的其他必要參數。

  13. 點選「建立」

gcloud

請參閱以下例子:

  • 在共用虛擬私有雲網路的共用子網路中,使用臨時內部 IPv4 位址建立執行個體:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    更改下列內容:

    • INSTANCE_NAME:執行個體的名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET:共用子網路的名稱。
    • ZONE:指定地區中的區域。
  • 在共用虛擬私人雲端網路中,使用已保留的靜態內部 IPv4 位址建立執行個體:

    1. 在服務專案中,從主專案的可用位址範圍保留靜態內部 IPv4 位址
    2. 建立執行個體:

      gcloud compute instances create INSTANCE_NAME \
          --project SERVICE_PROJECT_ID \
          --private-network-ip IP_ADDR_NAME \
          --zone ZONE \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
      

      更改下列內容:

      • INSTANCE_NAME:執行個體的名稱。
      • SERVICE_PROJECT_ID:服務專案的 ID。
      • IP_ADDR_NAME:靜態 IP 位址的名稱。
      • ZONE:與 IP_ADDR_NAME 位於相同區域的可用區。
      • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
      • REGION:包含共用子網路的區域。
      • SUBNET:與靜態內部 IPv4 位址相關聯的共用子網路名稱。
  • 建立具有臨時內部 IPv4 位址和臨時 IPv6 位址的執行個體:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    更改下列內容:

    • INSTANCE_NAME:執行個體的名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET:共用子網路的名稱。
    • ZONE:指定地區中的區域。
  • 建立使用已保留靜態外部 IPv6 位址的執行個體:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type STACK_TYPE \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --ipv6-address IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --ipv6-network-tier PREMIUM \
        --zone ZONE
    

    更改下列內容:

    • INSTANCE_NAME:執行個體的名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID。
    • STACK_TYPEIPV4_IPV6IPV6_ONLY (預覽版),視您是否要讓執行個體也擁有 IPv4 位址而定。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET:共用子網路的名稱。
    • IPV6_ADDRESS:要指派給 VM 的 IPv6 位址。
    • ZONE:指定地區中的區域。

API

請參閱以下例子:

  • 如要使用臨時內部 IPv4 位址建立執行個體,請只指定子網路:

    POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    更改下列內容:

    • SERVICE_PROJECT_ID:服務專案的 ID。
    • ZONE:指定地區中的區域。
    • MACHINE_TYPE:執行個體的機器類型。
    • INSTANCE_NAME:執行個體的名稱。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET:共用子網路的名稱。
    • SOURCE_IMAGE:執行個體的映像檔。

    詳情請參閱 instances.insert 方法

  • 如要使用已保留的內部 IPv4 位址建立執行個體,請指定子網路和已保留 IPv4 位址的名稱:

    POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "networkIP": "projects/SERVICE_PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    更改下列內容:

    • SERVICE_PROJECT_ID:服務專案的 ID。
    • ZONE:指定地區中的區域。
    • MACHINE_TYPE:執行個體的機器類型。
    • INSTANCE_NAME:執行個體的名稱。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET_NAME:共用子網路的名稱。
    • ADDRESS_NAME:保留的內部 IPv4 位址名稱。
    • SOURCE_IMAGE:執行個體的映像檔。

    詳情請參閱 instances.insert 方法

  • 如要建立具有臨時內部 IPv4 位址和臨時 IPv6 位址的執行個體,請指定子網路和堆疊類型:

    POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPV4_IPV6"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    更改下列內容:

    • SERVICE_PROJECT_ID:服務專案的 ID。
    • ZONE:指定地區中的區域。
    • MACHINE_TYPE:執行個體的機器類型。
    • INSTANCE_NAME:執行個體的名稱。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET:共用子網路的名稱。
    • SOURCE_IMAGE:執行個體的映像檔。

    詳情請參閱 instances.insert 方法

  • 如要使用臨時 IPv6 位址建立執行個體,請指定子網路和堆疊類型:

    POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPV6_ONLY"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    更改下列內容:

    • SERVICE_PROJECT_ID:服務專案的 ID。
    • ZONE:指定地區中的區域。
    • MACHINE_TYPE:執行個體的機器類型。
    • INSTANCE_NAME:執行個體的名稱。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET:共用子網路的名稱。
    • SOURCE_IMAGE:執行個體的映像檔。

    詳情請參閱 instances.insert 方法

Terraform

您可以使用 Terraform 資料區塊指定主機子網路資訊。然後使用 Terraform 資源在服務專案中建立 VM 執行個體。

指定主機子網路:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

在服務專案中建立 VM 執行個體,並使用主專案共用子網路中的臨時 IPv4 位址:

resource "google_compute_instance" "ephemeral_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "my-vm"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

在服務專案中建立 VM 執行個體,並使用主專案共用子網路中的已保留靜態 IPv4 位址

resource "google_compute_instance" "reserved_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "reserved-ip-instance"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
    network_ip = google_compute_address.internal.address
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

建立執行個體範本

使用共用虛擬私有雲建立執行個體範本時,請留意以下事項:

  • 建立執行個體範本的過程中,您必須選取網路和子網路。

    • 如果是針對自訂模式共用虛擬私有雲網路建立的範本,您必須同時指定網路和子網路。

    • 如果是針對自動模式共用虛擬私有雲網路建立的範本,您可以日後再選擇子網路。在這些情況下,系統會自動選取子網路,其所在地區與使用該範本的任何代管執行個體群組相同 (本質上,自動模式網路在每個地區都會有子網路)。

  • 當身分與存取權管理主體建立執行個體範本時,Cloud de Confiance 不會執行權限檢查作業,查看主體是否可以使用指定的子網路。系統一律會延後執行權限檢查作業,直到使用範本的代管執行個體群組收到要求。

  • 您建立的執行個體範本堆疊類型,必須支援您建立執行個體範本的共用子網路。詳情請參閱「子網路類型」。對於具有 IPv6 位址的執行個體,子網路的 IPv6 存取權類型會決定指派給執行個體的 IPv6 位址是內部或外部 IPv6 位址。

主控台

  1. 設定共用虛擬私有雲
  2. 在 Cloud de Confiance 控制台中,前往「Shared VPC」(共用 VPC) 頁面。
    前往「Shared VPC」(共用 VPC) 頁面
  3. 以共用虛擬私有雲管理員身分登入。
  4. 從專案選擇工具中選取服務專案。
  5. 如要前往「建立執行個體範本」頁面,請依序選取「Compute Engine」>「執行個體範本」>「建立執行個體範本」
  6. 指定執行個體範本的 [名稱]
  7. 在「進階選項」部分,按一下「網路」
  8. 在「Network interfaces」(網路介面) 區段中,按一下「與我共用的網路」圓形按鈕。
  9. 在「Shared subnetwork」(共用子網路) 清單中,選取要建立執行個體範本的子網路:
    • 如果是僅支援 IPv4 的執行個體範本,請選取僅支援 IPv4 或雙重堆疊 (IPv4 和 IPv6) 的子網路。
    • 如果是雙重堆疊執行個體範本,請選取具有必要 IPv6 存取類型的雙重堆疊子網路。
    • 如果是僅支援 IPv6 的執行個體範本,請選取雙重堆疊子網路或僅支援 IPv6 的子網路,並使用所需的 IPv6 存取類型。
  10. 選取執行個體範本的 IP 堆疊類型
    • IPv4 (單一堆疊)
    • IPv4 和 IPv6 (雙重堆疊)
    • IPv6 (單一堆疊)
  11. 指定該執行個體範本所需的其他必要參數。
  12. 點選「建立」

gcloud

  • 建立僅限 IPv4 的執行個體範本,用於自動模式共用虛擬私有雲網路的任何自動建立子網路:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --network projects/HOST_PROJECT_ID/global/networks/NETWORK
    

    更改下列內容:

    • TEMPLATE_NAME:範本名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • NETWORK:共用 VPC 網路的名稱。
  • 如要針對共用虛擬私有雲網路 (自動或自訂模式) 中手動建立的子網路,建立僅限 IPv4 的執行個體範本,請按照下列步驟操作:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    更改下列內容:

    • TEMPLATE_NAME:範本名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID。
    • REGION:包含共用子網路的區域。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • SUBNET:共用子網路的名稱。
  • 建立雙重堆疊執行個體範本,使用自訂模式共用虛擬私有雲網路中的子網路:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    更改下列內容:

    • TEMPLATE_NAME:範本名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID。
    • REGION:包含共用子網路的區域。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • SUBNET:共用子網路的名稱。
  • 建立僅限 IPv6 的執行個體範本,使用自訂模式共用虛擬私有雲網路中的子網路:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV6_ONLY \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    更改下列內容:

    • TEMPLATE_NAME:範本名稱。
    • SERVICE_PROJECT_ID:服務專案的 ID。
    • REGION:包含共用子網路的區域。
    • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
    • SUBNET:共用子網路的名稱。

API

  • 如要建立僅限 IPv4 的執行個體範本,並使用自動模式共用虛擬私有雲網路的任何自動建立子網路,請指定虛擬私有雲網路:

    POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK"
        }
      ]
    ...
    }
    

    更改下列內容:

    • SERVICE_PROJECT_ID:服務專案的 ID。
    • HOST_PROJECT_ID:包含共用虛擬私有雲網路的專案 ID。
    • NETWORK:共用 VPC 網路的名稱。

    詳情請參閱 instanceTemplates.insert 方法

  • 如要建立僅限 IPv4 的執行個體範本,並在共用虛擬私有雲網路 (自動或自訂模式) 中使用手動建立的子網路,請指定子網路:

    POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ]
    ...
    }
    

    更改下列內容:

    • SERVICE_PROJECT_ID:服務專案的 ID。
    • HOST_PROJECT_ID:包含共用虛擬私有雲網路的專案 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET_NAME:共用子網路的名稱。

    詳情請參閱 instanceTemplates.insert 方法

  • 如要建立雙重堆疊執行個體範本,並在自訂模式共用虛擬私有雲網路中使用子網路,請指定子網路和堆疊類型:

    POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPV4_IPV6"
        }
      ]
    ...
    }
    

    更改下列內容:

    • SERVICE_PROJECT_ID:服務專案的 ID。
    • HOST_PROJECT_ID:包含共用虛擬私有雲網路的專案 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET_NAME:共用子網路的名稱。

    詳情請參閱 instanceTemplates.insert 方法

  • 如要建立僅限 IPv6 的執行個體範本,並使用自訂模式共用虛擬私有雲網路中的子網路,請指定子網路和堆疊類型:

    POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPV6_ONLY"
        }
      ]
    ...
    }
    

    更改下列內容:

    • SERVICE_PROJECT_ID:服務專案的 ID。
    • HOST_PROJECT_ID:包含共用虛擬私有雲網路的專案 ID。
    • REGION:包含共用子網路的區域。
    • SUBNET_NAME:共用子網路的名稱。

    詳情請參閱 instanceTemplates.insert 方法

Terraform

您可以使用 Terraform 資料區塊指定主機子網路資訊。然後使用 Terraform 資源建立 VM 執行個體範本。虛擬機器的 IPv4 位址來自於主專案的共用子網路。

子網路必須與 VM 執行個體建立所在的地區相同。

指定主機子網路:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

在服務專案中建立 VM 執行個體範本:

resource "google_compute_instance_template" "default" {
  project      = var.service_project
  name         = "appserver-template"
  description  = "This template is used to create app server instances."
  machine_type = "n1-standard-1"
  disk {
    source_image = "debian-cloud/debian-9"
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

建立代管執行個體群組

使用共用虛擬私有雲建立代管執行個體群組時,請留意以下事項:

  • 搭配共用虛擬私有雲使用代管執行個體群組時,您需要將 Google API 服務帳戶設為服務專案管理員,因為透過自動調度資源功能自動建立執行個體等這類工作,是由該服務帳戶執行。

  • 建立代管執行個體群組的過程中,您需要根據群組類型選取區域或地區,以及執行個體範本 (網路和子網路詳細資訊會根據執行個體範本而定)。符合資格的執行個體範本限定只能參照所在地區與代管執行個體群組相同的子網路。

  • 服務專案管理員只能建立代管執行個體群組,其中的執行個體需使用已取得權限的子網路。網路和子網路詳細資訊會根據執行個體範本而定,因此服務專案管理員使用的範本只能參照已獲權使用的子網路。

  • 當 Cloud de Confiance 收到建立代管執行個體群組的要求時,系統會檢查發出要求的身分與存取權管理主體,是否有權使用執行個體範本中指定的子網路 (其所在地區與群組相同)。如果檢查失敗,系統就不會建立代管執行個體群組,而且 Cloud de Confiance 會傳回錯誤:Required 'compute.subnetworks.use' permission for 'projects/SUBNET_NAME

    列出可用的子網路,判斷哪些子網路可供使用。如果服務帳戶需要額外存取權,請與共用虛擬私有雲管理員聯絡。詳情請參閱「將服務帳戶設為服務專案管理員」。

詳情請參閱 Compute Engine 說明文件中的「建立受管理執行個體群組」。

建立 HTTP(S) 負載平衡器

在共用虛擬私有雲網路中,設定外部應用程式負載平衡器的方法有很多種。無論部署類型為何,負載平衡器的所有元件都必須位於同一個機構和同一個共用虛擬私有雲網路。

如要進一步瞭解支援的共用虛擬私有雲架構,請參閱下列文章:

建立內部直通式網路負載平衡器

以下範例說明在共用虛擬私人雲端網路中建立內部直通網路負載平衡器時,必須考量的事項。服務專案管理員可以建立內部直通式網路負載平衡器,並使用有權存取的子網路 (位於主專案中)。負載平衡器的內部轉送規則是在服務專案中定義,但其子網路參照指向主專案共用虛擬私有雲網路中的子網路。

在共用 VPC 環境中建立內部直通式網路負載平衡器之前,請先參閱共用 VPC 架構

主控台

  1. 前往 Cloud de Confiance 控制台的「Load balancing」(負載平衡) 頁面。
    前往「Load balancing」(負載平衡) 頁面

  2. 建立內部 TCP/UDP 負載平衡器,並進行下列調整:在「設定前端服務」部分中,從「子網路」選單的「其他專案共用的網路」部分,選取您要的共用虛擬私有雲子網路。

  3. 完成負載平衡器建立作業。

gcloud

建立內部轉送規則時,請使用 --subnet 標記在主專案中指定子網路:

gcloud compute forwarding-rules create FR_NAME \
    --project SERVICE_PROJECT_ID \
    --load-balancing-scheme internal \
    --region REGION \
    --ip-protocol IP_PROTOCOL \
    --ports PORT,PORT,... \
    --backend-service BACKEND_SERVICE_NAME \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --address INTERNAL_IP

更改下列內容:

  • FR_NAME:轉送規則的名稱。
  • SERVICE_PROJECT_ID:服務專案的 ID。
  • REGION:包含共用子網路的區域。
  • IP_PROTOCOLTCPUDP,與負載平衡器後端服務的通訊協定相符。
  • PORT:負載平衡器的數字通訊埠或通訊埠清單。
  • BACKEND_SERVICE_NAME:後端服務的名稱 (已在建立內部直通式網路負載平衡器的一般程序中建立)。
  • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
  • SUBNET:共用子網路的名稱。
  • INTERNAL_IP:共用子網路中的內部 IP 位址 (如未指定,系統會選取一個可用的 IP 位址)。

如需更多選項,請參閱 gcloud compute forwarding-rules create 指令

API

建立內部轉送規則,並在主專案中指定子網路。

POST https://compute.s3nsapis.fr/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules
{
  "name": "FR_NAME",
  "IPAddress": "IP_ADDRESS",
  "IPProtocol": "IP_PROTOCOL",
  "ports": [ "PORT", ... ],
  "loadBalancingScheme": "INTERNAL",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET",
  "network": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME",
  "backendService": "https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/us-west1/backendServices/BE_NAME",
  "networkTier": "PREMIUM"
}

更改下列內容:

  • SERVICE_PROJECT_ID:服務專案的 ID。
  • REGION:包含共用子網路的區域。
  • FR_NAME:轉送規則的名稱。
  • IP_ADDRESS:共用子網路中的內部 IP 位址。
  • IP_PROTOCOLTCPUDP,與負載平衡器後端服務的通訊協定相符。
  • PORT:負載平衡器的數字通訊埠或通訊埠清單。
  • HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID。
  • SUBNET:共用子網路的名稱。
  • NETWORK_NAME:網路名稱。
  • BE_NAME:後端服務的名稱 (已在建立內部直通式網路負載平衡器的一般程序中建立)。

詳情請參閱 forwardingRules.insert 方法

Terraform

您可以使用 Terraform 資料區塊指定主機子網路主機網路。接著,使用 Terraform 資源建立轉送規則。

指定主機網路:

data "google_compute_network" "network" {
  name    = "my-network-123"
  project = var.project
}

指定主機子網路:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

在服務專案中,於主專案的網路和子網路中建立轉送規則:

resource "google_compute_forwarding_rule" "default" {
  project               = var.service_project
  name                  = "l4-ilb-forwarding-rule"
  backend_service       = google_compute_region_backend_service.default.id
  region                = "europe-west1"
  ip_protocol           = "TCP"
  load_balancing_scheme = "INTERNAL"
  all_ports             = true
  allow_global_access   = true
  network               = data.google_compute_network.network.self_link
  subnetwork            = data.google_compute_subnetwork.subnet.self_link
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

後續步驟