本頁面適用於 Apigee,但不適用於 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本文說明如何設定共用虛擬私有雲 (VPC) 主機,並將個別 Apigee 和後端目標服務專案連結至該主機。共用 VPC 網路可讓您透過 Google Cloud 導入集中管理的網路基礎架構。您可以在主專案中使用單一 VPC 網路,連結多個服務專案的資源。
共用虛擬私有雲的優點
Apigee 執行階段 (在 Google 代管的虛擬私有雲中執行) 會與您擁有的虛擬私有雲對等互連。在這個拓撲中,Apigee 執行階段端點可與您的 VPC 網路通訊,如下圖所示:
另請參閱 Apigee 架構總覽。
在許多情況下,上述拓撲圖過於簡單,因為虛擬私有雲網路是單一 Google Cloud 專案的一部分,許多機構都想遵循 資源層級結構的最佳做法,將基礎架構分割為多個專案。想像一下網路拓撲,其中 Apigee 租用戶專案與虛擬私有雲網路對等互連,但內部後端位於另一個專案的虛擬私有雲網路。如這張圖表所示:
如果您將 Apigee VPC 對等互連至後端 VPC (如圖所示),則可從 Apigee VPC 網路存取後端,反之亦然,因為網路對等互連是對稱的。不過,由於對等互連不是遞移的,因此 Apigee 租用戶專案只能與 Apigee 虛擬私有雲通訊,詳情請參閱 VPC 對等互連說明文件。如要讓這項功能運作,您可以在 Apigee 虛擬私有雲中部署額外的 Proxy,透過對等連結將流量轉送至後端虛擬私有雲;不過,這種做法會增加額外的營運開銷和維護成本。
共用虛擬私有雲可解決上述問題。共用虛擬私有雲可讓您在同一個機構的其他 Google Cloud 專案中,建立 Apigee 執行階段與後端之間的連線,而不需要額外的網路元件。
使用 Apigee 設定共用虛擬私有雲
本節說明如何將 Apigee VPC 服務專案附加到共用虛擬私有雲主機。主專案中定義的子網路會與服務專案共用。在後續章節中,我們會說明如何為在第二個 VPC 服務專案中部署的後端服務建立第二個子網路。下圖顯示所產生的架構:
Apigee 提供佈建指令碼,簡化建立所需拓樸結構的程序。請按照本節的步驟下載並使用佈建指令碼,透過共用虛擬私人雲端設定 Apigee。
必要條件
- 參閱「共用虛擬私人雲端總覽」一文中所述的概念。請務必瞭解主機專案和服務專案的概念。
- 建立新的 Google Cloud 專案,以便設定共用虛擬私人雲端。這個專案是主專案。 請參閱「建立及管理專案」。
- 請按照「佈建共用虛擬私有雲」一文中的步驟,為共用虛擬私有雲佈建專案。您必須是機構管理員,或是具備適當的管理 Identity and Access Management (IAM) 角色,才能啟用共用虛擬私人雲端的主專案。
- 建立第二個 Google Cloud 專案。這是一項「服務」專案。稍後您會將其附加至主專案。
下載指令碼
Apigee 提供佈建指令碼,簡化建立所需拓樸結構的程序。您必須從 GitHub 提取指令碼:
- 複製包含指令碼的 GitHub 專案:
git clone https://github.com/apigee/devrel.git
- 前往專案中的以下目錄:
cd devrel/tools/apigee-x-trial-provision
- 設定下列環境變數:
export HOST_PROJECT=HOST_PROJECT_ID
export SERVICE_PROJECT=SERVICE_PROJECT_ID
其中:
HOST_PROJECT_ID
是您建立的共用虛擬私有雲主專案 ID,為必要條件之一。SERVICE_PROJECT_ID
是您在先決條件中建立的 Google Cloud 服務專案專案 ID。
設定主專案
- 設定下列環境變數:
YOUR_SHARED_VPC
是共用虛擬私有雲網路的名稱。YOUR_SHARED_SUBNET
是共用虛擬私有雲子網路的名稱。CIDR_BLOCK
是 Apigee 虛擬私人雲端的 CIDR 區塊。例如:10.111.0.0/23
。- 如要設定 Apigee VPC 對等連線和防火牆,請執行以下選項的腳本:
./apigee-x-trial-provision.sh \ -p $HOST_PROJECT --shared-vpc-host-config --peering-cidr $PEERING_CIDR
指令碼會設定主機專案;輸出內容會類似以下內容,其中
NETWORK
和SUBNET
代表主機專案下的完整路徑:export NETWORK=projects/$HOST_PROJECT/global/networks/$NETWORK
export SUBNET=projects/$HOST_PROJECT/regions/us-west1/subnetworks/$SUBNET
- 匯出在輸出內容中傳回的變數。
export NETWORK=YOUR_SHARED_VPCexport SUBNET=YOUR_SHARED_SUBNET
export PEERING_CIDR=CIDR_BLOCK
其中:
設定服務專案
在這個步驟中,您會設定服務專案。指令碼完成後,會在 Apigee 環境中建立及部署範例 API Proxy,供您用於測試佈建作業。
- 再次執行
apigee-x-trial-provision.sh
指令碼,為服務專案提供共用網路設定:./apigee-x-trial-provision.sh \ -p $SERVICE_PROJECT
這個指令碼會在 Apigee 環境中建立範例 Proxy,並將 curl 指令列印到
STDOUT
,您可以呼叫該指令來測試佈建作業。 - 呼叫測試 API Proxy。例如:
curl -v https://10-111-111-111.nip.io/hello-world
為後端服務設定其他服務專案
最佳做法是將 Google Cloud 基礎架構分割成多個專案。請參閱「 為 Google Cloud 登陸區決定資源階層」一文。本節說明如何在個別服務專案中部署後端服務,並將其附加至共用虛擬私有雲主機。由於 Apigee 服務專案和後端服務專案都已附加至共用虛擬私有雲主機,因此 Apigee 可以將後端服務用作 API 代理目標。
先決條件
為了執行這些步驟,我們假設您已設定共用虛擬私有雲,並與後端服務專案共用,如「設定共用虛擬私有雲」一文所述。
設定服務專案
在本節中,您將測試其他共用 VPC 子網路中的後端服務,在主專案中建立第二個子網路,並使用該子網路的私人 RFC1918 IP 位址做為 Apigee API 代理程式的目標網址。
- 在後端服務專案中執行下列指令,查看所有可用的共用子網路:
gcloud compute networks subnets list-usable --project $HOST_PROJECT --format yaml
輸出內容範例:
ipCidrRange: 10.0.0.0/20 network: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/global/networks/hub-vpc subnetwork: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/regions/europe-west1/subnetworks/sub1
- 建立下列環境變數:
BACKEND_SERVICE_PROJECT=PROJECT_ID
SHARED_VPC_SUBNET=SUBNET
其中:
PROJECT_ID
是您為後端服務建立的服務專案名稱。SUBNET
是上一個指令輸出的子網路之一。
- 如要在專案中建立後端
httpbin
服務以進行測試,請使用下列指令:gcloud compute --project=$BACKEND_SERVICE_PROJECT instances create-with-container httpbin \ --machine-type=e2-small --subnet=$SHARED_VPC_SUBNET \ --image-project=cos-cloud --image-family=cos-stable --boot-disk-size=10GB \ --container-image=kennethreitz/httpbin --container-restart-policy=always --tags http-server
- 請按照「建立 API Proxy」一文中的步驟建立及部署 Apigee API Proxy。
- 取得目標服務執行所在虛擬機器 (VM) 的內部 IP 位址。
您將在下一個步驟中使用這個 IP 呼叫測試 API Proxy:
gcloud compute instances list --filter=name=httpbin
- 如要測試設定,請呼叫 Proxy。請使用您在上一個步驟中取得的 VM 內部 IP 位址。以下範例假設您將 Proxy 的 basepath 命名為
/myproxy
。例如:curl -v https://INTERNAL_IP/myproxy
這個 API 呼叫會傳回
Hello, Guest!
。