使用共用虛擬私有雲網路

本頁面適用於 Apigee,但不適用於 Apigee Hybrid

查看 Apigee Edge 說明文件。

本文說明如何設定共用虛擬私有雲 (VPC) 主機,並將個別 Apigee 和後端目標服務專案連結至該主機。共用 VPC 網路可讓您透過 Google Cloud 導入集中管理的網路基礎架構。您可以在主專案中使用單一 VPC 網路,連結多個服務專案的資源。

共用虛擬私有雲的優點

Apigee 執行階段 (在 Google 代管的虛擬私有雲中執行) 會與您擁有的虛擬私有雲對等互連。在這個拓撲中,Apigee 執行階段端點可與您的 VPC 網路通訊,如下圖所示:

共用虛擬私有雲與另一個專案虛擬私有雲中的內部後端

另請參閱 Apigee 架構總覽

在許多情況下,上述拓撲圖過於簡單,因為虛擬私有雲網路是單一 Google Cloud 專案的一部分,許多機構都想遵循 資源層級結構的最佳做法,將基礎架構分割為多個專案。想像一下網路拓撲,其中 Apigee 租用戶專案與虛擬私有雲網路對等互連,但內部後端位於另一個專案的虛擬私有雲網路。如這張圖表所示:

共用虛擬私有雲與另一個專案 VPC 中的內部後端

如果您將 Apigee VPC 對等互連至後端 VPC (如圖所示),則可從 Apigee VPC 網路存取後端,反之亦然,因為網路對等互連是對稱的。不過,由於對等互連不是遞移的,因此 Apigee 租用戶專案只能與 Apigee 虛擬私有雲通訊,詳情請參閱 VPC 對等互連說明文件。如要讓這項功能運作,您可以在 Apigee 虛擬私有雲中部署額外的 Proxy,透過對等連結將流量轉送至後端虛擬私有雲;不過,這種做法會增加額外的營運開銷和維護成本。

共用虛擬私有雲可解決上述問題。共用虛擬私有雲可讓您在同一個機構的其他 Google Cloud 專案中,建立 Apigee 執行階段與後端之間的連線,而不需要額外的網路元件。

使用 Apigee 設定共用虛擬私有雲

本節說明如何將 Apigee VPC 服務專案附加到共用虛擬私有雲主機。主專案中定義的子網路會與服務專案共用。在後續章節中,我們會說明如何為在第二個 VPC 服務專案中部署的後端服務建立第二個子網路。下圖顯示所產生的架構:

共用虛擬私有雲架構總覽

Apigee 提供佈建指令碼,簡化建立所需拓樸結構的程序。請按照本節的步驟下載並使用佈建指令碼,透過共用虛擬私人雲端設定 Apigee。

必要條件

  1. 參閱「共用虛擬私人雲端總覽」一文中所述的概念。請務必瞭解主機專案服務專案的概念。
  2. 建立新的 Google Cloud 專案,以便設定共用虛擬私人雲端。這個專案是主專案。 請參閱「建立及管理專案」。
  3. 請按照「佈建共用虛擬私有雲」一文中的步驟,為共用虛擬私有雲佈建專案。您必須是機構管理員,或是具備適當的管理 Identity and Access Management (IAM) 角色,才能啟用共用虛擬私人雲端的主專案。
  4. 建立第二個 Google Cloud 專案。這是一項「服務」專案。稍後您會將其附加至主專案。

下載指令碼

Apigee 提供佈建指令碼,簡化建立所需拓樸結構的程序。您必須從 GitHub 提取指令碼:

  1. 複製包含指令碼的 GitHub 專案:
    git clone https://github.com/apigee/devrel.git
  2. 前往專案中的以下目錄:
    cd devrel/tools/apigee-x-trial-provision
  3. 設定下列環境變數:
    export HOST_PROJECT=HOST_PROJECT_ID
    export SERVICE_PROJECT=SERVICE_PROJECT_ID

    其中:

    • HOST_PROJECT_ID 是您建立的共用虛擬私有雲主專案 ID,為必要條件之一。
    • SERVICE_PROJECT_ID 是您在先決條件中建立的 Google Cloud 服務專案專案 ID。

設定主專案

  1. 設定下列環境變數:
  2. export NETWORK=YOUR_SHARED_VPC
    export SUBNET=YOUR_SHARED_SUBNET
    export PEERING_CIDR=CIDR_BLOCK

    其中:

    • YOUR_SHARED_VPC 是共用虛擬私有雲網路的名稱。
    • YOUR_SHARED_SUBNET 是共用虛擬私有雲子網路的名稱。
    • CIDR_BLOCK 是 Apigee 虛擬私人雲端的 CIDR 區塊。例如:10.111.0.0/23
  3. 如要設定 Apigee VPC 對等連線和防火牆,請執行以下選項的腳本:
    ./apigee-x-trial-provision.sh \
        -p $HOST_PROJECT --shared-vpc-host-config --peering-cidr $PEERING_CIDR

    指令碼會設定主機專案;輸出內容會類似以下內容,其中 NETWORKSUBNET 代表主機專案下的完整路徑:

    export NETWORK=projects/$HOST_PROJECT/global/networks/$NETWORK
    export SUBNET=projects/$HOST_PROJECT/regions/us-west1/subnetworks/$SUBNET
  4. 匯出在輸出內容中傳回的變數。

設定服務專案

在這個步驟中,您會設定服務專案。指令碼完成後,會在 Apigee 環境中建立及部署範例 API Proxy,供您用於測試佈建作業。

  1. 再次執行 apigee-x-trial-provision.sh 指令碼,為服務專案提供共用網路設定:
    ./apigee-x-trial-provision.sh \
        -p $SERVICE_PROJECT

    這個指令碼會在 Apigee 環境中建立範例 Proxy,並將 curl 指令列印到 STDOUT,您可以呼叫該指令來測試佈建作業。

  2. 呼叫測試 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 代理程式的目標網址。

  1. 在後端服務專案中執行下列指令,查看所有可用的共用子網路:
    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
  2. 建立下列環境變數:
    BACKEND_SERVICE_PROJECT=PROJECT_ID
    SHARED_VPC_SUBNET=SUBNET
    

    其中:

    • PROJECT_ID 是您為後端服務建立的服務專案名稱。
    • SUBNET 是上一個指令輸出的子網路之一。
  3. 如要在專案中建立後端 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
    
  4. 請按照「建立 API Proxy」一文中的步驟建立及部署 Apigee API Proxy。
  5. 取得目標服務執行所在虛擬機器 (VM) 的內部 IP 位址。 您將在下一個步驟中使用這個 IP 呼叫測試 API Proxy:
    gcloud compute instances list --filter=name=httpbin
  6. 如要測試設定,請呼叫 Proxy。請使用您在上一個步驟中取得的 VM 內部 IP 位址。以下範例假設您將 Proxy 的 basepath 命名為 /myproxy。例如:
    curl -v https://INTERNAL_IP/myproxy

    這個 API 呼叫會傳回 Hello, Guest!