透過端點存取已發布的服務

本文說明如何使用 Private Service Connect 端點存取其他虛擬私有雲網路中的服務。您可以連線至自有服務,或連線至其他服務供應商 (包括 Google) 提供的服務。

如要進一步瞭解服務,請參閱發布代管服務

事前準備

  • 請參閱這篇文章,瞭解如何使用端點連線至服務,以及相關限制。
  • 您必須在專案中啟用 Compute Engine API
  • 您必須在專案中啟用 Service Directory API
  • 您必須在專案中啟用 Cloud DNS API
  • 找出或建立一般子網路,用於為端點指派 IP 位址。
    • 子網路必須與要連線的服務位於同一地區。
    • 您可以從僅支援 IPv4 的子網路或雙重堆疊子網路使用 IPv4 位址。
    • 如果子網路有內部 IPv6 位址範圍,您可以使用僅支援 IPv6 (搶先版) 或雙重堆疊子網路的 IPv6 位址。
    • IP 位址的 IP 版本會影響端點可連線的已發布服務。詳情請參閱「IP 版本轉換」。
  • 輸出防火牆規則必須允許流量前往端點的內部 IP 位址。默示允許輸出防火牆規則允許輸出至任何目的地 IP 位址。如果您在虛擬私有雲網路中建立了任何輸出拒絕防火牆規則,或是建立了會修改默示允許輸出行為的階層式防火牆政策,存取端點可能會受到影響。建立特定的輸出允許防火牆規則或政策,允許流量前往服務端點的內部 IP 位址目的地。
  • 您必須擁有服務的服務連結 URI。例如: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

必要的角色

如要取得透過端點存取已發布服務所需的權限,請要求管理員授予下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這些預先定義的角色包含透過端點存取已發布服務所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要透過端點存取已發布的服務,必須具備下列權限:

  • 如要在專案中建立、查看及刪除端點,請按照下列步驟操作:
    • 專案的 compute.networks.use
    • 專案的 compute.subnetworks.use
    • 專案的 compute.addresses.createInternal
    • 專案的 compute.addresses.deleteInternal
    • 專案的 compute.addresses.get
    • 專案的 compute.addresses.list
    • 專案的 compute.addresses.use
    • 專案的 compute.forwardingRules.create
    • 專案的 compute.forwardingRules.delete
    • 專案的 compute.forwardingRules.get
    • 專案的 compute.forwardingRules.list
    • 專案的 compute.forwardingRules.pscCreate
    • 專案的 compute.forwardingRules.pscDelete
    • 專案的 compute.regionOperations.get
    • 專案的 servicedirectory.namespaces.create
    • 專案的 servicedirectory.namespaces.delete
    • 專案的 servicedirectory.services.create
    • 專案的 servicedirectory.services.delete
  • 如要在附加至共用虛擬私有雲網路的服務專案中建立、查看及刪除端點,請按照下列步驟操作:
    • 服務專案的 compute.addresses.createInternal
    • 服務專案的 compute.addresses.deleteInternal
    • 服務專案的 compute.addresses.get
    • 服務專案的 compute.addresses.list
    • 服務專案的 compute.addresses.use
    • 服務專案的 compute.forwardingRules.create
    • 服務專案的 compute.forwardingRules.delete
    • 服務專案的 compute.forwardingRules.get
    • 服務專案的 compute.forwardingRules.list
    • 服務專案的 compute.forwardingRules.pscCreate
    • 服務專案的 compute.forwardingRules.pscDelete
    • 服務專案的 compute.regionOperations.get
    • 服務專案的 servicedirectory.namespaces.create
    • 服務專案的 servicedirectory.namespaces.delete
    • 服務專案的 servicedirectory.services.create
    • 服務專案的 servicedirectory.services.delete
    • 主專案的 compute.networks.use 權限
    • 主專案的 compute.subnetworks.use 權限
  • 如要自動或手動設定專案中端點的 DNS 項目,請按照下列步驟操作:
    • 專案的 dns.managedZones.create
    • 專案的 dns.managedZones.delete
    • 專案的 dns.networks.bindPrivateDNSZone
    • 專案的 servicedirectory.namespaces.associatePrivateZone
  • 如要自動或手動設定共用虛擬私有雲網路中端點的 DNS 項目:
    • 服務專案的 dns.managedZones.create
    • 服務專案的 dns.managedZones.delete
    • 服務專案的 dns.networks.bindPrivateDNSZone
    • 服務專案的 servicedirectory.namespaces.associatePrivateZone
  • 如要在 Trusted Cloud 控制台中存取 Private Service Connect 頁面,請按照下列步驟操作:
    • 專案的 compute.forwardingRules.list
    • 專案的 compute.globalForwardingRules.list
    • 專案的 compute.networkEndpointGroups.list
    • 專案的 compute.regionNetworkEndpointGroups.list
    • 專案的 compute.urlMaps.list
    • 專案的 compute.backendService.list
    • 專案的 compute.regionBackendService.list
    • 專案的 compute.backendBucket.list
    • 專案的 compute.targetHttpProxy.list
    • 專案的 compute.targetHttpsProxy.list
    • 專案的 compute.regionTargetTcpProxy.list
    • 專案的 compute.targetTcpProxy.list
    • 專案的 compute.targetSslProxy.list
    • 專案的 compute.sslCertificate.list
    • 專案的 compute.sslPolicy.list
    • 專案的 compute.regionHealthCheck.list
    • 專案的 compute.healthCheck.list
    • 專案的 compute.httpHealthCheck.list
    • 專案的 compute.httpsHealthCheck.list

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

