使用虛擬私有雲對等互連佈建評估機構

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

查看 Apigee Edge 說明文件。

步驟摘要

本文說明如何透過指令列安裝及設定 Apigee 評估機構 (或評估機構)。評估機構的效期為 60 天,且可能設有其他限制。另請參閱 比較評估和付費機構

佈建步驟如下:

步驟 1:定義環境變數

設定 gcloud 並定義環境變數,以供後續步驟使用:

  1. 請務必完成「必要條件」一節列出的規定。
  2. 您必須安裝 gcloud CLI。如需安裝,請參閱「安裝 gcloud CLI」。
  3. 如「初始化 gcloud CLI」一節所述,初始化 gcloud CLI。如果 CLI 已初始化,請確認您在「必要條件」中建立的 Google Cloud 專案是 gcloud 的預設專案。
  4. 定義下列環境變數:
    AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    ANALYTICS_REGION="YOUR_ANALYTICS_REGION"

    其中:

    • AUTH 會使用不記名權杖定義 Authentication 標頭。呼叫 Apigee API 時,您會使用這個標頭。請注意,權杖會在一段時間後過期,屆時您只要使用相同指令重新產生即可。詳情請參閱 print-access-token 指令的參考頁面。
    • PROJECT_ID 是您在必要條件中建立的 Cloud 專案 ID
    • RUNTIME_LOCATION 是 Apigee 執行個體的實際所在位置。如需可用執行階段位置清單,請參閱 Apigee 位置

    • ANALYTICS_REGION 是 Apigee 儲存分析資料的實際位置。如需可用的 Apigee API Analytics 區域清單,請參閱 Apigee 位置

      RUNTIME_LOCATIONANALYTICS_REGION 可以是相同區域,但並非必要。不過,如果兩者相同,可能會提升成效。

  5. (選用) 透過回顯剛才設定的值,檢查您的工作。請注意,如要在指令中使用變數,請在變數名稱前加上美元符號 ($)。
    echo $AUTH
    echo $PROJECT_ID
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    

    echo 指令的回應內容應如下所示:

    Authorization: Bearer ya29.a123456678940B63hPSAMPLEsampleKKYVsample0f3pWDWZDuH2-hENkNa
    TvgZ1PD977TMvv6edBQPJezdHw040880Ol_LoD5ZDkt-i-knizia_KhA9L20sSvztL81-SAMPLE42ELPMASk2_
    1CxN
    my-cloud-project
    us-west1
    us-west1
    

步驟 2:啟用 API

  1. Apigee 需要啟用多個 Google Cloud API。執行 services enable 指令來啟用這些功能:

    gcloud services enable apigee.googleapis.com \
      servicenetworking.googleapis.com compute.googleapis.com \
      cloudkms.googleapis.com --project=$PROJECT_ID
  2. (選用) 如要檢查作業,請使用 services list 指令顯示所有已啟用的 API:

    gcloud services list

    回應會顯示所有已啟用的服務,包括您剛啟用的 API (Apigee、Service Networking、Cloud KMS 和 Compute Engine)。

