設定私人服務存取權

私人服務存取權可讓虛擬私有雲網路與 Google 或第三方擁有的網路建立私人連線。Google 或提供服務的第三方實體也稱為「服務生產者」。私人連線提供內部 IP 位址,可讓虛擬私有雲網路中的 VM 執行個體和您存取的服務進行專屬通訊。VM 執行個體不需要網路連線能力或外部 IP 位址,即可連線至可透過私人服務存取權存取的服務。

如要使用私人服務存取權,請按照下列步驟操作:

如要瞭解其他私人存取權選項,請參閱「服務的私人存取權選項」。

事前準備

如要建立私人連線,請完成下列事前準備:

權限

專案擁有者和具備 Compute 網路管理員角色 (roles/compute.networkAdmin) 的 IAM 成員,可以建立分配的 IP 位址範圍及管理私人連線。

如要進一步瞭解 Compute Engine 角色,請參閱「Compute Engine IAM 角色和權限」。

選擇分配範圍的 IP 位址範圍

建立分配範圍後,系統會保留 IP 位址範圍,供服務供應商使用。選擇分配範圍時,請考量下列事項:

  • 請參閱服務生產者說明文件,瞭解他們對分配範圍大小是否有任何規定或建議。

    如果是 Google 服務,大小下限為單一 /24 區塊,但建議大小為 /16 區塊。

  • 選取與目前和未來子網路範圍完全分開的分配範圍,包括透過虛擬私有雲網路對等互連連線的網路子網路範圍,以及連線至相同 NCC 中樞的虛擬私有雲輪輻子網路範圍。

  • 選取的範圍不得與任何自訂靜態或動態路徑的目的地完全相符,也不得包含這些目的地。

    服務生產者選取已分配範圍中未使用的部分,做為新資源的候選範圍時,會排除與已分配範圍完全比對或在已分配範圍內的所有自訂路徑目的地。如果虛擬私有雲網路包含已分配範圍,且自訂路由的目的地與已分配範圍相符或位於該範圍內,則已分配範圍的可用部分會減少。這項設定可能會導致非預期的分配耗盡錯誤。

    舉例來說,如果您為 10.0.0.0/16 建立分配範圍,則適用下列規定:

    • 如果目的地為 10.0.0.0/16 的自訂路徑存在或稍後建立,則整個 10.0.0.0/16 範圍都會視為無法使用。如果服務生產者嘗試使用已分配的範圍,Google Cloud 會傳回分配用盡錯誤。

    • 如果目的地為 10.0.0.0/20 的自訂路徑存在或稍後建立,則 10.0.0.0/16 分配範圍的 10.0.0.0/20 部分會視為無法使用。如果服務生產者嘗試使用已分配的範圍,但已分配範圍的可用部分不足, Google Cloud 會傳回分配用盡錯誤。

    • 如果目的地為 10.0.0.0/8 的自訂路徑存在或稍後建立,這不會影響 10.0.0.0/16 分配範圍的可用性。

  • 請選取不會與其他 IP 位址需求衝突的範圍:

    • 部分 Google 和第三方產品會使用 172.17.0.0/16,在客體作業系統中轉送。例如,預設 Docker 橋接網路會使用這個範圍。如果您依賴使用 172.17.0.0/16 的產品,請勿在私人服務存取權的分配範圍內使用 172.17.0.0/16。
    • 如果您使用的是自動模式虛擬私有雲網路,則無法建立與 10.128.0.0/9 相符或重疊的分配範圍。Google 會將 10.128.0.0/9 範圍用於自動建立的子網路,包括未來區域中的子網路。
  • 請選取足夠大的 CIDR 區塊,以滿足目前和未來的需求。

    如果後來發現這個範圍不夠大,請儘可能擴展這個範圍。雖然您可以將多個分配項目指派給單一服務生產者,但 Google 會對可分配的 IP 位址範圍數量強制執行配額,但不會限制每個範圍的大小 (網路遮罩)。

建立分配範圍