建立端點

端點會使用 Private Service Connect 轉送規則,連線至其他虛擬私有雲網路中的服務。每個轉送規則都會計入 Private Service Connect 轉送規則的每項專案配額,用來存取其他 VPC 網路中的服務。

建立端點時,系統會使用您選擇的命名空間或預設命名空間 goog-psc-default,自動向 Service Directory 註冊端點。

如要讓端點可從多個區域存取,請開啟全域存取權

您只能更新已發布服務的端點全域存取權欄位。 如要更新其他欄位,請刪除端點,然後建立新的端點。

主控台

  1. 前往 Trusted Cloud 控制台的「Private Service Connect」頁面。

    前往 Private Service Connect

  2. 按一下「已連線的端點」分頁標籤。

  3. 按一下「連結端點」

  4. 在「Target」(目標) 中選取「Published service」(已發布的服務)

  5. 在「目標服務」部分,輸入要連結的服務連結 URI。

    服務連結 URI 的格式如下: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

  6. 在「端點名稱」部分,輸入要使用的端點名稱。

  7. 選取端點的「網路」

  8. 選取端點的「子網路」

  9. 選取端點的 IP 位址。 如需新的 IP 位址,請建立一個:

    1. 按一下「IP address」(IP 位址) 下拉式選單,然後選取「Create IP address」(建立 IP 位址)
    2. 輸入 IP 位址的「名稱」和「說明」 (選填)。
    3. 選取「IP version」(IP 版本)
    4. 如要建立 IPv4 位址,請選取「自動指派」或「讓我選擇」

      如果選取「自行選擇」,請輸入要使用的「自訂 IP 位址」

    5. 按一下「保留」

  10. 如要讓端點在任何區域都能使用,請選取「啟用全域存取權」

  11. 從下拉式清單選取命名空間,或建立新的命名空間。

    系統會根據所選子網路填入「區域」

  12. 按一下「新增端點」