步驟 3:設定服務網路

  1. 建立下列環境變數:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    其中:

    • RANGE_NAME 是您要建立的 IP 位址範圍名稱。您可以隨意命名範圍。例如:google-svcs
    • NETWORK_NAME 是要預留位址的網路資源名稱。Google 會為每個新專案建立預設網路 (名為 default),因此您可以直接使用該網路。不過,Google 不建議將預設網路用於測試以外的任何用途。
  2. 建立 CIDR 長度為 /22 的 IP 範圍:
    gcloud compute addresses create $RANGE_NAME \
      --global \
      --prefix-length=22 \
      --description="Peering range for Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    其中 --addresses 可讓您選擇為 /22 的前置字元長度指定一或多個位址 IP。例如,如要分配 CIDR 區塊 192.168.0.0/22,請將位址指定為 192.168.0.0,並將前置字串長度指定為 22。另請參閱建立 IP 配置

    如果您未提供 --addresses 參數,gcloud 會為您選取可用的位址範圍。

    成功後,gcloud 會傳回下列內容:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].

    建立 IP 位址範圍後,這些位址就會與專案建立關聯,直到您釋出為止。

  3. 建立第二個 IP 範圍,CIDR 長度為 /28。Apigee 會使用這個範圍進行疑難排解,因此無法自訂或變更。
    gcloud compute addresses create google-managed-services-support-1 \
      --global \
      --prefix-length=28 \
      --description="Peering range for supporting Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    其中 --addresses 可讓您選擇為 /28 的前置字元長度指定一或多個位址 IP。例如,如要分配 CIDR 區塊 192.168.0.0/28,請將位址指定為 192.168.0.0,並將前置字串長度指定為 28。另請參閱建立 IP 配置

    如果您未提供 --addresses 參數,gcloud 會為您選取可用的位址範圍。

  4. 使用下列指令將服務連線至網路:
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK_NAME \
      --ranges=$RANGE_NAME,google-managed-services-support-1 \
      --project=$PROJECT_ID

    這項作業可能需要幾分鐘才能完成。成功後,gcloud 會傳回下列內容:

    Operation "operations/OPERATION_ID" finished successfully.

    其中 OPERATION_IDLRO (長時間執行的作業) 的 UUID。

    Apigee 會在您的網路與 Google 服務之間建立連線;具體來說,Apigee 會透過 VPC 對等互連,將您的專案連線至 Service Networking API。Apigee 也會將 IP 位址與您的專案建立關聯。

步驟 4:建立機構

機構是 Apigee 中的頂層容器,其中包含所有 API Proxy 和相關資源。詳情請參閱「瞭解機構」。

  1. 使用 gcloud alpha apigee organizations 指令建立新的評估機構:
    gcloud alpha apigee organizations provision \
      --runtime-location=$RUNTIME_LOCATION \
      --analytics-region=$ANALYTICS_REGION \
      --authorized-network=$NETWORK_NAME \
      --project=$PROJECT_ID

    其中 --authorized-network 是自訂對等互連網路的名稱。例如:default

  2. 執行 provision 指令時,Google 會啟動 LRO 來建立評估機構。這項作業最多需要 40 分鐘才能完成。在這段期間,gcloud 會顯示下列內容:

    Provisioning organization...

    建立評估機構和相關聯的執行階段例項後,gcloud 會回應下列訊息:

    Provisioning organization...done.
  3. 如果您執行下列指令:

    gcloud alpha apigee operations list --organization=$PROJECT_ID

    您應該會看到所有 UUID 都處於 FINISHED 狀態。例如:

    UUID                                  ORGANIZATION  STATE
    00bab06f-c60c-41a5-4242-7SAMPLE7f     my-org        FINISHED
    429790a7-3151-4642-4343-7SAMPLE7f     my-org        FINISHED
    d00a92a9-9b83-4642-4343-7SAMPLE7f     my-org        FINISHED
    f48a00ff-7daa-4c4a-4444-7SAMPLE7f     my-org        FINISHED

步驟 5:設定轉送

決定要允許外部存取還是僅限內部存取:

存取權類型 設定和部署程序說明
內部

只允許內部存取 API Proxy。

您必須在網路中建立新的 VM,並連線至該 VM。您可以在新的 VM 中,傳送要求至 Apigee API Proxy。

外部

允許外部存取 API Proxy。

使用 Private Service Connect (PSC) 啟用服務供應商 (Apigee) 與服務消費者 (對等互連的虛擬私有雲專案,和/或您控管的一或多個其他 Cloud 專案) 之間的私人連線。使用這種方法時,要求會通過全域外部負載平衡器,傳送至單一連結點 (稱為「服務連結」)。完成這項設定後,您就能從任何啟用網路的機器傳送 Apigee API Proxy 要求。

下方的操作說明會以分頁呈現每種轉送方式。

內部轉送

如果您使用指令列設定僅供內部存取的 API Proxy,則不必執行這個步驟。您可以跳至「步驟 6:呼叫範例 API Proxy」,向 API Proxy 傳送要求。

外部轉送

本節說明如何使用 Private Service Connect (PSC) 設定外部路由,允許 Apigee 與您控管的虛擬私有雲進行通訊。您必須先完成這項操作,才能從外部用戶端將要求傳送至 Apigee 執行階段例項。

外部設定步驟如下:

步驟 5a:建立網路端點群組 (NEG)
步驟 5b:設定負載平衡器

以下各節將說明這些步驟。