下列步驟說明如何建立分配的 IP 位址範圍。

當 Google 服務代表您分配範圍時,服務會使用下列格式命名分配:google-managed-services-CONSUMER_NETWORK_NAME。如果已有這項分配,Google 服務會使用現有分配,而非建立新分配。您可以使用 Google 採用的命名慣例,向其他使用者或 Google 服務表明 Google 已有分配。

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 選取要連線至服務供應商的虛擬私有雲網路。

  3. 選取「私人服務存取權」分頁標籤。

  4. 在「Private services access」(私人服務存取權) 分頁中,選取「Allocated IP ranges for services」(為服務分配的 IP 範圍) 分頁。

  5. 按一下「Allocate IP range」(分配 IP 範圍)。

  6. 輸入已分配範圍的「Name」(名稱) 與「Description」(說明)。

  7. 設定分配的 IP 位址範圍:

    • 如要指定特定 IP 位址範圍,請選取「Custom」(自訂),然後輸入 CIDR 區塊,例如 192.168.0.0/16。
    • 如要讓 Google 選取可用範圍,請選取「Automatic」(自動),然後輸入前置碼長度,例如 16。
  8. 按一下 [Allocate] (分配),建立已分配範圍。

gcloud

如要在虛擬私有雲網路中建立分配範圍,請使用 gcloud compute addresses create 指令。

  • 如要指定位址範圍和前置碼長度 (子網路遮罩),請使用 --addresses 和 --prefix-length 旗標。舉例來說,如要分配 CIDR 區塊 192.168.0.0/16,請將位址指定為 192.168.0.0,並將前置碼長度指定為 16。

        gcloud compute addresses create RESERVED_RANGE_NAME \
            --global \
            --purpose=VPC_PEERING \
            --addresses=192.168.0.0 \
            --prefix-length=16 \
            --description="DESCRIPTION" \
            --network=VPC_NETWORK
        
    • 如要只指定前置碼長度 (子網路遮罩),請使用 prefix-length 旗標。如果省略位址範圍,Google Cloud 會自動選取虛擬私有雲網路中未使用的位址範圍。下列範例會選取前置碼長度為 16 位元的未使用 IP 位址範圍。
        gcloud compute addresses create RESERVED_RANGE_NAME \
            --global \
            --purpose=VPC_PEERING \
            --prefix-length=16 \
            --description="DESCRIPTION" \
            --network=VPC_NETWORK
        

    更改下列內容:

    • RESERVED_RANGE_NAME:分配的範圍名稱,例如 my-allocated-range。

    • DESCRIPTION:範圍的說明,例如 allocated for my-service。

    • VPC_NETWORK:虛擬私有雲網路的名稱,例如 my-vpc-network。

    下列範例會建立連至 Google 的私人連線,讓 my-network 虛擬私有雲網路中的 VM 執行個體,能透過私人服務存取權,連線至支援這項功能的 Google 服務。

    gcloud compute addresses create google-managed-services-my-network \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --description="peering range for Google" \
        --network=my-network
    

Terraform

如要在虛擬私有雲網路中建立分配範圍,請使用 google_compute_global_address 資源。

resource "google_compute_global_address" "private_ip_address" {
  name          = "private-ip-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.peering_network.id
}

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

如果看到專案 compute.globalAddresses.list 權限的錯誤訊息,請參閱「服務帳戶權限」。

列出分配的 IP 位址範圍

如要列出已分配的 IP 位址範圍,請使用 gcloud compute addresses list 指令。

gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

建立私人連線

建立分配範圍後,即可建立連至服務生產者的私人連線。私人連線會在虛擬私有雲網路與服務生產者的網路之間,建立虛擬私有雲網路對接連線。

