使用共用虛擬私有雲網路

本頁內容適用於 Apigee,但不適用於 Apigee Hybrid

查看 Apigee Edge 說明文件。

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

共用虛擬私有雲的優點

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

共用虛擬私有雲,後端位於另一個專案的虛擬私有雲中

另請參閱 Apigee 架構總覽

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

共用虛擬私有雲,後端位於另一個專案的虛擬私有雲中

如圖所示,如果您將 Apigee 虛擬私有雲與後端虛擬私有雲建立對等互連,則可從 Apigee 虛擬私有雲網路連線至後端,反之亦然,因為網路對等互連是對稱的。不過,Apigee 租戶專案只能與 Apigee VPC 通訊,因為對等互連不是遞移性的,如虛擬私有雲對等互連說明文件所述。 如要讓這項功能正常運作,您可以在 Apigee 虛擬私有雲中部署其他 Proxy,透過對等互連連結將流量轉送至後端虛擬私有雲;不過,這種做法會增加額外的營運負擔和維護成本。

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

透過 Apigee 設定共用虛擬私有雲

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

共用虛擬私有雲架構總覽

Apigee 提供佈建指令碼,可簡化必要拓撲的建立作業。請按照本節的步驟下載及使用佈建指令碼,透過共用虛擬私有雲設定 Apigee。

必要條件

  1. 請先瞭解共用虛擬私有雲端總覽中討論的概念。請務必瞭解主專案服務專案的概念。
  2. 建立新的 Google Cloud 專案,並設定共用虛擬私有雲。這個專案是主專案。 請參閱「建立及管理專案」。
  3. 按照「佈建共用虛擬私有雲」一文中的步驟,為共用虛擬私有雲佈建專案。您必須是機構管理員,或獲授適當的管理身分與存取權管理 (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 是您建立的共用 VPC 主專案 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 虛擬私有雲對等互連和防火牆,請使用下列選項執行指令碼:
    ./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,並列印可呼叫 STDOUT 的 curl 指令,方便您測試佈建作業。

  2. 呼叫測試 API Proxy。例如:
    curl -v https://10-111-111-111.nip.io/hello-world

為後端服務設定其他服務專案

最佳做法是將 Google Cloud 基礎架構劃分為多個專案。請參閱「 決定 Google Cloud 登陸區的資源階層」。本節說明如何在個別服務專案中部署後端服務,並將其附加至共用虛擬私有雲主機。Apigee 服務專案和後端服務專案都已附加至共用虛擬私有雲端主機,因此 Apigee 可以將後端服務做為 API 代理目標。

先決條件

如要完成這些步驟,我們假設您已設定共用虛擬私有雲,並與後端服務專案共用,如「設定共用虛擬私有雲」一文所述。

設定服務專案

在本節中,您將測試另一個共用虛擬私有雲子網路中的後端服務、在主專案中建立第二個子網路,並使用其私人的 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 基礎路徑命名為 /myproxy。例如:
    curl -v https://INTERNAL_IP/myproxy

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