gcloud

  1. 保留要指派給端點的內部 IP 位址。

    gcloud compute addresses create ADDRESS_NAME \
        --region=REGION \
        --subnet=SUBNET \
        --ip-version=IP_VERSION
    

    更改下列內容:

    • ADDRESS_NAME:要指派給保留 IP 位址的名稱。

    • REGION:端點 IP 位址的區域。 這個區域必須與服務生產者的服務附件所在的區域相同。

    • SUBNET:端點 IP 位址的子網路名稱。

    • IP_VERSION:IP 位址的 IP 版本,可以是 IPV4IPV6。預設值為 IPV4。如要指定,IP 位址必須連線至IPV6具有內部 IPv6 位址範圍的子網路

  2. 找出保留的 IP 位址。

    gcloud compute addresses list --filter="name=ADDRESS_NAME"
    
  3. 建立轉送規則,將端點連線至服務生產者的服務連結。根據預設,端點只能從所在區域存取。如要讓端點在任何區域都能使用,請使用 --allow-psc-global-access 旗標。

    • 建立只能從自身區域存取的端點。

      gcloud compute forwarding-rules create ENDPOINT_NAME \
          --region=REGION \
          --network=NETWORK_NAME \
          --address=ADDRESS_NAME \
          --target-service-attachment=SERVICE_ATTACHMENT \
          [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
      
    • 建立可從任何地區存取的端點。

      gcloud compute forwarding-rules create ENDPOINT_NAME \
          --region=REGION \
          --network=NETWORK_NAME \
          --address=ADDRESS_NAME \
          --target-service-attachment=SERVICE_ATTACHMENT \
          --allow-psc-global-access \
          [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
      

    更改下列內容:

    • ENDPOINT_NAME:要指派給端點的名稱。

    • REGION:端點的區域。這個區域必須與服務生產者的服務連結位於同一區域。

    • NETWORK_NAME:端點的虛擬私有雲網路名稱。

    • ADDRESS_NAME:保留位址的名稱。

    • SERVICE_ATTACHMENT:服務生產者服務連結的 URI。例如:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • PROJECT_ID:您的專案 ID。

    • NAMESPACE:要使用的 Service Directory 命名空間。如果您指定的命名空間不存在,系統會建立該命名空間。

      如果省略 --service-directory-registration 旗標,系統會使用 goog-psc-default 的預設命名空間。

API

  1. 保留要指派給端點的內部 IP 位址。

    POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
    
    {
      "name": "ADDRESS_NAME",
      "addressType": "INTERNAL",
      "subnetwork": "SUBNET_URI",
      "ipVersion": "IP_VERSION"
    }
    

    更改下列內容:

    • PROJECT_ID:您的專案 ID。

    • REGION:端點的區域。這個區域必須與服務生產者的服務連結位於同一區域。

    • ADDRESS_NAME:要指派給保留 IP 位址的名稱。

    • SUBNET_URI:IP 位址的子網路。使用 subnetworks.list 方法gcloud compute networks subnets list --uri 找出網路的網址。

    • IP_VERSION:IP 位址的 IP 版本,可以是 IPV4IPV6。預設值為 IPV4。如要指定,IP 位址必須連線至IPV6具有內部 IPv6 位址範圍的子網路

  2. 建立轉送規則,將端點連線至服務生產者的服務連結。根據預設,端點只能從所在區域存取。如要讓端點在任何區域都能使用,請將 allowPscGlobalAccess 設為 true

    • 建立只能從自身區域存取的端點。

      POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
      {
        "name": "ENDPOINT_NAME",
        "IPAddress": "ADDRESS_URI",
        "target": "SERVICE_ATTACHMENT",
        "network": "NETWORK_URI",
        "serviceDirectoryRegistrations": [
            {
                "namespace": "NAMESPACE"
            }
        ]
      }
      
    • 建立可從任何地區存取的端點。

      POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
      {
        "name": "ENDPOINT_NAME",
        "IPAddress": "ADDRESS_URI",
        "target": "SERVICE_ATTACHMENT",
        "network": "NETWORK_URI",
        "allowPscGlobalAccess": true,
        "serviceDirectoryRegistrations": [
            {
                "namespace": "NAMESPACE"
            }
        ]
      }
      

    更改下列內容:

    • PROJECT_ID:您的專案 ID。

    • REGION:端點的區域。

    • ENDPOINT_NAME:要指派給端點的名稱。

    • ADDRESS_URI:相關聯網路上保留位址的 URI。使用 addresses.list 方法gcloud compute addresses list --uri 找出預留地址的網址。

    • SERVICE_ATTACHMENT:服務生產者服務連結的 URI。例如:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • NETWORK_URI:端點的 VPC 網路。使用 network.list 方法gcloud compute networks list --uri 找出網路的 URI。

    • NAMESPACE:端點的命名空間。如果您指定的命名空間不存在,系統會建立該命名空間。如果省略 namespace 欄位,系統會指派 goog-psc-default 的預設命名空間。

使用共用虛擬私有雲網路的 IP 位址建立端點

服務專案管理員可以在共用虛擬私有雲服務專案中建立端點,並使用來自已連線共用虛擬私有雲網路的 IP 位址。 Trusted Cloud 控制台不支援建立這類端點。您必須使用 Google Cloud CLI 或傳送 API 要求。詳情請參閱「共用虛擬私有雲」。

這個範例說明如何使用共用虛擬私有雲網路的 IP 位址建立端點,並從單一區域存取該端點。如要啟用全域存取權,或選擇 Service Directory 的命名空間,請參閱「建立端點」。

gcloud

  1. 如要保留內部 IP 位址並指派給端點,請執行下列其中一項操作:

    IP 位址必須與服務生產者的服務附件位於相同區域。

  2. 如要在服務專案中建立端點,請執行下列任一操作。

    • 如果您有權使用主專案中的所有子網路,請使用下列指令:

      gcloud compute forwarding-rules create ENDPOINT_NAME \
          --region=REGION \
          --network=projects/HOST_PROJECT/global/networks/HOST_NETWORK \
          --address=projects/ADDRESS_PROJECT/regions/REGION/addresses/ADDRESS_NAME \
          --target-service-attachment=SERVICE_ATTACHMENT
      

      更改下列內容:

      • ENDPOINT_NAME:要指派給端點的名稱。
      • REGION:端點的區域。這必須是包含服務生產者服務附件的相同區域。
      • HOST_PROJECT:共用虛擬私有雲網路專案的專案 ID。
      • HOST_NETWORK:共用 VPC 網路的名稱,其中包含端點的 IP 位址。
      • ADDRESS_PROJECT:您保留 IP 位址的專案 ID。可以是服務專案或主專案。
      • ADDRESS_NAME:保留 IP 位址的名稱。
      • SERVICE_ATTACHMENT:服務生產者服務連結的 URI。例如:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
    • 如果您只有權使用主專案中的部分子網路,請使用下列指令指定共用子網路:

      gcloud compute forwarding-rules create ENDPOINT_NAME \
          --region=REGION \
          --subnet=projects/HOST_PROJECT/regions/REGION/subnetworks/HOST_SUBNET \
          --address=projects/ADDRESS_PROJECT/regions/REGION/addresses/ADDRESS_NAME \
          --target-service-attachment=SERVICE_ATTACHMENT
      

      HOST_SUBNET 替換為含有端點 IP 位址的子網路名稱。

API

  1. 如要保留內部 IP 位址並指派給端點,請執行下列其中一項操作:

    IP 位址必須與服務生產者的服務附件位於相同區域。

  2. 如要在服務專案中建立端點,請執行下列任一操作。

    • 如果您有權使用主專案中的所有子網路,請提出下列要求:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules
      {
        "name": "ENDPOINT_NAME",
        "IPAddress": "projects/ADDRESS_PROJECT/regions/REGION/addresses/ADDRESS_NAME",
        "target": "SERVICE_ATTACHMENT",
        "network": "projects/HOST_PROJECT/global/networks/HOST_NETWORK"
      }
      

      更改下列內容:

      • PROJECT:服務專案 ID。
      • REGION:端點的區域。這個區域必須與服務生產者的服務連結所在的區域相同。
      • ENDPOINT_NAME:要指派給端點的名稱。
      • ADDRESS_PROJECT:您保留 IP 位址的專案 ID。這可以是服務專案或主專案。
      • ADDRESS_NAME:保留 IP 位址的名稱。
      • SERVICE_ATTACHMENT:服務供應商服務連結的 URI。例如:projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
      • HOST_PROJECT:共用虛擬私有雲網路專案的專案 ID。
      • HOST_NETWORK:包含端點 IP 位址的共用 VPC 網路名稱。
    • 如果您只有權使用主專案中的部分子網路,請發出下列要求來指定共用子網路:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules
      {
        "name": "ENDPOINT_NAME",
        "IPAddress": "projects/ADDRESS_PROJECT/regions/REGION/addresses/ADDRESS_NAME",
        "target": "SERVICE_ATTACHMENT",
        "subnetwork": "projects/HOST_PROJECT/regions/REGION/subnetworks/HOST_SUBNET"
      }
      

      HOST_SUBNET 替換為包含端點 IP 位址的子網路名稱。

列出端點

您可以列出所有已設定的端點。

控制台

  1. 前往 Trusted Cloud 控制台的「Private Service Connect」頁面。

    前往 Private Service Connect

  2. 按一下「已連線的端點」分頁標籤。

    系統會顯示端點。

gcloud

gcloud compute forwarding-rules list \
    --filter 'target~serviceAttachments'

輸出結果會與下列內容相似:

NAME  REGION  IP_ADDRESS  IP_PROTOCOL  TARGET
RULE          IP          TCP          REGION/serviceAttachments/SERVICE_NAME

API

這項 API 呼叫會傳回所有轉送規則,而不只是用於存取服務的端點。

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules

更改下列內容:

  • PROJECT_ID:包含端點的專案。
  • REGION:端點的區域。

查看端點詳細資料

您可以查看端點的所有設定詳細資料,包括端點的連線狀態

控制台

  1. 前往 Trusted Cloud 控制台的「Private Service Connect」頁面。

    前往 Private Service Connect

  2. 按一下「已連線的端點」分頁標籤。

  3. 按一下要查看的端點。

gcloud

gcloud compute forwarding-rules describe \
    ENDPOINT_NAME --region=REGION

更改下列內容:

  • ENDPOINT_NAME:端點名稱。
  • REGION:端點的區域。

API

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME

更改下列內容:

  • PROJECT_ID:包含端點的專案。
  • REGION:端點的區域。
  • ENDPOINT_NAME:端點名稱。

為端點加上標籤

您可以管理端點的標籤。如需詳細操作說明,請參閱標記資源

刪除端點

您可以刪除端點。

不過,刪除端點時,系統不會刪除下列服務目錄設定:

  • Service Directory 命名空間
  • Service Directory DNS 區域

其他服務可以使用 Service Directory 命名空間和 Service Directory DNS 區域。請先確認命名空間為空白,再刪除 Service Directory 命名空間刪除 Service Directory DNS 區域

控制台

  1. 前往 Trusted Cloud 控制台的「Private Service Connect」頁面。

    前往 Private Service Connect

  2. 按一下「已連線的端點」分頁標籤。

  3. 選取要刪除的端點,然後按一下「刪除」

gcloud

gcloud compute forwarding-rules delete ENDPOINT_NAME \
    --region=REGION

更改下列內容:

  • ENDPOINT_NAME:端點名稱。
  • REGION:端點的區域。

API

DELETE https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME

更改下列內容:

  • PROJECT_ID:包含端點的專案。
  • REGION:端點的區域。
  • ENDPOINT_NAME:端點名稱。

透過混合式網路存取端點

連線至 Trusted Cloud 的網路中的用戶端,只要使用 Cloud Interconnect 的 VLAN 連結或 Cloud VPN 通道,就能連線至 Private Service Connect 端點。

  • VLAN 連結或 Cloud VPN 通道必須在端點所在的虛擬私有雲網路 (或共用虛擬私有雲網路) 中終止。對等互連虛擬私有雲網路中的用戶端無法連上端點。

  • 如果設定全域存取權,來自 VLAN 連結或 Cloud VPN 通道的用戶端流量就能抵達其他區域的端點。

  • VLAN 連結支援 Dataplane v1 和 Dataplane v2。 如要進一步瞭解 Dataplane 版本,請參閱「Dataplane v2」。

如要使用端點的 DNS 名稱存取端點,您必須在其他網路中設定系統,以便查詢私人 DNS 區域。

如果您使用 Cloud DNS 實作私人 DNS 區域,請完成下列步驟:

  • 在其他網路連線的虛擬私有雲網路中,建立傳入伺服器政策

  • 找出 VLAN 連結或 Cloud VPN 通道所在區域的輸入轉送器進入點,也就是其他網路連線的虛擬私有雲網路。

  • 在其他網路中設定系統和 DNS 名稱伺服器,將端點的 DNS 名稱轉送至與 VLAN 連結或 Cloud VPN 通道位於相同區域的傳入轉送器進入點,該連結或通道會連線至虛擬私有雲網路。

查看 Service Directory DNS 區域

如果符合自動 DNS 設定的先決條件,系統會建立名稱格式為 NAMESPACE--REGION 的 DNS 區域。

主控台

  1. 前往 Trusted Cloud 控制台的「Cloud DNS 區域」頁面。

    前往 Cloud DNS 區域

  2. 找出名為 NAMESPACE--REGION 的私有區域。

gcloud

  • 執行下列指令,列出所有私有 DNS 區域:

    gcloud dns managed-zones list \
        --filter="visibility=private"
    
  • 執行下列指令,取得名稱為 NAMESPACE--REGION 的可用區詳細資料。

    gcloud dns managed-zones describe NAMESPACE--REGION
    

如果沒有區域,請查看端點的詳細資料,並檢查端點設定是否包含命名空間的值。

設定 DNS 的其他方式

如果不符合自動 DNS 設定的先決條件,可以透過其他方式建立 DNS 項目:

設定 Service Directory DNS 區域

如果端點已向服務目錄註冊,但連線的已發布服務未設定網域名稱,系統就不會進行任何 DNS 變更。

如要複製自動 DNS 設定,可以手動設定由 Service Directory 命名空間支援的 Service Directory DNS 區域。建立區域後,系統會自動建立端點的 DNS 項目。

使用下列設定建立 Service Directory DNS 區域

  • 可用區名稱:指定 NAMESPACE--REGION,其中 NAMESPACE 是端點註冊的命名空間,REGION 則是端點建立的區域。

  • DNS 名稱:服務生產者用於發布服務的 DNS 網域。如需這項資訊,請洽詢服務製作人。

    DNS 名稱的格式可能為 REGION.p.DOMAIN。舉例來說,如果服務生產者的公開網域是 example.com,且發布的服務位於 us-west1,建議他們使用 us-west1.p.example.com 網域名稱提供服務。請加入結尾點,例如 us-west1.p.example.com.

  • Service Directory 命名空間:您為這個端點設定的命名空間。

查看端點詳細資料,找出 Service Directory 命名空間和區域。

完成這項設定後,如果您已使用 us-west1.p.example.com DNS 名稱設定 Service Directory DNS 區域,並建立名稱為 analytics 的端點,系統就會自動建立 analytics.us-west1.p.example.com 的 DNS 記錄。

向 Service Directory 註冊端點

新端點會自動向 Service Directory 註冊。不過,如果是在啟用自動向 Service Directory 註冊端點前建立端點,可能就會缺少這項設定。

您可以刪除端點,然後建立新端點,新端點會自動向 Service Directory 註冊。

或者,您也可以按照下列步驟,向 Service Directory 命名空間註冊現有端點。

  1. 為端點 NAMESPACE 建立 Service Directory 命名空間

  2. 為端點 SERVICE_NAME 建立 Service Directory 服務

    服務名稱請與端點使用的轉送規則名稱相同,即 ENDPOINT_NAME

  3. 使用名稱 default 建立 Service Directory 端點,並使用端點的 IP 位址和通訊埠 (443)。

向 Service Directory 註冊端點後,請按照操作說明設定 Service Directory DNS 區域

手動設定 DNS

如果您已禁止自動設定 DNS,或設定中未啟用這項功能,可以使用 Cloud DNS 手動建立 DNS 記錄

如需詳細資訊,請參閱以下頁面:

  • 存取權控管DNS 管理員角色 (roles/dns.admin) 提供建立 DNS 區域和記錄所需的權限。

  • 建立不公開區域

    • 設定私人區域時,您會提供 DNS 名稱。使用服務生產者用於發布服務的 DNS 網域。如需這項資訊,請洽詢服務製作人。

      格式可能如下: REGION.p.DOMAIN。舉例來說,如果服務生產者的公開網域是 example.com,且發布的服務位於 us-west1,建議他們使用 us-west1.p.example.com 網域名稱提供服務。

  • 新增記錄

已知問題

健康狀態不良的後端會收到具有全域存取權的流量

只有在確認服務生產者的負載平衡器已設定為全域存取時,才啟用全域存取。如果為未使用全域存取權的已發布服務建立全域存取端點,流量可能會傳送至狀況不佳的後端,並遭到捨棄。

疑難排解

無法建立私人 DNS 區域

建立端點時,系統會建立 Service Directory DNS 區域。建立區域失敗的原因如下:

  • 您尚未在專案中啟用 Cloud DNS API。

  • 您的權限不足,無法建立 Service Directory DNS 區域。

  • 這個虛擬私有雲網路中已有相同區域名稱的 DNS 區域。

  • 這個 VPC 網路中已有名稱相同的網域 DNS 區域。

如要手動建立 Service Directory DNS 區域,請按照下列步驟操作:

  1. 確認專案已啟用 Cloud DNS API。

  2. 確認您具備建立 Service Directory DNS 區域的必要權限:

    • dns.managedZones.create
    • dns.networks.bindPrivateDNSZone
    • servicedirectory.namespaces.associatePrivateZone
  3. 如果存在衝突區域,但您不再需要該區域,請刪除 DNS 區域

  4. 建立 Service Directory DNS 區域,該區域由與端點相關聯的 Service Directory 命名空間支援。

設定全域存取權時,端點建立作業會失敗

並非所有 Private Service Connect 發布的服務都支援具有全域存取權的端點。如果您建立具有全域存取權的端點,但發布的服務不支援這項功能,系統會顯示以下錯誤訊息:

Private Service Connect global access is not supported for the given forwarding rule, since its producer service does not support consumer global access.

建立端點時不選取全域存取權選項。

端點建立成功,但連線尚未建立

如果已成功為發布的服務建立端點,但連線尚未建立,請檢查端點的連線狀態。連線狀態可能會顯示解決問題的步驟。

傳播連線錯誤

如要瞭解如何排解傳播連線問題,請參閱「排解 Private Service Connect 連線傳播錯誤」。

端點發生效能問題或連線逾時

如果端點發生效能問題或間歇性連線逾時,可能是因為封包遺失。您可以查看下列各節所述的指標,調查封包遺失情形。

傳送至已發布服務的封包遭捨棄

private_service_connect/consumer/dropped_sent_packets_count指標會追蹤來自 Private Service Connect 消費者 (例如端點) 的封包,這些封包會因端點超出服務的連線數上限而遭到捨棄。

如果端點回報這項指標的值,請考慮下列解決方案:

  • 建立其他端點,連線至已發布的服務。
  • 減少透過這個端點建立的連線數量。
  • 請服務生產者提高發布服務的容量,例如新增更多虛擬機器 (VM) 執行個體或網路端點。

發布的服務捨棄的封包

這項指標會追蹤從已發布服務傳送至 Private Service Connect 消費者 (例如端點) 的封包,這些封包因 Private Service Connect 找不到相符的回應封包連線而遭到捨棄。private_service_connect/consumer/dropped_received_packets_count

Private Service Connect 只允許從用戶端虛擬私有雲網路發起的連線。當消費者啟動連線時,系統會追蹤連線,以便將已發布服務的回應封包與現有連線配對。如果 Private Service Connect 找不到相符的回應封包,就會捨棄該封包。

如果已發布的服務在連線逾時後傳送回應封包,Private Service Connect 可能找不到相符的封包。如果看到這個指標的值,請與服務製作人聯絡。 他們或許可以設定服務來避免這個問題