建立私人連線時,請考量下列事項:

  • 如果單一服務生產者提供多項服務,您只需要為該生產者的所有服務建立一個私人連線。
  • 如果單一服務生產者提供多項服務,而您想控管不同服務資源使用的分配範圍,可以使用多個虛擬私有雲網路,每個網路都有自己的私人連線。這項設定可讓您在建立新的代管服務資源時,選取特定網路,確保相關聯的分配範圍用於新資源。
  • 請勿將相同的分配範圍重複用於多個服務生產者。如果您連線至多個服務供應商,請為每個服務供應商使用不重複的分配範圍。使用不同的分配範圍可避免 IP 位址重疊,並協助您管理各個服務生產者的網路設定,例如路由和防火牆規則。

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 選取要連線至服務供應商的虛擬私有雲網路。

  3. 選取「私人服務存取權」分頁標籤。

  4. 在「Private services access」(私人服務存取權) 分頁中,選取「Private connections to services」(私人服務連線) 分頁。

  5. 按一下「Create connection」(建立連線),在您的網路和服務生產者之間建立私人連線。

  6. 在「Assigned allocation」(指派的分配),選取一或多個其他服務生產者未使用的現有分配範圍。

  7. 按一下 [Connect] (連線) 建立連線。

gcloud

  1. 使用 gcloud services vpc-peerings connect 指令。

    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --ranges=RESERVED_RANGE_NAME \
        --network=VPC_NETWORK
    

    更改下列內容:

    • RESERVED_RANGE_NAME:一或多個已分配範圍的名稱。

    • VPC_NETWORK:虛擬私有雲網路的名稱。

    這個指令會啟動長時間執行的作業,並傳回作業名稱。

  2. 如要確認作業是否成功,請使用 gcloud services vpc-peerings operations describe 指令。

    gcloud services vpc-peerings operations describe \
        --name=OPERATION_NAME
    

    將 OPERATION_NAME 替換為上一個步驟傳回的作業名稱。

您可以在建立私人連線時指定多個分配範圍,舉例來說,如果範圍已用盡,您可以指派額外的分配範圍。服務會按照您指定的順序,使用所有提供範圍內的 IP 位址。

Terraform

如要建立私人連線,請使用 google_service_networking_connection 資源。

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.peering_network.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}

列出私人連線

建立私人連線後,您可以列出連線,確認連線是否存在。清單也會顯示與各個連線相關聯的已分配範圍。舉例來說,如果不記得指派給連線的分配範圍為何,您可以查看這個清單。

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 選取含有連線的虛擬私有雲網路。

  3. 選取「私人服務存取權」分頁標籤。

  4. 在「Private services access」(私人服務存取權) 分頁中,選取「Private connections to services」(私人服務連線) 分頁標籤,即可查看所有網路的私人連線。

gcloud

使用 gcloud services vpc-peerings list 指令。

gcloud services vpc-peerings list \
    --network=VPC_NETWORK

將 VPC_NETWORK 替換為虛擬私有雲網路名稱。

修改私人連線

您無法修改分配範圍,但可以更新私人連線,新增或移除分配範圍,而不會中斷流量。

  • 新增範圍:隨著規模擴大,如果現有範圍即將用盡,您可以新增或更換分配的範圍。如果您在私人連線中新增其他分配範圍,服務生產者在為提供的任何服務建立新服務資源時,就能使用更多 IP 位址。您無法在私人連線中保留特定分配範圍,供特定服務使用。

    如要進一步瞭解如何新增或取代範圍,請參閱「IP 位址範圍耗盡」。

  • 移除範圍:從私人連線移除範圍時,適用下列規定:

    • 分配的範圍不再與私人連線相關聯,但不會遭到刪除。

      • 如果移除的範圍不再使用,您可以刪除分配。
    • 現有的服務生產者資源可能會繼續使用已移除的範圍。

    • 私人服務存取權不會使用已移除的範圍來分配新的子網路。

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 選取含有連線的虛擬私有雲網路。

  3. 選取「私人服務存取權」分頁標籤。

  4. 在「Private services access」(私人服務存取權) 分頁中,選取「Private connections to services」(私人服務連線) 分頁標籤,即可查看所有網路的私人連線。

  5. 在清單中按一下連線名稱。

  6. 在「Assigned allocation」(指派的分配) 清單中,選取要與私人連線建立關聯的分配範圍。找出要從私人連線中移除的已分配範圍,然後取消勾選對應的核取方塊。

  7. 按一下 [確定]。

