本頁面適用於 Apigee,但不適用於 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本文說明如何使用 Private Service Connect (PSC),在 Apigee 和後端目標服務之間建立私人連線。請注意,在 Apigee 和後端目標服務之間流動的 API Proxy 流量稱為「南向」流量。
本文件所述的南向網路設定步驟適用於已與虛擬私有雲建立同盟關係的 Apigee 執行個體,以及未與虛擬私有雲建立同盟關係的執行個體。
將 Apigee 私下連結至後端目標
如要將 Apigee 私下連結至後端目標,您必須建立兩個實體:在目標部署的 VPC 網路中建立服務連結,以及在 Apigee VPC 中建立端點連結。這兩個實體可讓 Apigee 連線至目標服務。
圖 1 說明 Apigee 網路架構,可透過 PSC 支援全球對向下連線:

限制
在 Apigee 機構中,每個服務附件只能有一個端點附件。舉例來說,假設您有 10 個公開目標服務的服務附件,您可以在 Apigee 機構中建立 10 個端點附件,每個服務附件一個。
範例:使用 PSC 將目標服務公開給 Apigee
本例說明如何使用 PSC,讓 Apigee 與在非與 Apigee 直接對等的 VPC 網路中執行的目標服務進行通訊。本例中的步驟會使用 gcloud
和 Apigee API 呼叫,在目標部署的 VPC 網路中設定服務附件,以及在 Apigee VPC 中設定端點附件。
情境範例
這個範例會考慮在 VPC 中執行的代管執行個體群組 (MIG) 上,部署 Apache 網路伺服器的情況。為了在這個情境中與 Apigee 通訊,我們會透過 ingress 閘道公開服務。
設定負載平衡器
在您要公開的微服務所在的 VPC 中設定負載平衡器:
- 建立下列環境變數:
export PROJECT_ID=YOUR_PROJECT_ID
export IMAGE_PROJECT=debian-cloud
export IMAGE_FAMILY=debian-12
export BACKEND=foo
export REGION=us-west1
export ZONE=us-west1-a
export NETWORK=default
export SUBNET_NAME=default
- 建立執行個體範本:
gcloud compute instance-templates create "$BACKEND" \ --tags=psc-demo,http-server,https-server \ --image-family "$IMAGE_FAMILY" --image-project "$IMAGE_PROJECT" \ --network "$NETWORK" --subnet "$SUBNET_NAME" --region "$REGION" \ --project "$PROJECT_ID" \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>foo[/]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html sudo mkdir /var/www/html/foo echo '<!doctype html><html><body><h1>foo[/foo]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/foo/index.html"
- 建立代管執行個體群組:
gcloud compute instance-groups managed create $BACKEND \ --project $PROJECT_ID --base-instance-name $BACKEND \ --size 1 --template $BACKEND --region $REGION
- 建立健康狀態檢查:
gcloud compute instance-groups managed set-named-ports $BACKEND \ --project $PROJECT_ID --region $REGION --named-ports http:80
gcloud compute health-checks create tcp hc-tcp-$BACKEND \ --region=$REGION \ --description="health check for psc backend" \ --port-name=http --project=$PROJECT_ID
- 建立負載平衡器:
- 建立後端服務:
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=$REGION \ --network=$NETWORK \ --health-checks=hc-tcp-$BACKEND \ --health-checks-region=$REGION \ --project=$PROJECT_ID
- 將代管執行個體群組新增至後端服務:
gcloud compute backend-services add-backend be-ilb \ --region=$REGION \ --instance-group=$BACKEND \ --instance-group-zone=$ZONE \ --project=$PROJECT_ID
- 建立轉送規則:
gcloud compute forwarding-rules create fr-ilb \ --region=$REGION \ --load-balancing-scheme=internal \ --network=$NETWORK \ --subnet=$SUBNET_NAME \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=$REGION \ --project=$PROJECT_ID
- 建立後端服務:
建立服務附件
在部署目標服務的虛擬私有雲網路中,建立 PSC 服務附件。
- 如要執行這項工作,您必須具備
compute.subnetworks.create
權限或 Compute Network Admin IAM 角色 (roles/compute.networkAdmin
)。 - 建立 PSC 子網路,並將
purpose
參數設為PRIVATE_SERVICE_CONNECT
:gcloud compute networks subnets create PSC_SUBNET_NAME \ --network NETWORK --region=REGION --purpose=PRIVATE_SERVICE_CONNECT --range=RANGE
gcloud compute --project=$PROJECT_ID firewall-rules create allow-psc-nat-80 \ --direction=INGRESS --priority=1000 --network NETWORK --action=ALLOW --rules=tcp:80 \ --source-ranges=RANGE --target-tags=psc-demo
如需指令參數的詳細說明,請參閱 Google Cloud CLI 參考資料。您也可以在控制台或透過 API執行這個步驟。
例如:
gcloud compute networks subnets create psc-subnet --network default \ --region=us-west1 --purpose=PRIVATE_SERVICE_CONNECT --range=10.100.0.0/28
- 在虛擬私有雲網路中建立服務附件:
- 取得內部負載平衡器的轉送規則。您將在後續步驟中使用此規則:
gcloud compute forwarding-rules list --project=PROJECT_ID
其中 PROJECT_ID 是 Google Cloud 專案 ID。例如:
輸出內容範例:
NAME REGION IP_ADDRESS IP_PROTOCOL TARGET k8s2-tcp-e61tta3j-apps-istio-ingressgateway-0kl92frk us-west1 10.138.0.53 TCP
- 建立服務附件:
gcloud compute service-attachments create PSC_NAME \ --region=REGION --producer-forwarding-rule=PRODUCER_FORWARDING_RULE \ --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=PSC_SUBNET_NAME --project=PROJECT_ID
PSC_NAME 參數必須是長度介於 1 到 63 個字元的字串,且只能包含小寫字母、數字和連字號。開頭不得有數字和連字號。此外,也不能有尾碼號。如需此指令的參數詳細說明,請參閱 Google Cloud CLI 參考資料。
例如:
gcloud compute service-attachments create gkebackend \ --region=us-west1 --producer-forwarding-rule=k8s2-tcp-e62tta1j-apps-istio-ingressgateway-0kl92frk \ --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-subnet --project=my-project
您也可以在管理中心使用者介面中執行這個步驟。例如,請參閱「發布具有自動專案核准功能的服務」。
- 取得內部負載平衡器的轉送規則。您將在後續步驟中使用此規則:
建立端點連結
在 Apigee 機構中建立端點連結。您可以透過指令列或 Apigee 端點附件 UI 執行此步驟。
前置條件: 在建立端點連結之前,您必須建立負載平衡器和服務連結,如前文所述,透過 Private Service Connect (PSC) 發布要公開的服務。如要進一步瞭解如何使用 PSC 公開服務,請參閱「使用 Private Service Connect 發布代管服務」。請注意,服務附件必須設為接受新的連線。
指令列
透過指令列在 Apigee VPC 中建立端點附件:
- 取得服務附件資源:
gcloud compute service-attachments list
這個指令會傳回服務附件資訊。您將在下一個步驟中使用這項資訊。例如:
NAME REGION TARGET_SERVICE CONNECTION_PREFERENCE gkebackend us-west1 k8s2-tcp-tgysilgj-apps-istio-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
- 取得 Apigee API 的驗證權杖:
TOKEN="$(gcloud auth print-access-token)"
- 請使用這個 Apigee API 建立端點附件。請在要求的內文中使用從
gcloud compute service-attachments list
指令傳回的值:curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/endpointAttachments?endpointAttachmentId=EA_NAME" \ -d '{ "location": "REGION", "serviceAttachment": "projects/PROJECT_ID/regions/REGION/serviceAttachments/SA_NAME" }'
其中:
- REGION 是服務附件的地區。例如:
us-west1
- ORGANIZATION 是您的 Apigee 機構名稱。
- PROJECT_ID 是建立服務附件的 Google Cloud 專案。
- EA_NAME 是端點附件的名稱。名稱不得重複。您不得使用其他端點附件,且無法在日後變更名稱。名稱開頭必須為小寫英文字母,後面最多可接 31 個小寫英文字母、數字或連字號,但結尾不得為連字號。長度下限為 2。
- SA_NAME 是服務附件的名稱。
Apigee 會啟動長時間執行的作業。作業完成後,您會看到類似以下的回應:
{ "name": "organizations/my-organization/operations/6e249895-e78e-48f0-a28f-7140e15e1676", "metadata": { "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata", "operationType": "INSERT", "targetResourceName": "organizations/my-organization/endpointAttachments/gkebackend", "state": "FINISHED" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.apigee.v1.EndpointAttachment", "name": "organizations/my-organization/endpointAttachments/gkebackend", "location": "us-west1", "host": "7.0.3.4", "serviceAttachment": "projects/my-project/regions/us-west1/serviceAttachments/gkebackend" } }
- REGION 是服務附件的地區。例如:
- 如要檢查新端點是否處於啟用狀態,請按照下列步驟操作:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/endpointAttachments/EA_NAME"
在回應中尋找
"state": "ACTIVE"
。如要連線至服務附件後方的服務,您可以使用回應中傳回的 IP 位址 (在
host
欄位中),也可以使用在私人 DNS 區域中建立的 DNS 記錄。詳情請參閱以下各節。 -
使用 IP 位址
您可以使用回應中傳回的 IP 位址
使用服務附件主機 IP 做為 API Proxy 的目標。例如:7.0.3.4
連線至服務附件後方的服務,如下一個步驟所示。請注意,7.0.3.4
是 Apigee 指派給入口閘道的私人使用的公開 IP (PUPI)。我們不會在網路上宣傳這個範圍,而且沒有任何 Google 服務會在內部使用這個範圍的 IP。<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://7.0.3.4/orders</URL> </HTTPTargetConnection> </TargetEndpoint>
使用 DNS 記錄
如果您在 Google Cloud 專案中設定了私人 DNS 區域,可以使用 DNS 記錄連線至服務附件的後端服務。基本步驟如下:
- 如「透過私人 DNS 對等區域連線」一文所述,DNS 對等連線必須在 Google Cloud 專案中設定,才能使用。
- 在私人 DNS 區域中,為 PSC 端點附件 IP 建立 DNS 記錄 (A 記錄)。
- 將 Apigee API proxy 設定為使用 PSC 端點 DNS 記錄做為 API proxy 的目標。例如:
<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://my-private-dns-zone.example.com/orders</URL> </HTTPTargetConnection> </TargetEndpoint>
Apigee UI
在 Apigee 使用者介面中,在 Apigee 機構中建立端點連結:
- 在 Cloud 控制台中,依序前往「管理」>「端點附件」。
- 按一下「+ 端點附件」。畫面上會顯示「Endpoint attachment」對話方塊。
- 輸入端點附件的名稱。名稱不得重複。您不得使用其他端點附件,且無法在日後變更名稱。名稱開頭必須為小寫英文字母,後面最多可接 31 個小寫英文字母、數字或連字號,但結尾不得為連字號。長度下限為 2。
- 點選「下一步」。
- 從「Service Attachment」下拉式清單中,選擇要連結的服務附件。
UI 的行為取決於您的權限。如果您有權列出區域和服務附件,只要從下拉式清單中選取服務附件即可。如果您沒有列出區域的權限,系統會顯示靜態區域清單,您可以從中選取。如果您沒有列出服務附件的權限,就必須手動輸入名稱。所在位置和服務連結名稱。請注意,如果您沒有列出地區的權限,系統會顯示靜態地區清單供您選擇。
- 確認服務端點可接受連線。如需步驟說明,請參閱「檢查及管理附件連線」。
- 點選「下一步」。
- 按一下「建立」,這項作業通常需要一或兩分鐘才能完成。
- 如要查看目前的建立狀態,請在清單頁面中按一下「重新整理」。
- 使用服務附件主機 IP 做為 API Proxy 的目標。建立程序完成後,主機 IP 會顯示在「Endpoint Attachments」UI 中,如以下螢幕截圖所示:
例如:<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://7.0.5.2/orders</URL> </HTTPTargetConnection> </TargetEndpoint>
檢查及管理附件連線
本節說明如何驗證服務附件是否可存取 Apigee 專案中的端點附件,以及如何變更連線偏好設定 (如有需要)。
- 請按照「列出已發布服務」中的步驟,查看專案中的服務附件清單。
- 依據「查看已發布服務的詳細資料」一文的說明,選取要連結的服務連結。
- 為已發布的服務附件選擇連線偏好設定。Private Service Connect 提供兩個選項,如下所述。如要變更目前的連線偏好設定,請按照「變更已發布服務的連線偏好設定」一文中的步驟操作。
- 自動接受所有連線:服務附件會接受來自任何專案的端點附件。如果您選擇這個選項,服務附件就能接受 Apigee 專案中端點附件的連線。您不需要採取進一步的設定。
- 接受所選專案的連線:您可以指定服務附件將接受連線的專案。如果您選擇這個選項,請務必將 Apigee 專案的專案 ID 新增至服務附件。如螢幕截圖所示,您可以在「Endpoint attachment」UI 的「Verify project connection」步驟中找到 Apigee 專案 ID:
您也可以使用 Apigee Organizations API 擷取 Apigee 專案 ID,該 API 會在名為
apigeeProjectId
的欄位中傳回 ID。
- 如果您變更了連線偏好設定,請儲存所做的變更。
- 在 Cloud 控制台中,依序前往「管理」>「端點附件」。 您也可以使用 Apigee Endpoints API 列出端點附件。
- 在附件清單中,確認 PSC 連線狀態現在為
ACCEPTED
。如果這個欄位顯示的狀態不是ACCEPTED
,請參閱排解 PSC 連線狀態問題。
管理端點連結
Apigee endpointAttachments API 提供建立、刪除、取得及列出端點附件的相關方法。
列出端點連結
您可以在 Apigee 端點附件 UI 中查看端點附件清單,也可以呼叫 Apigee Endpoints API。
如何在 Apigee UI 中列出端點附件:
- 在 Cloud 控制台中,依序前往「管理」>「端點附件」。
- 查看端點連結清單。
建立端點連結
如要在 UI 中或使用 Apigee Endpoints API 建立端點連結,請參閱「建立端點連結」。
刪除端點連結
如要使用 Apigee UI 刪除端點,請按照下列步驟操作:
- 在 Cloud 控制台中,依序前往「管理」>「端點附件」。
- 選取要刪除的端點附件。
- 按一下「Delete Endpoint Attachment」(刪除端點附件)。
您也可以使用 Apigee Endpoints API 列出、建立及刪除端點附件。
連線至私人 DNS 對等互連區域
對等互連區域是 Cloud DNS 私人區域,可讓您在不同 VPC 網路的 Cloud DNS 區域之間傳送 DNS 要求。
如要提供 DNS 對等互連,您必須建立一個 Cloud DNS 私人對等互連區域,並設定這個區域在可提供該區域命名空間記錄的虛擬私人雲端網路中執行 DNS 查詢。DNS 對等互連區域執行查詢所在的虛擬私人雲端網路,稱為「DNS 供應商網路」。詳情請參閱「對等區域」。
您可以設定 Apigee,讓其解析 DNS 供應商網路中的私人 DNS 區域。這項設定可讓 Apigee 解析使用私人網域名稱的專案中,目標端點的解析。
我們將在本節探討兩個主要用途,在這些用途中,Apigee 會在啟用或未啟用 VPC 對等互連功能的情況下進行設定:
總覽
為了執行其功能,Apigee 需要連結至您管理的後端目標。這些目標可能會透過公用或私人 DNS 解析。如果目標可公開解析,則沒有問題,Apigee 後端目標會指向服務的公開位址。私人端點可以是您代管及管理的靜態 IP 位址或可解析的 DNS 名稱。為瞭解析私人目標端點,通常會在 Google Cloud 專案中代管私人 DNS 區域。根據預設,Apigee 無法解析這些私人 DNS 名稱。
在啟用虛擬私有雲對等互連的情況下設定私人 DNS 對等互連
如果您在 Cloud 專案中代管 Cloud DNS 私人區域,且該區域與 Apigee 建立了對等連線,您可以設定 DNS 對等連線,讓 Apigee 解析私人區域中的名稱。根據預設,不公開區域只對其代管的 VPC 網路開放。如要瞭解如何設定私人 DNS 區域與 Apigee (服務供應商) 之間的 DNS 對等互連,請參閱「與服務供應商共用私人 DNS 區域」。
在未啟用虛擬私有雲對等互連功能時設定私人 DNS 對等互連
本節說明如何設定 Apigee,在未啟用虛擬私人雲端對等互連的專案中解析私人 DNS 名稱。圖 2 顯示設定,其中 Apigee 中的 DNS 對等區域會解析 Google Cloud 專案中代管的私人 DNS 區域中的私人網域名稱。

- 為確保順利執行,Apigee 必須在未建立 VPC 對等互連的情況下佈建。如要檢查是否已啟用 VPC 對等連線,請執行這個 Apigee API 呼叫。您必須具備
apigee.admin
權限才能執行此呼叫:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION"
其中:
ORGANIZATION
是 Apigee 機構的名稱。
如果回應包含
"disableVpcPeering": "true"
,表示未啟用 VPC 對等互連。 - 取得 Apigee 專案編號:
gcloud projects describe APIGEE_PROJECT_ID --format="value(projectNumber)"
其中:
APIGEE_PROJECT_ID
是 Apigee 專案的專案 ID。通常是 Apigee 機構的名稱。
- 在包含供應商虛擬私有雲網路的專案中,將
dns.networks.targetWithPeeringZone
權限授予 Apigee 專案服務帳戶 (P4SA)。如要取得這項權限,您可以將dns.peer
角色新增至 Apigee P4SA,如下所示:gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT \ --role=roles/dns.peer
其中:
PRODUCER_PROJECT_ID
是含有供應商虛擬私有雲網路的專案 ID。SERVICE_ACCOUNT
是 Apigee P4SA。例如:service-APIGEE_CONSUMER_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com
。其中
APIGEE_CONSUMER_PROJECT_NUMBER
是您在上一個步驟中擷取的 Apigee 專案編號。
- 在專案中使用私人 DNS 區域建立 DNS 對等互連區域:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/dnsZones?dnsZoneId=DNS_ZONE_ID" \ -d '{ "domain": "DOMAIN", "description": "DESCRIPTION", "peeringConfig": { "targetProjectId": "PRODUCER_PROJECT_ID", "targetNetworkId": "PRODUCER_VPC_NETWORK" } }'
其中:
ORGANIZATION
是 Apigee 機構的名稱。DNS_ZONE_ID
是您要建立的 DNS 區域名稱。DOMAIN
是這個代管區域的 DNS 名稱,例如example.com
。DESCRIPTION
是 DNS 區域的簡短說明。字元上限:1024PRODUCER_PROJECT_ID
是含有供應商虛擬私有雲網路的專案。PRODUCER_VPC_NETWORK
是客戶專案中的虛擬私有雲網路。
- 驗證是否已成功建立對等連線:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/dnsZones/DNS_ZONE_ID"
其中:
- ORGANIZATION 是 Apigee 機構的名稱。
- DNS_ZONE_ID 是您建立的 DNS 區域名稱。
如果成功,回應會包含以下狀態碼:
"state": "ACTIVE"
- 對等互連完成後,您可以在不公開區域中建立 DNS 記錄,並在端點附件設定中參照該記錄。請參閱「建立端點連結」。
限制
請參閱「DNS 對等連線的限制和重點」。疑難排解
PSC 連線狀態問題
本節說明在已佈建端點附件且狀態為「Active」的情況下,可能的解決方案,但連線狀態並非「Accepted」。圖 3 顯示一些可能的連線狀態。

圖 3:端點連結狀態詳細資料
下表說明瞭狀態可能的原因:
連線狀態 | 可能的原因 | 建議解決方案 |
---|---|---|
已接受 | 服務連結已接受來自連線端點的連線。 | 不適用 |
待處理 | Apigee 專案 ID 可能不在消費者接受的專案清單或拒絕清單中。 | 將 Apigee 專案 ID 新增至服務附件中的消費者接受清單。請參閱「 變更已發布服務的連線偏好設定」。 |
已拒絕 | Apigee 專案 ID 在消費者拒絕清單中。 | 請從消費者拒絕清單中移除 Apigee 專案 ID,並將其新增至服務附件中的消費者接受清單。請參閱「管理已發布服務的存取權要求」。 |
FROZEN | 這個端點連結的服務連結已遭到暫停或停用。 | 請詳細說明服務附件。請參閱「查看已發布服務的詳細資料」。 |
已結束 | 這個端點連結的服務連結已刪除。 | 重新建立服務連結和端點連結。 |
NEEDS_ATTENTION | 服務連結已接受端點連結,但服務連結發生問題。 | 請詳細說明服務附件。請參閱「查看已發布服務的詳細資料」。 |
無法使用 | 連線狀態無法使用,這可能會在佈建期間發生。 | 請稍候幾分鐘,看看狀態是否有變化。 |
使用 Apigee 設定 PSC
請參閱 Apigee 與南向 PSC 目標的連線問題指南。