本頁內容適用於 Apigee,但不適用於 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本文說明如何使用 Private Service Connect (PSC),在 Apigee 與後端目標服務之間建立私人連線。請注意,在 Apigee 與後端目標服務之間流動的 API Proxy 流量稱為「南向」流量。
本文所述的南向網路設定步驟,適用於虛擬私有雲對等互連和非虛擬私有雲對等互連的 Apigee 執行個體。
以私密方式將 Apigee 連線至後端目標
如要以私有方式將 Apigee 連線至後端目標,您必須建立兩個實體:目標部署所在虛擬私有雲網路中的服務附件,以及 Apigee 虛擬私有雲中的端點附件。這兩個實體可讓 Apigee 連線至目標服務。
圖 1 說明 Apigee 網路架構,該架構支援透過 PSC 在多個區域間建立南向連線,以提供全球存取權:

限制
在 Apigee 機構中,每個服務附件只能有一個端點附件。舉例來說,假設您有 10 個服務附件,可公開目標服務。您可以在 Apigee 機構中建立 10 個端點附件,每個服務附件各一個。
範例:使用 PSC 將目標服務公開給 Apigee
這個範例說明如何使用 PSC,讓 Apigee 與在虛擬私有雲網路中執行的目標服務通訊,該虛擬私有雲網路並未直接與 Apigee 對等互連。本範例中的步驟會使用 gcloud
和 Apigee API 呼叫,在部署目標的虛擬私有雲網路中設定及設定服務附件,並在 Apigee 虛擬私有雲中設定端點附件。
情境示例
這個範例假設您在 VPC 中執行的代管執行個體群組 (MIG) 上部署了 Apache 網路伺服器。如要在這個情境中與 Apigee 通訊,我們需要透過 Ingress 閘道公開服務。
設定負載平衡器
在要公開微服務的虛擬私有雲中設定負載平衡器:
- 建立下列環境變數:
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 虛擬私有雲中,透過指令列建立端點連結:
- 取得服務連結資源:
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 指派給 Ingress 閘道的私用公開 IP (PUPI)。這個範圍的 IP 不會在網路上宣傳,Google 服務也不會在內部使用。<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://7.0.3.4/orders</URL> </HTTPTargetConnection> </TargetEndpoint>
使用 DNS 記錄
如果您在 Google Cloud 專案中設定私人 DNS 區域,可以使用 DNS 記錄連線至服務連結後方的服務。基本步驟如下。
- 如要使用這項功能,您必須先在 Google Cloud 專案中設定 DNS 對等互連,詳情請參閱「透過私人 DNS 對等互連區域連線」。
- 在私人 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 機構中建立端點連結:
在 Google Cloud 控制台中,前往「管理」>「端點附件」頁面。
- 按一下「+ 端點附件」。系統會顯示「端點連結」對話方塊。
- 輸入端點附件的名稱。名稱不得重複。不得有其他同名端點附件,且名稱無法變更。名稱開頭必須為小寫英文字母,後面最多可接 31 個小寫英文字母、數字或連字號,但結尾不得為連字號。長度下限為 2 個字元。
- 點選「下一步」。
- 從「Service Attachment」(服務連結) 下拉式清單中,選擇要連線的服務連結。
使用者介面的行為取決於您的權限。如果您有權列出區域和服務附件,只要從下拉式清單中選取服務附件即可。如果沒有列出區域的權限,系統會顯示靜態區域清單,您可以從清單中選取。如果沒有列出服務附件的權限,就必須手動輸入名稱。服務連結所在位置和名稱。請注意,如果您沒有列出區域的權限,系統會顯示靜態區域清單供您選擇。
- 確認服務端點可接受連線。如需步驟,請參閱「檢查及管理附件連線」。
- 點選「下一步」。
- 按一下「Create」(建立)。這項作業通常需要一到兩分鐘才能完成。
- 如要查看目前的建立狀態,請按一下清單頁面中的「重新整理」。
- 將服務附件主機 IP 做為 API Proxy 的目標。
建立程序完成後,主機 IP 會顯示在端點附件 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 機構 API 擷取 Apigee 專案 ID,該 API 會在名為
apigeeProjectId
的欄位中傳回 ID。
- 如果變更了連線偏好設定,請儲存變更。
在 Google Cloud 控制台中,前往「管理」>「端點附件」頁面。
您也可以使用 Apigee Endpoints API 列出端點附件。- 在附件清單中,確認 PSC 連線狀態現在為
ACCEPTED
。如果該欄位顯示的狀態不是ACCEPTED
,請參閱「排解 PSC 連線狀態問題」。
管理端點連結
Apigee endpointAttachments API 提供建立、刪除、取得及列出端點附件的方法。
列出端點連結
您可以在 Apigee 端點附件 UI 中查看端點附件清單,也可以呼叫 Apigee Endpoints API。
如要在 Apigee UI 中列出端點連結,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「管理」>「端點附件」頁面。
- 查看端點附件清單。
正在建立端點連結
如要在 UI 中或使用 Apigee Endpoints API 建立端點連結,請參閱「建立端點連結」。
正在刪除端點連結
如要使用 Apigee UI 刪除端點,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「管理」>「端點附件」頁面。
- 選取要刪除的端點附件。
- 按一下「刪除端點附件」。
您也可以使用 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 對等互連
如果您在與 Apigee 對等互連的 Cloud 專案中代管 Cloud DNS 私人區域,可以設定 DNS 對等互連,允許 Apigee 解析私人區域中的名稱。根據預設,不公開區域會專供代管該區域的虛擬私有雲網路使用。如要瞭解如何設定私人 DNS 區域與 Apigee (服務生產端) 之間的 DNS 對等互連,請參閱「與服務生產端共用私人 DNS 區域」。
未啟用虛擬私有雲對等互連時,設定私人 DNS 對等互連
本節說明如何設定 Apigee,在未啟用 VPC 對等互連的專案中解析私人 DNS 名稱。圖 2 顯示設定,其中 Apigee 中的 DNS 對等互連區域會解析 Google Cloud 專案中代管的私人 DNS 區域中的私人網域名稱。

- 前提是必須佈建 Apigee,且不使用虛擬私有雲對等互連。如要檢查 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 機構的名稱。
- 在包含生產者 VPC 網路的專案中,授予 Apigee 專案專屬服務帳戶 (P4SA)
dns.networks.targetWithPeeringZone
權限。如要取得這項權限,請按照下列步驟,將dns.peer
角色新增至 Apigee P4SA:gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT \ --role=roles/dns.peer
其中:
PRODUCER_PROJECT_ID
是含有供應商 VPC 網路的專案 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
是客戶專案中的 VPC 網路。
- 確認對等互連是否已成功建立:
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 | 服務連結已接受端點連結,但服務連結發生問題。 | 請詳細說明服務附件。請參閱「查看已發布服務的詳細資料」。 |
UNAVAILABLE | 連線狀態無法使用,這可能發生在佈建期間。 | 稍候幾分鐘,看看狀態是否會變更。 |
使用 Apigee 設定 PSC
請參閱「 Apigee connectivity issues with southbound PSC targets」劇本。