gcloud

如要在現有私人連線上新增或移除指派的分配 IP 位址範圍,請使用 gcloud services vpc-peerings update 指令。

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=RESERVED_RANGE_NAME \
    --network=VPC_NETWORK \
    [--force]

更改下列內容:

  • RESERVED_RANGE_NAME:一或多個已分配範圍的名稱清單,用於指派給私人連線。

    RESERVED_RANGE_NAME 會取代先前的已分配範圍清單。如果省略先前與這個私人連線相關聯的範圍,系統會從連線中移除該範圍。您必須使用 --force 旗標來移除範圍。

  • VPC_NETWORK:虛擬私有雲網路的名稱。

刪除分配的 IP 位址範圍

刪除分配的 IP 位址範圍前,請檢查私人連線是否正在使用該範圍。

如果分配的 IP 位址範圍正在使用中,請先修改私人連線,移除該範圍。然後刪除分配的 IP 位址範圍。

如果您刪除使用中的已分配 IP 位址,且未修改私人連線,則適用下列情況:

  • 現有連線會保持啟用狀態,但虛擬私有雲網路仍可使用與服務生產者網路重疊的 IP 位址。

  • 如果刪除與私人連線相關聯的唯一分配 IP 位址範圍,服務就無法建立新的子網路,因為沒有可選取的分配 IP 位址範圍。

  • 如果日後建立的分配 IP 位址範圍與已刪除的範圍相同或重疊,則無法將該範圍新增至私人連線。

為避免這些問題,刪除使用中的分配 IP 位址範圍時,請務必修改私人連線。

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 選取要刪除分配項目的虛擬私有雲網路。

  3. 選取「私人服務存取權」分頁標籤。

  4. 在「Private services access」(私人服務存取權) 分頁中,選取「Allocated IP ranges for services」(為服務分配的 IP 範圍) 分頁。

  5. 選取要刪除的分配範圍。

  6. 按一下 [Release] (釋出),分配的 IP 位址範圍會回歸至網路的可用內部 IP 位址集區內。

    如果分配的 IP 位址範圍仍指派給現有連線,您必須輸入其他確認資訊才能釋出分配範圍。

  7. 再按一下 [Release] (釋出),確認刪除。

gcloud

透過指定分配範圍的名稱來刪除分配範圍。

gcloud compute addresses delete NAME \
    --global

將 NAME 替換為要刪除的分配範圍名稱。

刪除私人連線

如要刪除私人連線,請完成本節中的程序。請勿直接刪除相關聯的虛擬私有雲網路對等互連連線,嘗試刪除私人連線。

刪除私人連線前,請務必先刪除透過該連線存取的所有服務執行個體。

  • 服務執行個體的刪除行為可能因服務而異。服務的資源可能會立即刪除,也可能在等待一段時間後刪除。如果設有等待期,則必須等到等待期結束,且服務供應商的資源刪除後,才能刪除私人連線。

    舉例來說,如果您刪除 Cloud SQL 執行個體,會收到成功回應,但服務會等待四天,才會刪除服務生產者資源。等待期內,如果您改變心意,不想刪除服務,可以要求還原資源。如果您在等待期間嘗試刪除連線,刪除作業會失敗,並顯示訊息,指出服務生產者仍在使用資源。

  • 您無法刪除供應商虛擬私有雲輪輻正在使用的私人連線。如要刪除連線,請先刪除供應商虛擬私有雲輪輻。

控制台

  1. 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  2. 選取要刪除連線的虛擬私有雲網路。

  3. 選取「私人服務存取權」分頁標籤。

  4. 在「Private services access」(私人服務存取權) 分頁中,選取「Private connection to services」(私人服務連線) 分頁。

  5. 選取要刪除的私人連線。

  6. 按一下 [Delete] (刪除) 以刪除。

  7. 再按一下 [Delete] (刪除),確認刪除。