步驟 5a:建立網路端點群組 (NEG)

  1. 取得 Apigee 執行個體服務連結
    curl -i -X GET -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    在下列輸出範例中,serviceAttachment 值會以粗體顯示:

    {
      "instances": [
        {
          "name": "eval-instance",
          "location": "us-west1",
          "host": "10.72.100.2",
          "port": "443",
          "createdAt": "1657832463500",
          "lastModifiedAt": "1657833920670",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-8-0-apigee-18",
          "ipRange": "10.74.100.0/28,10.74.100.16/28",
          "consumerAcceptList": [
            "apigee-eval-test"
          ],
          "serviceAttachment": "projects/s8da1b0111eb33765-tp/regions/us-west1/serviceAttachments/apigee-us-west1-icza"
        }
      ]
    }
  2. 建立 Private Service Connect 網路端點群組 (NEG),指向您在上一個步驟中從執行個體回應主體取得的服務附件。

    gcloud compute network-endpoint-groups create NEG_NAME \
      --network-endpoint-type=private-service-connect \
      --psc-target-service=TARGET_SERVICE \
      --region=$RUNTIME_LOCATION \
      --network=$NETWORK_NAME \
      --subnet=SUBNET_NAME \
      --project=$PROJECT_ID
    

    更改下列內容:

    • NEG_NAME:網路端點群組的名稱。
    • TARGET_SERVICE:要連線的服務附件。例如:projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
    • SUBNET_NAME:用於與生產者建立私有連線的子網路名稱。 子網路大小可以很小:PSC NEG 只需要子網路中的一個 IP。如果是 Apigee,每個區域只需要一個 PSC NEG。VM 或其他實體可以共用及使用子網路。如果未指定子網路,網路端點可能會屬於建立網路端點群組的區域中任何子網路。

步驟 5b:設定負載平衡器

設定全域外部 HTTP(S) 負載平衡器 (負載平衡配置設為 EXTERNAL_MANAGED)。

雖然 Private Service Connect NEG 是區域性的,但這項設定中的所有其他負載平衡元件都是全域性的。

  1. 為負載平衡器保留全域外部 IPv4 位址。
    gcloud compute addresses create ADDRESS_NAME \
      --ip-version=IPV4 --global --project=$PROJECT_ID

    ADDRESS_NAME 替換為 IP 位址資源的名稱。

    執行下列指令,查看保留的 IP 位址:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID
  2. 為 NEG 建立後端服務。
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --global --project=$PROJECT_ID
  3. BACKEND_SERVICE_NAME 改為後端服務的名稱。

  4. 將 NEG 新增至後端服務:
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=$RUNTIME_LOCATION \
      --global --project=$PROJECT_ID

    更改下列內容:

    • BACKEND_SERVICE_NAME:後端服務的名稱。
    • NEG_NAME:網路端點群組的名稱。
  5. 為負載平衡器建立網址對應。

    網址對應必須參照預設後端服務。將您剛建立的後端服務設為預設服務。

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=DEFAULT_BACKEND_SERVICE_NAME \
      --global --project=$PROJECT_ID

    更改下列內容:

    • URL_MAP_NAME:網址對應表名稱。
    • DEFAULT_BACKEND_SERVICE_NAME:負載平衡器的預設後端服務名稱。 如果沒有任何主機規則與要求的主機名稱相符,系統就會使用預設規則。
  6. 為 HTTPS 目標 Proxy 建立 SSL 憑證。

    如要建立 HTTPS 負載平衡器,您必須具備SSL 憑證資源,才能在 HTTPS 目標 Proxy 中使用。您可以透過Google 代管的 SSL 憑證自行管理的 SSL 憑證建立 SSL 憑證資源。

    使用這個指令建立 Google 代管的 SSL 憑證資源:

    gcloud compute ssl-certificates create CERTIFICATE \
      --domains DOMAIN --project=$PROJECT_ID

    更改下列內容:

    • CERTIFICATE:憑證名稱。
    • DOMAIN:用於外部負載平衡器的網域名稱。

    如要建立自行管理的 SSL 憑證,您需要本機私密金鑰檔案和本機憑證檔案。如需建立這些檔案,請參閱「使用自行管理的安全資料傳輸層 (SSL) 憑證」。

    gcloud compute ssl-certificates create CERTIFICATE \
      --certificate LB_CERT \
      --private-key LB_PRIVATE_KEY --project=$PROJECT_ID

    更改下列內容:

    • CERTIFICATE:憑證名稱。
    • LB_CERT:PEM 格式的憑證檔案路徑 (適用於自行管理的憑證)。
    • LB_PRIVATE_KEY:PEM 格式的私密金鑰檔案路徑,適用於您自行管理的憑證。
  7. 佈建憑證最多可能需要一小時。如要檢查佈建狀態,請執行下列指令:

    gcloud compute ssl-certificates describe CERTIFICATE \
       --global \
       --format="get(name,managed.status, managed.Status)"
  8. 將網域新增至為您建立的 Apigee 環境群組。環境群組的名稱為 eval-group
    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group" \
      -H "$AUTH" \
      -X PATCH \
      -H "Content-Type:application/json" \
      -d '{
        "hostnames":["'"DOMAIN"'"]
      }'
  9. 檢查環境群組作業的狀態:
    curl -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group/attachments"
    
  10. 使用 SSL 憑證資源建立目標 HTTPS Proxy。

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE --project=$PROJECT_ID

    更改下列內容:

    • PROXY_NAME:目標 HTTPS Proxy 的名稱。
    • URL_MAP_NAME:網址對應表名稱。
    • CERTIFICATE:憑證資源的名稱。
  11. 建立轉送規則。
    gcloud compute forwarding-rules create FWD_RULE \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=ADDRESS_NAME \
      --target-https-proxy=PROXY_NAME \
      --ports=443 \
      --global --project=$PROJECT_ID

    更改下列內容:

    • FWD_RULE:轉送規則的名稱。
    • ADDRESS_NAME:您預留用於轉送規則的 IP 位址資源。
    • PROXY_NAME:目標 HTTPS Proxy 的名稱。