gcloud

如要刪除私人連線的虛擬私有雲網路對接連線,請使用 gcloud services vpc-peerings delete 指令。

gcloud services vpc-peerings delete \
    --service=servicenetworking.googleapis.com \
    --network=VPC_NETWORK

將 VPC_NETWORK 替換為虛擬私有雲網路名稱。

與服務生產者共用私人 DNS 區域

Cloud DNS 私人區域僅供您的虛擬私有雲網路使用。如要讓服務生產者網路解析私人區域中的名稱,可以在兩個網路之間設定 DNS 對接。

設定 DNS 對接時,您必須提供虛擬私有雲網路和 DNS 尾碼。如果服務生產者需要解析具有該 DNS 尾碼的位址,服務生產者會將這些查詢轉送至您的虛擬私有雲網路進行解析。

除了 Cloud SQL 之外,這些支援的服務都支援 DNS 對接。

如要啟用 DNS 對接,請在專案中啟用 Cloud DNS API。

與服務生產者對接 DNS

gcloud

如要在虛擬私有雲網路和服務供應商網路之間設定 DNS 對接,請使用 gcloud services peered-dns-domains create 指令。

gcloud services peered-dns-domains create PEERING_NAME \
    --network=VPC_NETWORK \
    --dns-suffix=DNS_SUFFIX

更改下列內容:

  • PEERING_NAME:這項 DNS 對接設定的名稱。

  • VPC_NETWORK:您的虛擬私有雲網路名稱,該網路透過私人服務存線連線至服務生產者。

  • DNS_SUFFIX:要與服務供應商對接的 DNS 尾碼。您必須提供完整的 DNS 網域名稱,包括點號。例如,example.com. 是有效的 DNS 尾碼。

Terraform

如要在虛擬私有雲網路和服務供應商網路之間設定 DNS 對接,請使用 google_service_networking_peered_dns_domain 資源。


## Uncomment this block after adding a valid DNS suffix

# resource "google_service_networking_peered_dns_domain" "default" {
#   name       = "example-com"
#   network    = google_compute_network.peering_network.name
#   dns_suffix = "example.com."
#   service    = "servicenetworking.googleapis.com"
# }

列出 DNS 對接設定

gcloud

使用 gcloud services peered-dns-domains list 指令。

gcloud services peered-dns-domains list \
    --network=VPC_NETWORK

將 VPC_NETWORK 替換為虛擬私有雲網路名稱。

刪除 DNS 對接設定

gcloud

使用 gcloud services peered-dns-domains delete 指令。

gcloud services peered-dns-domains delete PEERING_NAME \
    --network=VPC_NETWORK

更改下列內容:

  • PEERING_NAME:DNS 對接設定的名稱。

  • VPC_NETWORK:虛擬私有雲網路的名稱。

設定混合式連線

根據預設,服務生產者的網路只會從虛擬私有雲網路學習子網路路由。因此,服務生產者會捨棄任何非來自子網路 IP 範圍的要求。

如要設定地端部署主機與服務供應商網路之間的連線,請按照下列步驟操作:

  • 在虛擬私有雲網路中,更新對等連線,將自訂路徑匯出至服務生產者的網路。匯出路由會將虛擬私有雲網路中所有符合資格的靜態和動態路由 (例如連往地端部署網路的路由) 傳送至服務生產者的網路。服務生產者的網路會自動匯入這些路由,然後透過虛擬私有雲網路將流量傳回地端部署網路。

    將自訂路徑匯出至服務生產者網路時,服務生產者網路會學習這些路徑。如果這些已知路由與Private Google Access使用的範圍重疊,則從服務生產者網路傳送至 Google 服務的流量,可能會透過對等互連連線錯誤地路由至您的網路。

    為避免轉送衝突,請採取下列任一做法:

    • 避免匯出與Private Google Access所用範圍重疊的自訂路由。
    • 為私人服務連線啟用 VPC Service Controls。啟用 VPC Service Controls 後,系統會為 perimeter 內的 Google 服務設定 perimeter 轉送,避免自訂轉送重疊而導致轉送衝突。
  • 請確認包含私人服務存取權分配 IP 範圍的前置字串,已正確 advertise 至地端部署網路。如要瞭解如何使用 Cloud Router advertise 自訂 IPv4 前置字串,請參閱「advertise 的路徑」。

  • 確認 VLAN 連結或 Cloud VPN 通道終止於與私人連線相同的虛擬私有雲網路 (或 Shared VPC 網路),因為虛擬私有雲網路對接不提供遞移路由。

疑難排解

下列各節提供私人服務存取的疑難排解資訊。

我分配的範圍有多少已經使用?

與服務生產者建立私人連線時,您會為他們分配 IP 位址範圍。如果您使用服務供應商的多項服務,每項服務都會從該分配範圍中保留一部分 IP 位址。您可以查看哪些服務正在使用哪些 IP 位址。舉例來說,您可以查看哪些服務正在使用大範圍的 IP 位址區塊,並避免 IP 位址耗盡。

如要查看已分配範圍的分配比率,請使用網路分析器。詳情請參閱「私人服務存取權 IP 位址使用率摘要」。

或者,如要查看哪項服務正在使用特定 IP 位址範圍,請按照下列步驟操作:

  1. 列出您的私人連線。
  2. 尋找將您連線至相關服務生產端的對等互連連線名稱。
  3. 列出虛擬私有雲網路的路由。
  4. 尋找具有符合對等互連連線名稱的下一個躍點的路徑。路徑的目的地範圍代表各個服務使用的 IP 位址。

IP 位址範圍用盡

如果特定私人連線的分配 IP 位址空間用盡, Google Cloud 會傳回下列錯誤:Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges.

如果出現這項錯誤,可能是因為分配的範圍不足,或是自訂靜態或動態路由導致分配的範圍無法充分使用。如要進一步瞭解轉送考量事項,請參閱「選擇分配範圍的 IP 位址範圍」。

您可以擴充現有分配,或新增分配。擴展的分配範圍必須是含有現有範圍的連續 IP 位址範圍。建議您擴大分配,因為分配的大小沒有限制,但每項專案和每個連線可建立的分配數量有限。詳情請參閱「靜態全域內部 IPv4 位址」和「每個私人連線分配的 IP 位址範圍」。

如要擴展現有的分配範圍:

  1. 列出您的私人連線並記錄您需要擴展的分配範圍名稱。
  2. 刪除要擴充的現有分配範圍。
  3. 使用與刪除的範圍相同的名稱來建立新的分配範圍。指定的 IP 位址範圍必須包含刪除的 IP 位址範圍。這樣一來,使用舊分配範圍的現有對等互連資源,就能繼續使用相同的 IP 位址,不會與虛擬私有雲網路中的資源衝突。舉例來說,如果先前分配的範圍是 192.168.0.0/20,請建立新的分配範圍

如何新增分配範圍到現有的私人連線:

  1. 建立新的分配範圍。這個範圍不一定要接續現有的分配範圍。
  2. 將分配的範圍新增至現有的私人連線。

服務帳戶權限

如果在建立分配範圍時,看到專案 compute.globalAddresses.list 權限相關錯誤,或是在建立、列出或修改私人連線時,遇到 Error 400: Precondition check failed 等錯誤,可能是 Service Networking API 服務帳戶的身分與存取權管理 (IAM) 角色發生問題。啟用 Service Networking API 後,系統會自動建立這個服務帳戶。帳戶可能需要一段時間才會佈建完成,並顯示在「IAM」頁面上。

控制台