Apigee 佈建完成。

步驟 6:呼叫範例 API Proxy

佈建期間,系統會為您建立並部署名為 hello-world 的 API Proxy。在這個步驟中,您將呼叫 Proxy,測試新的評估機構。

使用內部路徑呼叫 Proxy

如果您在步驟 5 中選擇內部路徑選項,請按照「呼叫僅限內部存取的 API Proxy」一節中的步驟操作。

使用外部路徑呼叫 Proxy

如果您在步驟 5 中選擇外部轉送選項,請按照本節中的步驟操作。

  1. 為網域設定 DNS 項目。以下提供兩種做法:
    • 在註冊機構中,建立指向網域的 A 記錄。舉例來說,如果您的網域是 sales.example.com,IP 位址為 10.23.0.2,請將 sales.example.com 的記錄指向 10.23.0.2 位址。

      執行下列指令,查看保留的 IP 位址:

      gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --global --project=$PROJECT_ID
    • 使用 Google Cloud DNS 將網址對應至 IP 位址。
  2. 確認已部署 hello-world Proxy:
    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/eval/apis/hello-world/revisions/1/deployments"
  3. 呼叫 API Proxy:

    從任何啟用網路的電腦執行下列指令,將要求傳送至 API Proxy:

    curl -i -H "Host: DOMAIN" \
      https://DOMAIN/hello-world

    其中 DOMAIN 是您放入憑證並新增至環境群組的網域,如「步驟 5:設定轉送」所述。如有需要,您可以使用這個 API 從環境群組取得 DOMAIN 值:

    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"

    成功後,範例 API 代理伺服器會傳回下列回應:

    Hello, Guest!

    疑難排解訣竅:

    如果發生信號交換錯誤,請檢查 SSL 憑證的狀態。如要瞭解如何排解自行管理和 Google 代管憑證的問題,請參閱「排解 SSL 憑證問題」。

    請確認註冊網域的 A 記錄指向步驟 5 中建立的全域外部 IPv4 位址。執行下列指令,查看保留的 IP 位址:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID

    如果無法解決網域設定問題,請嘗試使用下列指令呼叫 Proxy:

    curl  -H Host:DOMAIN --resolve \
      DOMAIN:443:EXTERNAL_IP_ADDRESS  \
      https://DOMAIN:443/hello-world -k

後續步驟:如要進一步瞭解如何建立及部署 API Proxy,請參閱 建立第一個 API Proxy 總覽