如要確保服務帳戶具備正確的 IAM 角色,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。

    前往「身分與存取權管理」頁面

  2. 勾選「包含 Google 提供的角色授予項目」核取方塊。

  3. 在「Name」(名稱) 欄中,找到「Service Networking Service Agent」(Service Networking 服務代理) 主體,然後按一下對應列中的 「Edit principal」(編輯主體)。

  4. 在「Role」(角色) 欄位中,確認「Service Networking Service Agent」(Service Networking 服務代理) 角色 (roles/servicenetworking.serviceAgent) 存在。

  5. 如果沒有「Service Networking Service Agent」(服務網路服務代理) 角色,請按一下 「Add role」(新增角色) 或 「Add another role」(新增其他角色)。

  6. 按一下「請選擇角色」。

  7. 在「Filter」(篩選器) 文字方塊中輸入 Service Networking Service Agent。

  8. 從清單中選取「Service Networking Service Agent」(Service Networking 服務代理),然後按一下「Save」(儲存)。

gcloud

如要建立 Service Networking API 服務帳戶,請使用 gcloud projects add-iam-policy-binding 指令。

gcloud projects add-iam-policy-binding HOST_PROJECT_NAME \
    --member=serviceAccount:service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com \
    --role=roles/servicenetworking.serviceAgent

更改下列內容:

  • HOST_PROJECT_NAME:主機專案的名稱。
  • HOST_PROJECT_NUMBER:主機專案的編號。

更新分配範圍後,對等互連子網路路由仍會保留

更新私人服務連線的分配 IP 位址範圍後,舊的對等互連子網路路由可能仍會顯示在虛擬私有雲網路的路由表中。由於 IP 位址範圍仍在使用中,因此路徑會保留。

請按照下列步驟解決這個問題:

IP 位址範圍不再使用後,對等互連子網路路由會自動移除。從您刪除資源到服務生產者完全刪除資源,可能會有延遲。舉例來說,如果 Cloud SQL 執行個體正在使用舊的 IP 位址範圍,服務生產者最多可能需要四天才能完全刪除執行個體。刪除完成後,對等互連子網路路由就會移除。

無法建立新的私人連線

刪除與先前私人連線相關聯的虛擬私有雲網路對等互連連線後,如果嘗試建立新的私人連線, Google Cloud可能會傳回錯誤。如需疑難排解資訊,請參閱下列錯誤訊息。

為避免發生這個問題,請按照刪除私人連線的程序操作,而非直接刪除相關聯的虛擬私有雲網路對接連線。

  • 無法修改分配範圍錯誤:

    ERROR: Cannot modify allocated ranges in CreateConnection. Please use UpdateConnection. Existing allocated IP ranges: ALLOCATED_RANGE_NAMES.

    如果您是這類錯誤,請執行下列步驟:

    1. 重新建立已刪除的私人連線,並使用錯誤傳回的分配範圍名稱。重新建立連線時,必須使用相同的已分配範圍名稱,但對應的 IP 位址範圍 (CIDR 區塊) 可以相同或不同。

      如要建立私人連線,請參閱「建立私人連線」。

    2. 如有需要,請修改私人連線,新增或移除分配的範圍。您可能需要使用不同的分配範圍,而非在上一個步驟中重新建立私人連線時指定的分配範圍。

      如要修改私人連線,請參閱「修改私人連線」。

  • 暫時性內部錯誤:

    ERROR: (gcloud.services.vpc-peerings.connect) The operation "operations/OPERATION_ID"
    resulted in a failure "encountered some transient internal error, please try again later"

    如果收到這則錯誤訊息,請與 Cloud 支援團隊聯絡。

違反組織政策限制 constraints/compute.restrictVpcPeering

如果您在組織、資料夾或專案強制執行 constraints/compute.restrictVpcPeering 組織政策限制,建立私人連線時會失敗,並顯示類似下列的錯誤:

Constraint constraints/compute.restrictVpcPeering violated for project PROJECT_ID. Peering with network 'servicenetworking' is not allowed.

如要解決這個問題,請將 Google 服務生產者組織 (under:organizations/433637338589) 新增至專案、資料夾或組織 (擁有用戶虛擬私有雲網路) 的 constraints/compute.restrictVpcPeering 政策 allowedValues 清單。